Excel: формулы MATCH () без подстановочных знаков

2

Я сейчас пользуюсь MATCH() в столбцах формул Excel 2016, таких как:

= MATCH( [@[ITEM_CODE]], IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]], 0 )

Результат по сути является внешним ключом. Используется в других столбцах с INDEX() или же OFFSET() выражения, чтобы связать текущую строку с соответствующей строкой в ​​другой таблице.

Некоторые значения поиска содержат знаки препинания, включая специальные символы подстановки *, ?, а также ~, Это вызывает непреднамеренное соответствие. Настоящим примером является код товара *XA1, который непреднамеренно совпадает с кодом товара 1SC0021REXA1 в другой таблице.

Мое текущее решение для примера выше:

= MATCH(
SUBSTITUTE( SUBSTITUTE( SUBSTITUTE( [@[ITEM_CODE]], "~", "~~" ), "*", "~*" ), "?", "~?" ),
IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]],
0
)

Что мне не нравится? Это легко забыть при написании INDEX(MATCH()) выражения, легко ошибиться (порядок вопросов), и просто неуклюжий и трудно читаемый. Но я не нашел не подстановочный знак MATCH() альтернативный или даже способ упростить выражение подстановки, не создавая при этом большей сложности, например, написание пользовательской функции в VBA.

MetaEd
источник

Ответы:

2

Вы можете использовать агрегат:

=AGGREGATE(15,6,(ROW(IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]])-MIN(ROW(IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]]))+1)/(IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]]=[@[ITEM_CODE]]),1)

enter image description here

Или вы можете использовать эту версию массива MATCH:

=MATCH(TRUE,[ITEM_CODE]=IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]],0)

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

enter image description here

Это то же самое, что и второй, но не требует использования CSE:

=MATCH(TRUE,INDEX([ITEM_CODE]=IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]],),0)
Scott Craner
источник
В третьем выражении [ITEM_CODE]=IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]] выглядит для меня как формула массива. Но это не требует CSE?
MetaEd
Ни первое, ни третье не требуют CSE, хотя они являются формулами типа массива. Они являются родной формулой массива. Есть несколько из них; SUMPRODUCT, IRR, ... и несколько других.
Scott Craner
Вы знаете, где в документах Microsoft я могу узнать, какие функции создают такого рода контекст формулы массива?
MetaEd
Нет, мне не жаль. Я изучил их органично.
Scott Craner