Мощный запрос для разделения каждой n-й строки столбца

#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),"")
 

Необходимые корректировки:-

  1. $A2 укажите столбец ваших данных. Убедитесь, что столбец помечен как абсолютный ($ A). Он может быть на другом листе, но он должен быть в той же строке листа, что и формула.
  2. Тест =ROW()-2 . Результат должен быть равен 0. При вставке в другую строку отрегулируйте минус (от -0 до -2), чтобы результат был равен нулю. Используйте это число. Если в итоге вы получите -0, опустите вычисление.
  3. В COLUMN()-3 «3» указан номер столбца, в который вы вставляете формулу. У меня это было в столбце C, который является столбцом № 3. Если у вас есть это в столбце A, это будет COLUMN()-1

После копирования вдоль и поперек ваш список готов, но в нем много пустых строк.

  1. Скопируйте весь диапазон и вставьте> Вставить специальные> Значения. Это заменит формулы данными.
  2. Теперь отфильтруйте пробелы и скопируйте готовую таблицу в конечный пункт назначения.