Мне нужно переставить данные в Excelsheet - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть таблица Excel, аналогичная приведенной ниже.

Таблица:

https://i.stack.imgur.com/gP35L.png

Данные, которые у меня есть, похожи, ноу меня ~ 350 записей.

У меня вопрос, как я могу легко перенести данные из верхней строки в соответствующую строку (отмечена 1 в таблице)?Это означает, что там, где есть «1» против имени, я должен был бы поменять его на соответствующую дату из верхней строки.

Я могу сделать это вручную, но имея в виду, что их более 300записей, это заняло бы много времени.

Пример того, как это должно выглядеть:

Окончательный результат:

https://i.stack.imgur.com/4MF5b.png

Спасибо!

Мартин

Ответы [ 2 ]

0 голосов
/ 20 сентября 2019

На основании комментариев, сделанных @MartinPetrov в ответ @ Napoli, ОП хочет сгруппировать даты рядом с каждым именем, возможно, одним из следующих способов:

Examples

Это можно сделать с помощью #powerquery, который является встроенной функцией Excel.Пожалуйста, обратитесь к этой статье , чтобы узнать, как использовать Power Query в вашей версии Excel.Он доступен в Excel 2010 Professional Plus и более поздних версиях .Моя демонстрация использует Excel 2016 .

Я использовал следующую таблицу под названием Tbl_10X10 , которая представляет собой таблицу 10 x 10 на основе исходной таблицы, предоставленной OP с некоторым примеромданные выделены желтым цветом.Это решение работает для набора данных размером 350x350 или более.

Source Data

Шаги:

  1. Загрузка исходных данных редактор запросов мощности , который должен выглядеть следующим образом:

Loaded

Используйте функцию Отключить столбцы на вкладке Transform, чтобы отключить все столбцы, кроме первого, а затем remover столбец Value, тогда у вас должно быть следующее:

Unpivoted

Используйте Группировать по функции на вкладке Transform, чтобы сгруппировать столбец Attribute по Column1, как указано ниже.Не паникуйте, если результат в error, как и ожидалось.

Grouped By

Вернитесь к последнему шагу и замените исходную формулу в строке формул следующей, поскольку Text.Combine не является встроенной функцией:

Text Combine

Вот формула: = Table.Group(#"Removed Columns", {"Column1"}, {{"Sum", each Text.Combine([Attribute], " ; "), type text}})

Если вы хотите, чтобы все даты были сгруппированы в один столбец, тогда наш запрос остановится здесь.Если вы хотите, чтобы они были в отдельных столбцах, вы можете использовать функцию Разделить столбец на вкладке Transform, чтобы разбить даты на отдельные столбцы, как показано ниже:

Splited

Обратите внимание, я добавил 10 в качестве количества столбцов, на которые нужно разделить.В вашем случае вы, возможно, захотите ввести 350 или разумное число, чтобы все даты можно было поместить в столбец, а затем массово удалить столбцы со значением null.

Один разГотово, вы можете Закрыть и загрузить запрос к новому рабочему листу (по умолчанию).

Здесь находятся Power Query M коды позади сцены.Большинство шагов используют встроенные функции, которые являются прямыми, за исключением последнего шага перезаписи формулы в строке формул.

let
    Source = Excel.CurrentWorkbook(){[Name="Tbl_10X10"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Column1", type text}, {"September, 12", Int64.Type}, {"June, 13", Int64.Type}, {"August, 21", Int64.Type}, {"July, 5", Int64.Type}}),
    #"Unpivoted Columns" = Table.UnpivotOtherColumns(#"Changed Type", {"Column1"}, "Attribute", "Value"),
    #"Removed Columns" = Table.RemoveColumns(#"Unpivoted Columns",{"Value"}),
    #"Grouped Rows" = Table.Group(#"Removed Columns", {"Column1"}, {{"Sum", each Text.Combine([Attribute], " ; "), type text}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows", "Sum", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), {"Sum.1", "Sum.2", "Sum.3", "Sum.4", "Sum.5", "Sum.6", "Sum.7", "Sum.8", "Sum.9", "Sum.10"}),
    #"Removed Columns1" = Table.RemoveColumns(#"Split Column by Delimiter",{"Sum.7", "Sum.8", "Sum.9", "Sum.10"})
in
    #"Removed Columns1"

Дайте мне знать, если у вас есть какие-либо вопросы.Приветствия:)

0 голосов
/ 19 сентября 2019

Вы можете скопировать список из 350 записей и вставить их в касательный столбец.Затем вы можете использовать формулу =IF(B2>=1,B$1,"") и перетащить / применить ее ко всем вашим ячейкам.

См. Мой скриншот ниже.

enter image description here

Ниже приведен мой документ в формате Excel с приведенными формулами.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...