梱包数に合わせてラベルを作る時に必要かもしれない処理。
例えば「55個」の商品を「10個単位」の梱包で分けると「5梱包と余り5個」なので、「10個入梱包×5」と「5個入梱包×1」のラベルが必要。これをクエリでやるとどうなるか。
ロット = 10,
個数リスト = Table.FromColumns(
{{"A社", "B社", "C社", "D社"}, {55, 30, 22, 38}},
type table[社名=Text.Type, 必要個数=Int64.Type]
)
会社ごとに必要個数が記入されたテーブルがあるとして、ここからロット(今回は「10」)に合わせてラベル行を作成する。
梱包列を追加 = Table.AddColumn(個数リスト, "梱包", each
Number.RoundDown([必要個数]/ロット,0)
),
剰余列を追加 = Table.AddColumn(梱包列を追加, "剰余", each
Number.Mod([必要個数], ロット)
),
リスト列を追加 = Table.AddColumn(剰余列を追加, "梱包数", each
List.Repeat({ロット}, [梱包]) & (if [剰余]=0 then {} else {[剰余]})
),
列名の変更 = Table.RenameColumns(リスト列を追加,{{"必要個数", "総数"}}),
列を選択 = Table.SelectColumns(列名の変更,{"社名", "総数", "梱包数"}),
リスト展開 = Table.ExpandListColumn(列を選択, "梱包数"),
型の変更 = Table.TransformColumnTypes(リスト展開,
{{"社名", type text}, {"総数", Int64.Type}, {"梱包数", Int64.Type}}
)
実際にはいちいちこんなことをしなくても
梱包数列を追加 = Table.AddColumn(
個数リスト,
"梱包数",
each List.Transform(List.Split({1..[本数]}, ロット), List.Count)
)
とやって展開するだけでもいいと思う。