Использование операторов IF и ISBLANK для определения диапазона ячеек, если в какой-либо из них есть информация

10

У меня есть формула, где я проверяю диапазон ячеек, являются ли они пустыми или нет.

Если все они не заполнены, я хочу вернуть еще один бланк.

Если любая из ячеек в диапазоне не пуста, я хочу вернуть значение Major Milestone Due.

Вот формула, которую я в настоящее время имею:

=IF(ISBLANK(BM2:BQ2),"","Major Milestone Due")

Он возвращает все как Major Milestone Due, даже если есть определенные диапазоны строк со всеми пустыми ячейками.

вереск
источник

Ответы:

16

COUNTAдаст количество ячеек в диапазоне, которые не являются пустыми .

Поэтому постарайтесь ...

 =IF(NOT(COUNTA(BM2:BQ2)),"","Major Milestone Due")
jcfollower
источник
Основная формула: NOT (COUNTA (BM2: BQ2)) применяется с более логичным оператором, например: AND (COUNTA (BN2), NOT (COUNTA (BM2: BQ2)))
Рак Кахр
9

Ваша формула верна, если она введена как формула массива .

Он isblankне работает для массива, если вы не введете его как формулу массива с помощью ctrl+ shift+ enter. Это будет выглядеть при наличии фигурных скобок:

{=IF(ISBLANK(BM2:BQ2),"","Major Milestone Due")}

Кроме того, если - Counta сделает это без проблем, а также -

=IF(COUNTA(BM2:BQ2)=0,"","Major Milestone Due")

Raystafarian
источник
Формула массива не совсем корректна. Эта версия перейдет только TRUEк тому, FALSEесли первая ячейка в диапазоне содержит значение. Чтобы правильно проверить все ячейки в диапазоне, ANDнеобходимо добавить -{=IF(AND(ISBLANK(BM2:BQ2)),"","Major Milestone Due")}
Маркус Хьюз
@MarcusHughes с чего бы это? Это формула массива и работает на весь массив
Raystafarian
Я не знаю, почему именно, но я проверил (Excel 2010), и он не работает только с ISBLANK. Попробуйте ввести эту формулу, оставьте первую ячейку в диапазоне незаполненной, затем введите данные в более позднюю ячейку в диапазоне .... ISBLANKУсловие все равно вернется TRUE. Только если вы введете данные в первую ячейку, они вернутся FALSEправильно. Теперь попробуйте добавить AND. Если какая-либо ячейка в диапазоне получает данные, добавленные к ней, она вернется FALSEкак следует. (Я предполагаю, что это не просто какая-то странная случайность с 2010 годом.)
Маркус Хьюз
2

Важная вещь, которую следует учитывать, - это ваше определение «пусто». Исходя из того факта, что вы использовали формулировку «Я хочу вернуть еще один пробел», может показаться, что вы определяете «пробел» как ячейки, которые выглядят пустыми, но которые на самом деле могут содержать формулу, которая выводит ""и, следовательно, не является пустой ,

COUNTAИ ISBLANKметоды не будут работать , если вы хотите , чтобы справиться с такого рода клеток , как заготовки, так как эти две формулы выглядят по - настоящему пустых клеток. Для обработки формул, которые выводятся "", у вас есть два варианта:


  • Если вы всегда знаете размер вашего диапазона, вы можете использовать одно из следующих:

    =IF( COUNTBLANK(BM2:BQ2)=5, "", "Major Milestone Due")
    =IF( COUNTIF(BM2:BQ2,"")=5, "", "Major Milestone Due")

    где 5 - размер вашего диапазона. Этот метод не работает так же хорошо с динамическими диапазонами.


  • Несколько более сложная формула (по крайней мере, более сложная для объяснения!) Использует SUMPRODUCT:

    =IF( SUMPRODUCT(--(BM2:BQ2<>""))=0, "", "Major Milestone Due")


(Обратите внимание, что COUNTIF(BM2:BQ2,"<>")имеет ту же проблему, что и COUNTA.)

Маркус Хьюз
источник
-1

Я пришел на эту страницу в поисках ответа на почти идентичный вопрос.

Когда я увидел, что COUNTAупомянуто, я почти сразу понял, что делать. В немного ином контексте у меня есть диапазон столбцов слева от столбца, который я хочу сказать, not startedесли все ячейки в одной строке пустые (пустые).

Следующая формула работает для меня.

=IF(COUNTA(P3:U3)=0,"Not Started"...)

Многоточие указывает, что IFв моей формуле есть несколько дополнительных функций, которые выполняют дополнительные проверки диапазона, если заполнена одна или несколько.

Дэвид А. Грей
источник
Добро пожаловать в Супер пользователя. Заметил, что ваш ответ привлек вниз голосов. Вероятная причина в том, что мы стараемся избегать дублирования. Каждый ответ предназначен для предоставления решения, которое существенно отличается от того, что уже было внесено. По сути, это дублирует вторую часть ответа Райстафариана.
fixer1234
Мой ответ должен был быть представлен как комментарий.
Дэвид А. Грей