Я сейчас пользуюсь 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.


[ITEM_CODE]=IM_PURCH_VENDOR_SUBLIST[[#All],[ITEM-CODE]]выглядит для меня как формула массива. Но это не требует CSE?