Нахождение индекса соответствующего шаблона в Excel - PullRequest
1 голос
/ 25 апреля 2019

Приведенный лист выглядит так:

Sheet 1

Product Name
-----------------
Fancy Shoes
Plain Shoes
Comfy Slippers
Nice Loafers
Pressed Shirt
Tee Shirt
Collared Button-Up

и лист подстановочных знаков:

Sheet 2

Product Wildcard   |   Product Category
---------------------------------------
*Shirt             |   Shirt
*Button-Up         |   Shirt
*Shoes             |   Shoes
*Loafers           |   Shoes
*Slippers          |   Shoes

Я надеюсь произвести следующее:

Product Name       |   Product Category
----------------------------------------
Fancy Shoes        |   Shoes
Plain Shoes        |   Shoes
Comfy Slippers     |   Shoes
Nice Loafers       |   Shoes
Pressed Shirt      |   Shirt
Tee Shirt          |   Shirt
Collared Button-Up |   Shirt

Другими словами, могу ли я найти категорию для продукта на листе 1, который соответствует подстановочному знаку продукта на листе 2?

Я пытался использовать VLOOKUP('Sheet 1'!A2, 'Sheet 2'!A2:B6, 2, FALSE) и MATCH('Sheet 1'!A2, 'Sheet 2'!A2:A6, 0).Оба дают мне # N / A.Я подозреваю, что эти функции ожидают, что текст поиска будет единственной вещью, которая может быть подстановочными символами, и мои подстановочные знаки продукта воспринимаются буквально и не интерпретируются как подстановочные знаки.

Мне интересно, есть ли другой способ сделать это с помощью встроенного-в функции Excel, или если мне нужно написать какой-нибудь VBA?

Заранее спасибо за помощь в этом!

Ответы [ 3 ]

1 голос
/ 25 апреля 2019

Ниже приведена формула массива (вводится с помощью Ctrl + Shift + Ввод ):

=INDEX(Sheet2!$B$1:$B$5,MATCH(1,MATCH(Sheet2!$A$1:$A$5,Sheet1!A1,0),0))

enter image description here

Вы можете использовать «Формулы»> «Оценить формулу» в ячейке, содержащей формулу, чтобы увидеть, как она работает шаг за шагом.

0 голосов
/ 25 апреля 2019

Если есть только два слова в каждой ячейке и слово, которое определяет категорию ( Например: обувь, тапочки, рубашка и т. д.) всегда секунда, вы можете использовать следующие INDEX/MATCH, чтобы получить категорию:

=INDEX('Sheet 2'!B$2:B$6,MATCH(MID('Sheet 1'!A2,FIND(" ",'Sheet 1'!A2)+1,LEN('Sheet 1'!A2)-FIND(" ",'Sheet 1'!A2)),'Sheet 2'!A$2:A$6,0))
0 голосов
/ 25 апреля 2019

Исходя из моих показаний здесь (особенно примечание внизу), это кажется невозможным, если использовать только VLOOKUP.Если во всех подстановочных знаках нет пробелов, вы можете сделать это следующим образом: (не явная формула, просто список алгоритмических шагов)

  • Перевернуть строку, с что-то вродеthis (это формула массива, поэтому для его использования требуется Ctrl + Shift + Enter)
  • Используйте FIND, чтобы получить местоположение первого пробела в обращенной версии, вычитая его изLEN строки дает вам количество строки перед битом подстановочного знака.
  • Используйте RIGHT, чтобы обрезать строку до подстановочного знака, и используйте это с VLOOKUP.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...