Синтаксис для INDEX() : INDEX(array, row_num,[column_num]) . Вы указываете только row_num с помощью MATCH() в своей формуле.
Формула @ RET даст вам искомую ячейку, потому что она определяет и row_num и column_num .
В Excel есть полезная функция для устранения подобных проблем. Если вы выберете ячейку с вашей формулой, а затем щелкните внутри списка параметров одной из функций в вашей формуле, вы увидите раскрывающийся список, показывающий, какими должны быть параметры:

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

На приведенном выше снимке экрана показано, что (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) после этого. В противном случае, если вы введете « Return» или «tab» из формулы, Excel сохранит измененную формулу в этой ячейке. Я думаю, что они всегда любят раздавать плохое с хорошим.
Я надеюсь, что это поможет вам, и удачи.