2016-12-06 6 views
1

Очень простой вопрос. У меня четыре столбца. Если значение в столбце 1 равно False ИЛИ 0 ИЛИ N/A, тогда я хочу проверить столбец 2. Если значение в столбце 2 равно False ИЛИ 0 ИЛИ N/A, тогда я хочу проверить столбец 3. Если значение в столбец 3 является ложной или 0 или N/A, то я хочу напечатать значение в колонке 4. формула, что у меня выглядит следующим образом:Проверка значений с помощью оператора IF

=IF(NOT(OR(ISNA(BJ2),BJ2=FALSE,BJ2=0)),BJ2, 
IF(NOT(OR(ISNA(BK2),BK2=FALSE,BK2=0)),BK2, 
IF(NOT(OR(ISNA(BL2),BL2=FALSE,BL2=0)),BL2,BM2))) 

так BJ находится столбец 1, БК колонка 2, колонка 3 BL , Колонка BM 4. Формула работает для ошибок False и 0, но когда я добавляю часть ISNA, она ломается. На самом деле он просто ничего не делает.

Данные в столбцах - это строки, FALSE (не строка) или # N/A в качестве значения, недоступного для ошибки. Я проверил одно из своих значений N/A с помощью ISNA, и результат был True. Поэтому утверждение OR должно возвращаться как ИСТИНА, затем проходить через отрицание и быть ложным. Поэтому оператор If должен перейти к следующему столбцу.

Что вызывает это не для чтения?

ответ

1

Проблема заключается в том, что такое выражение, как, скажем, BJ2=FALSE или BJ2=0 будет вычисляться N/A если BJ2 случается N/A. Итак, если что-нибудь из этого произойдет, функция OR ответит N/A, потому что OR() оценивает все свои аргументы! (не знаю почему).