Как преобразовать данные в Excel, чтобы можно было разделить две строки?

У меня есть набор данных в Excel, где данные за месяц указаны в строках вместе с типами билетов, что затрудняет анализ. Вот пример того, как выглядят мои данные:

Снимок экрана моего набора данных, он может прокручиваться вправо до декабря.

Мне нужно преобразовать эти данные, чтобы у месяца были свои столбцы. Например, я хочу, чтобы у каждого значения был свой месяц. Кроме того, если возможно, мне нужен, например, отдельный столбец «Создание NTT» (то же самое относится и к другим типам билетов), а затем еще один столбец «Месяц» рядом с ним, чтобы я знал, для какого месяца этот тип билета. Остальные данные мне кажутся уже в порядке.

Как я могу добиться этого преобразования с помощью Power Query или любого другого метода в Excel?

Я ценю любые предложения или рекомендации о том, как это сделать.

Спасибо!

Я попробовал несколько методов преобразования данных:

  • Транспонирование данных: это частично помогло, но не позволило достичь желаемой структуры, поскольку месяцы все еще были выровнены неправильно.
  • Сведение данных. Я пытался использовать сводную таблицу, но мне не удалось отобразить месяцы в отдельных столбцах.
  • Заполнение вручную: это занимало очень много времени и приводило к ошибкам.

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

Было бы полезно посмотреть, как должен выглядеть конечный результат.

cybernetic.nomad 07.08.2024 20:41

Думаю, вы измените правильный выбор ответа, как только изменятся данные в таблице.

rotabor 08.08.2024 07:19
Преобразование HTML-таблицы в профессиональный документ Excel
Преобразование HTML-таблицы в профессиональный документ Excel
Это самый простой способ создания Excel из HTML-таблицы.
Импорт excel в laravel в базу данных
Импорт excel в laravel в базу данных
Здравствуйте, дорогой читатель, в этой статье я расскажу практическим и быстрым способом, как импортировать файл Excel в вашу базу данных с помощью...
1
2
58
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Это решение было задокументировано в Интернете на сайте 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»?

Mark S. 07.08.2024 22:05

@МаркС. "Работает с любым размером строк и столбцов" - любое количество строк, общие столбцы, месяцы, столбцы в месяце.

rotabor 07.08.2024 22:08

Другие вопросы по теме