Я застрял с Excel. У меня есть список текста с неизвестным номером удостоверения личности:

'C7, C1, C9, C13

А в другой вкладке есть список:

List equivalent

Я хочу вернуть эквивалент 'C7, C1, C9, C13 с соответствующим значением. Подобный результат Это даст: 'QKUUOEUY, GDXVXIYL, CUPPIXHF, CKMUAFGG

Как я могу это сделать? Сначала мне нужно найти, сколько ID у меня в списке, используя =NBCAR(A2)-NBCAR(SUBSTITUE(A2;CAR(44);"")) + 1, Я также смог найти один эквивалент, используя XLOOKUP, но мне нужно взять каждый идентификатор один за другим, чтобы вернуть значение, и я понятия не имею, как это сделать.

Спасибо вам за помощь

0
AlexDana 30 Апр 2020 в 23:02

2 ответа

Вот похожий случай. Я использую Excel 365. Список через запятую в A1 , а таблица поиска - в столбцах B и C :

enter image description here

В D1 введите:

=TEXTJOIN(",",TRUE,VLOOKUP(TRIM(MID(SUBSTITUTE($A1,",",REPT(" ",999)),SEQUENCE(1+LEN(A1)-LEN(SUBSTITUTE(A1,",","")))*999-998,999)),B1:C13,2,FALSE))

enter image description here

< Сильный > Примечание :

Ядро формулы TRIM(MID(SUBSTITUTE($A1,",",REPT(" ",999)),SEQUENCE(1+LEN(A1)-LEN(SUBSTITUTE(A1,",","")))*999-998,999)) анализирует список, разделенный запятыми, и производит выделение.

VLOOKUP() извлекает элементы данных из столбца C .

TEXTJOIN() объединяет список элементов C .

0
Gary's Student 30 Апр 2020 в 21:37

Если у вас есть функции TEXTJOIN и FILTERXML, вы можете использовать:

=TEXTJOIN(", ",,FILTERXML("<t><s>"&TEXTJOIN("</s><s>",TRUE,$A$1:$B$13)&"</s></t>",
"//s[.='" & TEXTJOIN("' or .='",TRUE,FILTERXML("<t><s>" & SUBSTITUTE(C1,",","</s><s>") & "</s></t>","//s"))& "']/following::*[1]"))

< Сильный > Алгоритм

  • Создайте XML из LookupTable, используя TEXTJOIN для разделения каждого узла < UL>
  • Узлы будут создаваться парами, такими как C1, Value
  • Создайте еще один XML-код, разделяющий значения поиска на отдельные узлы и объединяющий их вместе, чтобы создать аргумент xPath, который выглядит следующим образом:
  • enter image description here

    • Этот аргумент говорит, что нужно найти узел, содержащий любой из токенов, и вернуть следующий следующий узел, который будет значением.

    • Примечание . В формуле учитывается регистр. Если вам нужно, чтобы он не учитывал регистр, вы можете перевести регистр по мере необходимости.

    enter image description here

    0
    Ron Rosenfeld 30 Апр 2020 в 21:57