Страницы: 1
RSS
Разделение данных ячейки на строки.
 

В прикрепленном файле я привела вариант таблицы, и что в идеале надо с ней сделать. Когда делаю выгрузку из системы, то телефоны по каждому сотруднику выгружаются в одну ячейку(разделитель - запятая и пробел -«, »). Нужно переформатировать таблицу так, чтобы данные по сотруднику дублировались в каждой строке столько раз, сколько номеров телефонов у него есть, причём в колонке phone отображались по очереди номера телефонов.

Помогите, пожалуйста, написать макрос или подскажите как это возможно сделать вручную, т.е. с использованием формул или команд excel.

Спасибо!

 
Power Query
Код
let
    Источник = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Измененный тип" = Table.TransformColumnTypes(Источник,{{"First Name", type text}, {"Last Name", type text}, {"Date of birth", type date}, {"Phone", type text}, {"Department", Int64.Type}, {"Rank", Int64.Type}}),
    #"Разделить столбец по разделителю" = Table.ExpandListColumn(Table.TransformColumns(#"Измененный тип", {{"Phone", Splitter.SplitTextByDelimiter(", ", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Phone")
in
    #"Разделить столбец по разделителю"
Изменено: Msi2102 - 14.10.2021 07:32:00
 
Алёна, еще вариант
Код
Sub mrshkei()
Dim arr, arr2, arr3, i As Long, j As Long, n As Long, k As Long, lr As Long, x As Long
x = 6
lr = Cells(Rows.Count, 1).End(xlUp).Row
arr = Range("A1:F" & lr)
ReDim arr3(1 To lr * 5, 1 To x): k = 2
For i = 1 To x
    arr3(k - 1, i) = arr(1, i)
Next i
For i = LBound(arr) + 1 To UBound(arr)
    arr2 = Split(arr(i, 4), ", ")
    For n = LBound(arr2) To UBound(arr2)
    If UBound(arr2) > 0 And arr2(n) = "NO" Then GoTo M
        arr3(k, 1) = arr(i, 1)
        arr3(k, 2) = arr(i, 2)
        arr3(k, 3) = arr(i, 3)
        arr3(k, 4) = arr2(n)
        arr3(k, 5) = arr(i, 5)
        arr3(k, 6) = arr(i, 6)
        k = k + 1
M:
    Next n
Next i
Range("H1").Resize(UBound(arr3), x) = arr3
End Sub
Не бойтесь совершенства. Вам его не достичь.
 
Еще вариант (по массивнее)  :) . См. файл
Изменено: artemkau88 - 14.10.2021 13:49:52
 
MSi2102, Mershik, artemkau88, спасибо за помощь!!!
 
Msi2102, а можно как-то сделать обратное действие? Т.е. когда у меня для одного сотрудника телефоны записаны в разных строках, указать их (как было в исходнике) в одной строке через запятую?
спасибо.
Страницы: 1
Читают тему (гостей: 1)
Наверх