У меня есть стартовый стол, как это:

И мне нужно создать строку для каждой буквы в третьем столбце. То, что я до сих пор делал, это извлекал эту информацию в отдельные столбцы, например:

Моя цель состоит в том, чтобы получить такую таблицу:

Как мне этого добиться? Я думал об использовании сводной таблицы, но я понятия не имею, как и где назначить различные столбцы, чтобы получить то, что мне нужно.

Примечание: я предпочитаю не использовать макросы, так как у меня нет опыта их использования, и мне придется регулярно выполнять подобные операции над различными структурами таблиц, где столбец "Буквы" не так обрезан, как в моем примере (имеется в виду, что я не могу программно определить, какую строку нужно умножить или нет). Мне пришлось бы постоянно переписывать код. Я бы предпочел, чтобы я мог сделать это как "обычный" пользователь.

2 ответа2

1

Изменить: добавлены скриншоты, чтобы помочь найти варианты местоположения

Используйте Get&Transform на вкладке Data . Выбрать From Table/Range

  • Откроется пользовательский интерфейс Power Query
  • Выберите столбец букв и параметр «Разделить столбец по количеству символов» (где количество символов - один (1)).

  • Выберите столбцы Имя и Фамилия
  • Выберите, чтобы развернуть другие столбцы.

  • Удалите столбец Атрибут, созданный после разворота.

  • Закрыть и загрузить

После того, как вы сделали это один раз, вы можете добавить данные в таблицу и при необходимости повторно выполнить запрос.

0

Если вы начнете с этого на Sheet1:

и запустите этот макрос:

Sub MakeReport()
    Dim k As Long, i As Long, N As Long, s1 As Worksheet, s2 As Worksheet
    Dim v1 As String, v2 As String, lt As String, L As Long, ll As Long

    Set s1 = Sheets("Sheet1")
    Set s2 = Sheets("Sheet2")
    N = s1.Cells(Rows.Count, "A").End(xlUp).Row
    k = 1
    For i = 2 To N
        v1 = s1.Cells(i, 1).Value
        v2 = s1.Cells(i, 2).Value
        lt = s1.Cells(i, 3).Value
        L = Len(lt)
        For ll = 1 To L
            s2.Cells(k, 1) = v1
            s2.Cells(k, 2).Value = v2
            s2.Cells(k, 3) = Mid(lt, ll, 1)
            k = k + 1
        Next ll
    Next i
End Sub

Вы получите это на Sheet2:

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .