Вопрос или проблема
У меня есть столбец, в котором содержатся как буквы, так и цифры, и я пытаюсь развернуть его в новые строки.
Я также хочу дублировать всю строку в пределах этого диапазона в новые строки. Можно ли это сделать в Excel?
Оригинальная таблица:
Столбец A | Столбец B |
---|---|
A123-A125 | Яблоки |
B23-B24 | Бананы |
Новая таблица:
Столбец A | Столбец B |
---|---|
A123 | Яблоки |
A124 | Яблоки |
A125 | Яблоки |
B23 | Бананы |
B24 | Бананы |
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
AddCustomColumn = Table.AddColumn(Source, "ExpandedRange", each let
RangeStart = Text.Middle([Column A], 1, Text.PositionOf([Column A], "-") - 1),
RangeEnd = Text.Middle([Column A], Text.PositionOf([Column A], "-") + 1),
StartNumber = Number.From(Text.Remove(RangeStart, {"A".."Z"})),
EndNumber = Number.From(Text.Remove(RangeEnd, {"A".."Z"})),
Prefix = Text.Remove(RangeStart, {"0".."9"}),
RangeList = List.Transform({StartNumber..EndNumber}, each Prefix & Text.From(_))
in
RangeList),
ExpandColumn = Table.ExpandListColumn(AddCustomColumn, "ExpandedRange"),
RemoveOriginalColumn = Table.RemoveColumns(ExpandColumn, {"Column A"}),
RenameColumns = Table.RenameColumns(RemoveOriginalColumn, {{"ExpandedRange", "Column A"}})
in
RenameColumns
Ответ или решение
Для решения задачи по развертыванию диапазона чисел и букв в столбце Power BI с использованием DAX, мы можем применить Power Query, так как DAX не предоставляет прямых функций для развертывания строк. Вот пошаговая инструкция на русском языке, как это можно сделать:
-
Импорт данных: Начните с импорта вашего исходного набора данных в Power BI.
-
Перейдите в редактор Power Query: На панели инструментов Power BI выберите "Преобразовать данные", чтобы открыть редактор Power Query.
-
Создание кастомного столбца:
- Выберите вашу таблицу и перейдите к вкладке "Добавить столбец".
- Нажмите "Пользовательский столбец".
- Введите имя нового столбца (например, "ExpandedRange") и вставьте следующий код в редактор формул:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], // Замените "Table1" на имя вашей таблицы
AddCustomColumn = Table.AddColumn(Source, "ExpandedRange", each
let
RangeStart = Text.Middle([Column A], 1, Text.PositionOf([Column A], "-") - 1),
RangeEnd = Text.Middle([Column A], Text.PositionOf([Column A], "-") + 1),
StartNumber = Number.From(Text.Remove(RangeStart, {"A".."Z"})),
EndNumber = Number.From(Text.Remove(RangeEnd, {"A".."Z"})),
Prefix = Text.Remove(RangeStart, {"0".."9"}),
RangeList = List.Transform({StartNumber..EndNumber}, each Prefix & Text.From(_))
in
RangeList),
ExpandColumn = Table.ExpandListColumn(AddCustomColumn, "ExpandedRange"),
RemoveOriginalColumn = Table.RemoveColumns(ExpandColumn, {"Column A"}),
RenameColumns = Table.RenameColumns(RemoveOriginalColumn, {{"ExpandedRange", "Column A"}})
in
RenameColumns
-
Расширение списка: После добавления этого пользовательского столбца, вы используете функцию
Table.ExpandListColumn
, чтобы превратить элементы списка в новые строки. -
Удаление оригинального столбца: Затем удалите оригинальный столбец "Column A" и переименуйте только что созданный столбец "ExpandedRange" обратно в "Column A".
-
Завершение процесса: После выполнения вышеуказанных шагов, нажмите "Закрыть и загрузить", чтобы вернуть преобразованные данные в Power BI.
Таким образом, вы получите новую таблицу, которая будет содержать все значения диапазонов в отдельных строках, как это показано в вашем примере.
Следуя этим шагам, вы сможете эффективно развернуть диапазоны и продублировать строки в Power BI. Если вам нужно что-то более сложное или у вас есть дополнительные вопросы, не стесняйтесь обращаться за помощью.