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.