#excel #powerbi #powerquery
#excel #powerbi #powerquery
Вопрос:
У меня есть столбец такого формата:
Столбец 1 |
---|
01/01/01 |
£20 |
Строка |
02/01/01 |
£30 |
Строка 2 |
Я хочу разделить столбец каждые 3 строки. Например. для создания следующей таблицы.
Столбец 1 | Столбец 2 | Столбец 3 |
---|---|---|
01/01/01 | £20 | Строка 1 |
02/01/01 | £30 | Строка 2 |
Комментарии:
1. Пожалуйста, покажите нам, что вы пробовали, и где у вас возникли проблемы. Обычно это просто вопрос добавления столбца индекса; затем столбец с целым числом / делением с делителем 3 и группировка по нему.
Ответ №1:
Предполагая, что table1 начинается с Sheet1!A1 и table2 начинаются с листа 2!A1. Просто поместите это в Лист2!A1 и перетащите на Лист2!C2 :
=OFFSET(Sheet1!$A$1,(ROW()-1)*3 COLUMN()-1,0)
Идея: используйте номера строк и столбцов, чтобы «управлять» смещением строки. Этого должно хватить. ( :
Ответ №2:
Вам нужно некоторое преобразование ваших данных. Включите приведенный ниже расширенный код редактора запросов для вашей таблицы-
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjDUByOlWJ1opUOLjQzAjOCSosy8dDDTwAhFgTGyAgUjbEpMUJQYK8XGAgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Column 1" = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Column 1", type text}}),
//-- NEW STEPS STARTED FROM HERE
#"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1, Int64.Type),
#"Added Custom" = Table.AddColumn(#"Added Index", "Custom", each Number.RoundDown(([Index]-1)/3) 1),
#"Added Custom1" = Table.AddColumn(#"Added Custom", "Custom.1", each Number.Mod([Index],3)),
#"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Index"}),
#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Removed Columns", {{"Custom.1", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(#"Removed Columns", {{"Custom.1", type text}}, "en-US")[Custom.1]), "Custom.1", "Column 1"),
#"Renamed Columns" = Table.RenameColumns(#"Pivoted Column",{{"1", "Date"}, {"2", "Price"}, {"0", "Details"}})
in
#"Renamed Columns"
Комментарии:
1. Для тех, кто понятия не имеет, как использовать Power Query, как бы вы это использовали и какую информацию необходимо изменить в коде, чтобы заставить его работать с нашими собственными данными?
2. @Strechingmycompetence Это действительно сложно объяснить здесь: (
3. Какова была логика использования «каждого числа. Округление (([Index] -1) /3) 1′ для переменной #’AddedColumn’?
Ответ №3:
Введите эту формулу в ячейку пустого столбца в той же строке, с которой начинаются ваши данные (может быть на другом листе). Затем измените формулу, как описано ниже, и скопируйте ее на 2 дополнительных столбца вправо и вниз до конца вашего списка.
=IF(MOD(ROW()-2,3)=0,OFFSET($A2,COLUMN()-3,0),"")
Необходимые корректировки:-
$A2
укажите столбец ваших данных. Убедитесь, что столбец помечен как абсолютный ($ A). Он может быть на другом листе, но он должен быть в той же строке листа, что и формула.- Тест
=ROW()-2
. Результат должен быть равен 0. При вставке в другую строку отрегулируйте минус (от -0 до -2), чтобы результат был равен нулю. Используйте это число. Если в итоге вы получите -0, опустите вычисление. - В
COLUMN()-3
«3» указан номер столбца, в который вы вставляете формулу. У меня это было в столбце C, который является столбцом № 3. Если у вас есть это в столбце A, это будетCOLUMN()-1
После копирования вдоль и поперек ваш список готов, но в нем много пустых строк.
- Скопируйте весь диапазон и вставьте> Вставить специальные> Значения. Это заменит формулы данными.
- Теперь отфильтруйте пробелы и скопируйте готовую таблицу в конечный пункт назначения.