Страницы: 1
RSS
два столбца в строку с удалением дубликатов
 
здравствуйте, у меня два столбца в эксэль в первом артикул во втором уникальный номер к артикулу. к одному артикулу привязано несколько уникальных номеров. хочу сделать в строку один артикул и уникальные номера можно в отдельные ячейки или через запятую
сейчас так
OEM-50890TF0981AZR110010
OEM-50890TK6982AZR110010
OEM-RU5023AZR110010
нужно преобразовать   вот так более 5000 строк
AZR110010OEM-RU5023OEM-50890TK6982OEM-50890TF0981
 
sergey78, можно использовать
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=2&TID=10&TITLE_SEO=10
сперва вручную скопировать артикулы на другой лист, удалить дубликаты, затем к артикулам подтянуть все номера
 
СПАСИБО, СЕЙЧАС ПОПРОБУЮ
 
Код
Sub test()
    Dim wb As Workbook, ws As Worksheet, cl As Range, lastRow&, x&
    Dim dic As Object, dkey
    Set wb = ActiveWorkbook
    Set ws = wb.ActiveSheet
    Set dic = CreateObject("Scripting.Dictionary")
    dic.comparemode = vbTextCompare
    lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row
    For Each cl In ws.Range("B1:B" & lastRow)
        If Not dic.exists(cl.Value) Then
            dic.Add cl.Value, ws.Cells(cl.Row, "A").Value
        Else
            dic(cl.Value) = dic(cl.Value) & " " & ws.Cells(cl.Row, "A").Value
        End If
    Next cl
    Set ws = wb.Sheets.Add
    x = 1
    For Each dkey In dic
        ws.Cells(x, "A").Value = dkey
        ws.Cells(x, "B").Value = dic(dkey)
        x = x + 1
    Next dkey
    ws.Columns("A:B").AutoFit
End Sub
 
365
Код
=LET(
    sku, UNIQUE(Table1[артикул]),
    job, MAP(
        sku,
        LAMBDA(x,
            TEXTJOIN(
                ", ",
                1,
                FILTER(Table1[номер], Table1[артикул] = x)
            )
        )
    ),
    HSTACK(sku, job)
)
Пришелец-прораб.
 
Цитата
Hugo:    сперва вручную скопировать артикулы на другой лист, удалить дубликаты, затем к артикулам подтянуть все номера
Можно наоборот сначала подтянуть, а затем удалить дубликаты (сохранив результат как значения)
 
Цитата
написал:
demo.gif  (110.14 КБ
спасибо, то что нужно  
 
Power Query(в одну ячейку через запятую)
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped Rows" = Table.Group(Source, {"Column2"}, {{"Count", each _, type table}}),
    #"Added Custom" = Table.AddColumn(#"Grouped Rows", "Custom", each [Count][Column1]),
    #"Extracted Values" = Table.TransformColumns(#"Added Custom", {"Custom", each Text.Combine(List.Transform(_, Text.From), ", "), type text}),
    #"Removed Columns" = Table.RemoveColumns(#"Extracted Values",{"Count"})
in
    #"Removed Columns"
 
jakim, да тут 1 строки хватит
Код
Table.Group(Source, "артикул", {{"номера через запятую", each Text.Combine(_[номер], ", ")}})
Пришелец-прораб.
 
AlienSx  спасибо за предложение,но как сделать чтобы при добавлении данных и разделении ячейки учитывлись все добавленные данные.
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Grouped Rows" = Table.Group(Source, "артикул", {{"номер", each Text.Combine(_[номер], ", ")}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows","номер",Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv),{"номер.1", "номер.2", "номер.3"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"номер.1", type text}, {"номер.2", type text}, {"номер.3", type text}})
in
    #"Changed Type"
 
jakim, легко
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    g = Table.Group(Source, "артикул", {{"номер", each _[номер]}}),
    to_list = Table.ToList(g, (x) => {x{0}} & x{1}),
    to_table = Table.FromList(to_list, (x) => x, List.Count(List.Max(to_list, null, List.Count)))
in
    to_table
Пришелец-прораб.
Страницы: 1
Наверх