Вопрос: Excel: получение FALSE, когда значение находится в массиве строк


У меня есть таблица, где я хочу извлекать данные на основе ярлыков строк и столбцов. Поэтому я использую INDEX MATCH с массивами в функции MATCH, но я продолжаю получать # N / A, потому что b1: d1 = d1 - FALSE. Почему это?

    1 2 3  
Jan x x o  
Feb x x x  
Mar x x x  

Значение, которое я хочу, находится в ячейке с «o», поэтому я использую
ИНДЕКС (B2: D4, MATCH (1, (B2: D2 = B2) * (B2: D2 = D2), 0))


0
2018-04-20 14:29


Источник


покажите данные теста, ожидаемый результат и фактическую формулу, которую вы используете. Поместите их в исходное сообщение, используя редактировать - Scott Craner


Ответы:


Чтобы вернуть o в ваш пример выше, вам понадобится

=INDEX(B2:D4,MATCH("Jan",A2:A4,0),MATCH(3,B1:D1,0))

1
2018-04-20 15:22





Синтаксис для INDEX() является INDEX(array, row_num,[column_num]), Вы указываете только row_num с MATCH() в вашей формуле.

@ Формула RET даст вам ячейку, которую вы ищете, потому что она определяет как row_num а также column_num,

Excel имеет полезную функцию для устранения этих проблем. Если вы выберете ячейку с помощью своей формулы и затем щелкните внутри списка параметров одной из функций в вашей формуле, вы увидите раскрывающееся меню, показывающее, какие параметры должны быть:

enter image description here

Затем, нажав один из параметров в раскрывающемся списке, вы увидите, что Excel считает, что этот параметр находится в вашей формуле. Просто это может помочь вам найти недостающие запятые и круглые скобки, но наиболее полезной является функция, когда вы нажимаете клавишу F9 - это делает Excel оценивать выделенную часть вашей формулы:

enter image description here

Вышеприведенный снимок экрана показывает, что (B2:D2=B2)*(B2:D2=D2) оценивает массив {0,0,0}, поэтому MATCH() не может найти 1 там.

Если вы выделите две части продукта отдельно, вы обнаружите, что (B2:D2=B2) оценивает {True,True,False} а также (B2:D2=D2)оценивает {False,False,True}, Арифметические операции с массивами преобразуются True а также False до 1 и 0 и выполняет эквивалент логического AND(), Вот почему выражение оценивается в массив из 0 - Нет True*True что даст 1.

Заметка: Если вы используете функцию F9, обязательно введите UNDO (CTRL-Z) после этого. В противном случае, если вы введете Вернуть или tab из формулы, Excel сохранит измененную формулу в этой ячейке. Я думаю, они всегда любят раздавать что-то плохое с хорошим.

Надеюсь, это поможет вам и удачи.


1
2018-04-20 22:32