Страницы: 1
RSS
Дубль строк и информации по ним по 1 критерию
 
Заранее всем спасибо, кто попробует помочь мне. :)
В отчете есть несколько строк.
Основной момент: в столбце "кол-во шкафов" указано кол-во шкафов определенного типа в  определенно городе (в отчете оригинале сотни тысяч строк).
Цель разделить каждую строчку, где указано более 1 шкафа на кол0во строк равное кол-ву шкафов.
При этом информация в части столбцов просто дублируется и остается не изменённой, а часть информации в столбцах меняется (рассчитывается исходя из кол-ва строк (шкафов) в пересчете на 1.
В файле есть пример "до" и пример "после" + строчки, которые требуют корректировок.
К сожалению, не хватает навыков и умений сообразить как это сделать.
 
PQ. Скучный.
Код
let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    columns = Table.ColumnNames(Source),
    to_list = Table.ToList(
        Source, 
        (x) =>
            [k = x{11},
            ids = List.Transform({1..k}, (w) => Text.From(x{2}) & "-" & Text.From(w)),
            repeat = (i, n) => {x{i}} & List.Repeat({x{i}}, n),
            divide = (i, n) => {x{i}} & List.Repeat({x{i} / n}, n),
            lst = 
                {repeat(0, k), repeat(1, k), {x{2}} & ids,
                repeat(3, k), repeat(4, k), divide(5, k), 
                divide(6, k), divide(7, k), repeat(8, k),
                repeat(9, k), repeat(10, k), {x{11}} & List.Repeat({1}, k),
                repeat(12, k), repeat(13, k), repeat(14, k), repeat(15, k)},
            tbl = Table.FromColumns(lst, columns)][tbl]
    ),
    combine = Table.Combine(to_list)
in
    combine
Пришелец-прораб.
 
Цитата
написал:
65




#2
28.11.2023 20:14:07


PQ. Скучный. Кодlet
   Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
   columns = Table.ColumnNames(Source),
   to_list = Table.ToList(
       Source,
       (x) =>
           [k = x{11},
           ids = List.Transform({1..k}, (w) => Text.From(x{2}) & "-" & Text.From(w)),
           repeat = (i, n) => {x{i}} & List.Repeat({x{i}}, n),
           divide = (i, n) => {x{i}} & List.Repeat({x{i} / n}, n),
           lst =
               {repeat(0, k), repeat(1, k), {x{2}} & ids,
               repeat(3, k), repeat(4, k), divide(5, k),
               divide(6, k), divide(7, k), repeat(8, k),
               repeat(9, k), repeat(10, k), {x{11}} & List.Repeat({1}, k),
               repeat(12, k), repeat(13, k), repeat(14, k), repeat(15, k)},
           tbl = Table.FromColumns(lst, columns)][tbl]
   ),
   combine = Table.Combine(to_list)
in
   combine

Прикрепленные файлы
Вопрос.xlsb  (29.68 КБ)
Моя искренняя благодарность за желание помочь. :)
К сожалению, я ничего не поняла... :cry:
Формул в файлике нет.

Скажите, пож, просто формулами результата не добиться?
Это макросы?
А как решение перенести на весь массив?
Я еще раз прошу прощения, за низкий уровень знаний в excel.  :cry:  
 
Цитата
Наталья Лукина написал:
отчете оригинале сотни тысяч строк...Скажите, пож, просто формулами результата не добиться?
Сотни тысяч формул сильно затормозят Ваш файл.
Макрос. На листе 'Было' нажмите кнопку START
Скрытый текст
Согласие есть продукт при полном непротивлении сторон.

Контакты, благодарности
 
Цитата
написал:
Сотни тысяч формул сильно затормозят Ваш файл.Макрос. На листе 'Было' нажмите кнопку START
Большое спасибо. :)
Какие курсы и где вы проходили?
Очень хочу понимать, но не понимаю.  8-0  
 
Цитата
Наталья Лукина написал:
Какие курсы и где вы проходили?
Никаких специальных курсов по Excel не проходил) Читал книжки, решал задачки...Мне кажется программирование ближе к творчеству, чем к ремеслу)
Согласие есть продукт при полном непротивлении сторон.

Контакты, благодарности
 
Цитата
написал:
Никаких специальных курсов по Excel не проходил) Читал книжки, решал задачки...Мне кажется программирование ближе к творчеству, чем к ремеслу
Спасибо за Ваше не безразличие.
Здоровья, мир аи добра Вам.
Страницы: 1
Наверх