Как я могу преобразовать данные сводного стиля в данные списка?

По сути, у меня есть данные, расположенные как сводная таблица в примере с синей таблицей, и я хотел бы сделать «обратный свод», чтобы отформатировать его, как в зеленой таблице. Это не настоящая сводная таблица, но она устроена таким же образом. В идеале я хотел бы просто использовать формулы, но если это невозможно, какой лучший метод в VBA для достижения этого? Мой фактический набор данных довольно велик (~ 350 строк на ~ 100 столбцов) и должен постоянно обновляться, поэтому он должен быть полностью автоматизирован. Любое руководство очень ценится!

Пример

Я пробовал несколько встроенных функций Excel, но не могу найти что-то, что соответствует моему случаю.

=TEXTSPLIT(TEXTJOIN(";",0,A2:A5&","&B1:F1&","&B2:F5),",",";"‌​) будет работать на примере. Не уверен, что это работает с большим набором данных
P.b 22.11.2022 18:41

Я бы использовал Power Query и развернул бы эти столбцы.

Rory 22.11.2022 19:02

Извините, я должен был упомянуть, что у меня Excel 2016 года и, к сожалению, у меня нет доступа к этим функциям!

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

Ответы 1

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

Рассматривали ли вы «Отменить поворот» в Excel PowerQuery, как объясняется в этой статье?

Это работает только в том случае, если таблица не отформатирована как сводная таблица Excel, иначе вы получите сообщение об ошибке «Таблица не может перекрывать диапазон, содержащий отчет сводной таблицы, результаты запроса, защищенные ячейки или другую таблицу».

Вот пример данных, которые ранее были сведены:

+--------+------+------+------+
|  SKU   |  1   |  7   |  8   |
+--------+------+------+------+
| 006101 | 0.87 | 0.87 | 0.87 |
| 006309 | 0.87 | 0.87 | 0.87 |
| 006507 | 0.87 | 0.87 | 0.87 |
| 006705 | 0.87 | 0.87 | 0.87 |
+--------+------+------+------+

После загрузки в PowerQuery вы выбираете столбцы, которые хотите развернуть, затем переходите к «Преобразованию» и выбираете «Отменить сводные столбцы» в группе «Любой столбец». Я выбрал столбцы 1, 7, 8.

Это результирующий М-код:

let
    Source = Excel.CurrentWorkbook(){[Name = "MyDataSource"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"SKU", type text}, {"1", type number}, {"7", type number}, {"8", type number}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"SKU"}, "Attribute", "Value"),
    #"Renamed Columns" = Table.RenameColumns(#"Unpivoted Columns",{{"Attribute", "ST"}})
in
    #"Renamed Columns"

И это результат, когда вы загружаете данные обратно в Excel (вы также можете просто создать соединение в PowerQuery, если хотите обработать его дальше):

+--------+----+-------+
|  SKU   | ST | Value |
+--------+----+-------+
| 006101 |  1 |  0.87 |
| 006101 |  7 |  0.87 |
| 006101 |  8 |  0.87 |
| 006309 |  1 |  0.87 |
| 006309 |  7 |  0.87 |
| 006309 |  8 |  0.87 |
| 006507 |  1 |  0.87 |
| 006507 |  7 |  0.87 |
| 006507 |  8 |  0.87 |
| 006705 |  1 |  0.87 |
| 006705 |  7 |  0.87 |
| 006705 |  8 |  0.87 |
+--------+----+-------+

После публикации этого я увидел, что вы заявили, что у вас нет доступа к PowerQuery. PowerQuery был включен в Excel с вашей версии, которая, как вы говорите, 2016 года. (microsoft.com/en-us/microsoft-365/blog/2015/09/10/…)

Dolunaykiz 22.11.2022 19:09

Всегда пожалуйста. Рад слышать, что у вас все получилось!

Dolunaykiz 22.11.2022 20:19

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