У меня есть набор данных в Excel, где данные за месяц указаны в строках вместе с типами билетов, что затрудняет анализ. Вот пример того, как выглядят мои данные:
Снимок экрана моего набора данных, он может прокручиваться вправо до декабря.
Мне нужно преобразовать эти данные, чтобы у месяца были свои столбцы. Например, я хочу, чтобы у каждого значения был свой месяц. Кроме того, если возможно, мне нужен, например, отдельный столбец «Создание NTT» (то же самое относится и к другим типам билетов), а затем еще один столбец «Месяц» рядом с ним, чтобы я знал, для какого месяца этот тип билета. Остальные данные мне кажутся уже в порядке.
Как я могу добиться этого преобразования с помощью Power Query или любого другого метода в Excel?
Я ценю любые предложения или рекомендации о том, как это сделать.
Спасибо!
Я попробовал несколько методов преобразования данных:
Как начинающий стажер-аналитик данных, я ищу более эффективный и точный метод преобразования этих данных. Я ожидаю решения, которое реструктурирует мои данные, чтобы для каждого значения типа билета был указан свой месяц.
Думаю, вы измените правильный выбор ответа, как только изменятся данные в таблице.
Это решение было задокументировано в Интернете на сайте onlinetraininghub. Я использовал изображения с веб-сайта и подробно опишу процесс здесь, а также предоставлю ссылку внизу для получения более подробной информации и сценариев решения этой конкретной проблемы.
Сначала отформатируйте данные в виде таблицы с помощью Ctrl
+ T
, но снимите флажок «В моей таблице есть заголовки».
Затем загрузите данные в запрос питания с вкладки данных -> из таблицы. Откроется окно редактора запросов мощности.
Далее транспонируем таблицу на вкладке «Преобразование». Затем заполните метки месяцев, выбрав первый столбец (который ранее был первой строкой) и выбрав «Заполнить» на вкладке преобразования. При этом названия каждого месяца будут повторяться для каждой строки.
Затем объедините первые два столбца. Поскольку ваш месяц состоит всего из 3 символов, вам не нужен разделитель для их разделения, позже мы извлечем эти символы.
Затем верните таблицу в исходное расположение и «Используйте первую строку в качестве заголовков».
Затем отмените поворот столбцов данных. Вы можете сделать это, выделив все столбцы данных, щелкнув правой кнопкой мыши и нажав «Отменить сведение столбцов».
Затем разделите новый столбец «Атрибут» по количеству символов (3) «Один раз, как можно дальше влево».
Затем поверните столбцы Attribute.2 и значения. Это поместит их в отдельные столбцы. Вероятно, на этом этапе вы ищете «Сумму» для расширенных параметров.
Наконец, переименуйте столбцы в поля значений, которые вы используете, и «закройте и загрузите».
Дополнительную информацию об этом смотрите в разделе вложенных столбцов на этом сайте: Отменить сведение вложенных столбцов
Если вам нужно автоматизировать эту задачу, используйте следующий макрос:
Sub ReshapeData()
Dim cc As Range, cws As Worksheet
Dim i As Long, j As Long, k As Long
Dim width As Long, height As Long
Dim monthes As Long, divider As Long
Dim anchor As String, arr As Variant, data As Variant
Set cws = ActiveSheet
ThisWorkbook.Sheets.Add
i = 1
While cws.Cells(2, i) = ""
Cells(1, i) = cws.Cells(1, i)
i = i + 1
Wend
divider = i
anchor = cws.Cells(2, i)
Do
Cells(1, i + 1) = cws.Cells(2, i)
i = i + 1
Loop Until cws.Cells(2, i) = anchor
width = i - divider
monthes = (cws.Cells(2, divider).End(xlToRight).Column + 1 - divider) / width
height = cws.Cells(3, 1).End(xlDown).Row - 2
Cells(1, divider) = "Month"
arr = cws.Cells(3, 1).Resize(height, divider - 1)
For k = 1 To monthes
i = (k - 1) * height
j = divider + (k - 1) * width
Cells(2 + i, 1).Resize(height, divider - 1) = arr
Cells(2 + i, divider).Resize(height, 1) = cws.Cells(1, j)
data = cws.Cells(3, j).Resize(height, width)
Cells(2 + i, divider + 1).Resize(height, width) = data
Next
End Sub
Он работает с любым размером строк и столбцов в зависимости от формата первых двух строк. Он помещает данные на новый лист.
Месяцы должны быть одинакового размера, столбцы в том же порядке.
Оставайтесь на листе с данными и запустите макрос (Alt+F8).
Будет ли проблемой отсутствие двух столбцов данных из сообщения ОП «Создание NTT» и «CPAMS ACK»?
@МаркС. "Работает с любым размером строк и столбцов" - любое количество строк, общие столбцы, месяцы, столбцы в месяце.
Было бы полезно посмотреть, как должен выглядеть конечный результат.