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.

Ответы:


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)

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

Ни первое, ни третье не требуют CSE, хотя они являются формулами типа массива. Они являются родной формулой массива. Есть несколько из них; SUMPRODUCT, IRR, ... и несколько других.
Scott Craner

Вы знаете, где в документах Microsoft я могу узнать, какие функции создают такого рода контекст формулы массива?
MetaEd

Нет, мне не жаль. Я изучил их органично.
Scott Craner
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.