Excel это не сложно

Основные форумы => PowerQuery, PowerPivot, PowerBI и запросы => Тема начата: Jorel от 01.07.2020, 10:10:50



Название: Автозаполнение по заданным значениям
Отправлено: Jorel от 01.07.2020, 10:10:50
Здравствуйте!
Суть вопроса такая, есть столбец, в нем значения в некоторых ячейках по одному, в некоторых по два, в некоторых через тире. Все эти значения которые надо подставить в отдельный столбец по одному, причем значения с тире надо раскрыть это по сути границы диапазона. Вид примерно такой C430-C435 первого столбца надо вносить значения вида С430 С431 С342 и т.д. Знаю это можно сделать в Power Query, но как именно?


Название: Re:Автозаполнение по заданным значениям
Отправлено: Дмитрий Щербаков(The_Prist) от 01.07.2020, 14:34:14
Вероятно, можно сделать так:
Код: (visualfoxpro)
let
    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Что есть", type text}}),
    replace = Text.Replace(
            Text.Replace(
                Text.Replace(
                    Text.Replace(Text.Combine(Source[Что есть],","),"C","")
                    ,"-","..")
                ,",,",",")
            ," ",""),
    split = Text.Split(replace,","),
    res = List.Transform(List.Union(List.Transform(split, each
            if Text.Contains(_,"..") then List.Numbers(
                        Number.FromText(Text.Split(_,".."){0}),
                                        Number.FromText(Text.Split(_,".."){1}) - Number.FromText(Text.Split(_,".."){0}) + 1)
            else {_})
    ), each "C" & Text.From(_))
in
    res


Название: Re:Автозаполнение по заданным значениям
Отправлено: v79italya от 01.07.2020, 17:21:22
Еще вариант
Код: (vb)
// Таблица1
let
    Source = List.RemoveMatchingItems(Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content][Столбец1],{null}),
    Custom1 = List.Transform(Source, each
                                          let
                                              i=Text.Trim(_,{",","C"})
                                          in
                                              if Text.Contains(i,"-")
                                              then
                                                    let
                                                        ii=Text.Split(i,"-C")
                                                    in {Number.From(ii{0})..Number.From(ii{1})}
                                              else Text.Split(i,", C")),
    Custom2 = List.Transform(List.Combine(Custom1), each "C"&Text.From(_))
in
    Custom2


Название: Re:Автозаполнение по заданным значениям
Отправлено: Jorel от 01.07.2020, 21:54:03
Большое спасибо! Помогло!


Название: Re:Автозаполнение по заданным значениям
Отправлено: Zefir от 19.09.2020, 14:12:37
Большое спасибо! Тоже воспользовался  :)