Страницы: 1
RSS
Поиск всех значений в диапазоне по заданному значению.
 
Добрый день.
Помогите пожалуйста решить вот такую задачу.
Есть список продуктов с атикулами, некоторые продукты имеют разные артикулы. Есть список уникальных продуктов. Нужно в списке уникальных продуктов получить разделенный точкой с запятой список всех артикулов, которые используются для этого продукта.

ВПР не помогает, т.к. ищет только первое совпадение. Интуичу что решение лежит в использовании ИНДЕКС и ПОИСКПОЗ, но не хватает головы сообразить как сделать.

В прикрепленном файле на первом листе исходные данные, на втором — визуализация желаемого конечного результата.
Заранее спасибо!
 
в свежей эксельке
Код
=ОБЪЕДИНИТЬ("; ";1;ФИЛЬТР($A$2:$A$11;$B$2:$B$11=D3))
в эксельке постарше
Код
=ОБЪЕДИНИТЬ("; ";1;ЕСЛИ($B$2:$B$11=D3;$A$2:$A$11;""))
еще на DAX можно
Код
=CONCATENATEX('Диапазон';[Артикул];"; ")
до кучи вариант PQ:
Код
let
    from = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    txt = Table.TransformColumnTypes(from,{"Артикул", type text}),
    to = Table.Group(txt, "Продукт", {"Артикулы", each Text.Combine([Артикул],"; ")})
in
    to
ну и VBA никто не отменял  :)
Изменено: buchlotnik - 11.07.2020 01:46:38
Соблюдение правил форума не освобождает от модераторского произвола
 
Цитата
buchlotnik написал:
в эксельке постарше
Простите пожалуйста, а мой 2010-й эксель слишком старый даже для "постарше"? Или я еще непонятливей чем от себя ожидал?

Update: уже нагуглил что функция появилась в 2016-м экселе только. Буду ставить его.

Спасибо огромное!
Изменено: jocke2 - 11.07.2020 08:58:39
 
Цитата
jocke2 написал:
функция появилась в 2016-м экселе только
и там не появилась она.
https://support.microsoft.com/ru-ru/office/%D0%BE%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D­1%82%D1%8C-%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F-%D0%BE%D0%B1%D1%8A%D0%B5%D0%B4%D0%B8%D0%BD%D0%B8%D1%82%D1%8C­-357b449a-ec91-49d0-80c3-0e8fc845691c
2019 по подписке 365

Объем данных и сколько максимум может быть значений для объединения?
Изменено: БМВ - 11.07.2020 10:52:27
По вопросам из тем форума, личку не читаю.
 
Цитата
БМВ написал:
и там не появилась она
блин, беда ((
Цитата
БМВ написал:
Объем данных и сколько максимум может быть значений для объединения?
В данный момент примерно 250 строк с дублирующимися артикулами, из которых порядка 100 уникальных наименований. Максимально, я думаю, когда эта задача встанет в следующий раз будет не больше 1000 наименований из которых примерно 700-800 будет уникальных.

Простите, проглядел еще вопрос, значений для объединения (т.е. разных артикулов на 1-н товар) порядка от 2 до 5 не больше.
Изменено: jocke2 - 11.07.2020 11:17:26
 
в 2016 точно есть PQ и DAX с CONCATENATEX
Соблюдение правил форума не освобождает от модераторского произвола
 
jocke2, написал
Цитата
а мой 2010-й эксель слишком старый даже для "постарше"
Что уж говорить о моем 2003.
Код
Sub Fruit()
Dim i As Long
Dim iLastRow As Long
Dim FoundFruit As Range
Dim FAdr As String
 iLastRow = Cells(Rows.Count, "D").End(xlUp).Row
 Range("E2:E" & iLastRow).ClearContents
 Range("E2:E" & iLastRow).NumberFormat = "@"
      For i = 2 To iLastRow
        Set FoundFruit = Columns(2).Find(Cells(i, "D"), , xlValues, xlWhole)
            FAdr = FoundFruit.Address
          Do
            Cells(i, "E") = Cells(i, "E") + Cells(FoundFruit.Row, "A") & ", "
            Set FoundFruit = Columns(2).FindNext(FoundFruit)
          Loop While FoundFruit.Address <> FAdr
             Cells(i, "E") = Left(Cells(i, "E"), Len(Cells(i, "E")) - 2)
      Next
End Sub
 
=INDEX(A:A;SMALL(IF($B$1:$B$1000=D2;ROW($B$1:$B$1000));1))&
IF(COUNTIF(B:B;D2)>1;"; "&INDEX(A:A;SMALL(IF($B$1:$B$1000=D2;ROW($B$1:$B$1000));2))&
IF(COUNTIF(B:B;D2)>2;"; "&INDEX(A:A;SMALL(IF($B$1:$B$1000=D2;ROW($B$1:$B$1000));3))&
IF(COUNTIF(B:B;D2)>3;"; "&INDEX(A:A;SMALL(IF($B$1:$B$1000=D2;ROW($B$1:$B$1000));4))&
IF(COUNTIF(B:B;D2)>4;"; "&INDEX(A:A;SMALL(IF($B$1:$B$1000=D2;ROW($B$1:$B$1000));5));"");"");"");"")


Если более 5, то надо продолжить
По вопросам из тем форума, личку не читаю.
 
Kuzmich,спасибо Вам, но vbs я понимаю еще хуже чем обычный эксель )))
БМВ, спасибо огромное! Как часы!

И, отдельное спасибо, что не пришлось менять версию Excel, это для меня тоже очень важно.
Страницы: 1
Наверх