Формула Excel, которая возвращает имена через запятую, основанные на идентификаторах, формула должна учитывать максимально возможное количество идентификаторов - PullRequest
0 голосов
/ 04 сентября 2018

Мне нужно создать формулу, которая

Это лист 1, мне нужны формулы во втором столбце этого листа, который читает имена из листа 2 и возвращает имена в формате через запятую: .

Это лист 2, который содержит идентификаторы и соответствующие имена для этих идентификаторов, из которых Лист 1 считывает:
.

Я бы хотел сделать это без VBA и использовать формулы Excel.

Данные:

| ID    | Name       |
|-------|------------|
| 8     | apple      |
| 8.1.3 | banana     |
| 8.2   | charlie    |
| 8.3   | delta      |
| 8.4   | echo       |
| 8.5   | foxtrot    |
| 8.5.1 | gamma      |
| 8.5.2 | hello      |
| 8.5.3 | instrument |
| 9     | jump       |
| 9.1.2 | kangaroo   |

Ответы [ 2 ]

0 голосов
/ 04 сентября 2018

Используйте это как формулу массива

=TEXTJOIN(", ",TRUE,IF(ISNUMBER(SEARCH(", " & $A$2:$A$12 & ", ",", "& E2 & ", ")),$B$2:$B$12,""))

Будучи формулой массива, она должна быть подтверждена с помощью Ctrl-Shift-Enter при выходе из режима редактирования.

В этой формуле предполагается, что между числами всегда стоит запятая И . В поиске.

TEXTJOIN был представлен в Office 365 Excel. Более ранние версии требуют vba или помещения вывода в отдельные ячейки.

enter image description here

0 голосов
/ 04 сентября 2018

Следующее введено в виде формулы массива с Ctrl + Shift + Введите . Я предполагаю, что тестовая строка для преобразования находится в E2, а вы вводите ее в F2, затем перетащите ее вниз.

Благодарим @ScottCraner за исправление.

 =TEXTJOIN(CHAR(44),TRUE, IFERROR(INDEX($B$1:$B$12,N(IF({1},MATCH(FILTERXML("<t><s>" & SUBSTITUTE(E3,CHAR(44), "</s><s>") & "</s></t>", "//s"),$A$1:$A$12,0)))),""))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...