Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
28.03.2024, 19:26:08

Войти
Хотите поблагодарить участника за дельный совет? Нажмите [Повысить]. Так вы заслуженно поднимите репутацию активному участнику.
33 233 Сообщений в 5 454 Тем от 6 750 Пользователей
Последний пользователь: Alex1210
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  PowerQuery, PowerPivot, PowerBI и запросы
| | |-+  Автозаполнение по заданным значениям
Страниц: [1]   Вниз
Печать
Автор Тема: Автозаполнение по заданным значениям  (Прочитано 7984 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Jorel
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля E-mail
« : 01.07.2020, 10:10:50 »

Здравствуйте!
Суть вопроса такая, есть столбец, в нем значения в некоторых ячейках по одному, в некоторых по два, в некоторых через тире. Все эти значения которые надо подставить в отдельный столбец по одному, причем значения с тире надо раскрыть это по сути границы диапазона. Вид примерно такой C430-C435 первого столбца надо вносить значения вида С430 С431 С342 и т.д. Знаю это можно сделать в Power Query, но как именно?
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 828



Просмотр профиля WWW
« Ответ #1 : 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
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
v79italya
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля E-mail
« Ответ #2 : 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
Записан
Jorel
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 2


Просмотр профиля E-mail
« Ответ #3 : 01.07.2020, 21:54:03 »

Большое спасибо! Помогло!
Записан
Zefir
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 6

ЗАБАНЕН!
Просмотр профиля E-mail
« Ответ #4 : 19.09.2020, 14:12:37 »

Большое спасибо! Тоже воспользовался  Улыбка
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru