Ieskelahsydyv
@Ieskelahsydyv

Множественный ВПР в одной ячейке по части текста?

Каждый день сталкиваюсь с рутинной задачей работы подбора замен номеров.

Есть исходная таблица со всеми возможными артикулами без дубликатов.

Есть вторая таблица в которой есть замены.
Как сделать общую таблицу с 2 колонками АРТИКУЛ и ЗАМЕНА, во второй колоне вывести, без дубликатов, все возможные варианты замен.

АРТИКУЛ          ЗАМЕНА                                       АРТИКУЛ ЗАМЕНА
A001                  A001/A002                                     A001 A002/A003/A009/A010
A002                  A002/A003                                     A002 A001/A003/A009/A010
A003                  A003                                              A003 A001/A002/A009/A010
A004                  A004/A005/A006/A007                  A004 A005/A006/A007/A008
A005                  A00555                                          A005 A004/A006/A007/A008
A006                  A006                                              A006 A004/A005/A007/A008
A007                 A007/A008                                    A007 A004/A005/A006/A008
A008                 A008                                              A008 A004/A005/A006/A007
A009                 A009/A010/A001                           A009 A001/A002/A003/A010
A010                 A010                                              A010 A001/A002/A003/A009


Помогите решить задачу, т.к. перебрал все возможные варианты, нет результата.
  • Вопрос задан
  • 710 просмотров
Решения вопроса 1
ProgrammerForever
@ProgrammerForever Куратор тега Excel
Учитель, автоэлектрик, программист, музыкант
В Excel на VBA что-то возможно подобное сделать.
В Google таблицах есть шанс обойтись формулами, хотя и пользовательскую функцию там проще сделать.
на формулах это жутко выглядит, да и ошибиться можно на раз. Формула для 3х итераций

=join(
        "/"
        ;ТРАНСП(unique(
                ТРАНСП(split(
                        join(
                                "/"
                                ;ArrayFormula(
                                        ЕСЛИОШИБКА(
                                                ВПР(
                                                        split(
                                                                join(
                                                                        "/"
                                                                        ;ArrayFormula(
                                                                                ЕСЛИОШИБКА(
                                                                                        ВПР(
                                                                                                split(
                                                                                                        ВПР(A1;FILTER(A:B;A:A<>"");2;0)
                                                                                                        ;"/"
                                                                                                )
                                                                                                ;FILTER(A:B;A:A<>"")
                                                                                                ;2
                                                                                                ;0
                                                                                        )
                                                                                        ;split(
                                                                                                ВПР(A1;FILTER(A:B;A:A<>"");2;0)
                                                                                                ;"/"
                                                                                        )
                                                                                )
                                                                        )
                                                                )
                                                                ;"/"
                                                        )
                                                        ;FILTER(A:B;A:A<>"")
                                                        ;2
                                                        ;0
                                                )
                                                ;split(
                                                                join(
                                                                        "/"
                                                                        ;ArrayFormula(
                                                                                ЕСЛИОШИБКА(
                                                                                        ВПР(
                                                                                                split(
                                                                                                        ВПР(A1;FILTER(A:B;A:A<>"");2;0)
                                                                                                        ;"/"
                                                                                                )
                                                                                                ;FILTER(A:B;A:A<>"")
                                                                                                ;2
                                                                                                ;0
                                                                                        )
                                                                                        ;split(
                                                                                                ВПР(A1;FILTER(A:B;A:A<>"");2;0)
                                                                                                ;"/"
                                                                                        )
                                                                                )
                                                                        )
                                                                )
                                                                ;"/"
                                                        )
                                        )
                                )
                        )
                        ;"/"
                ))
        ))
)


Демонстрационная таблица
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы