[[20250610230531]] 『閾値を超えるデータの分割処理』(ゆ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) |

| 全文検索 | 過去ログ ]

 

『閾値を超えるデータの分割処理』(ゆ)

以下の処理を行いたいのですがやり方が思いつきません
どなたか知恵を貸してください

元データ

品番 閾値 値
A 3 7

加工後
品番 閾値 値
A 3 3
A 3 3
A 3 1

パワークエリで処理できるのが理想です。。。

< 使用 Excel:Excel2021、使用 OS:Windows11 >


 ■シートレイアウト
 <Sheet1>
     A列     B     C   
 1 品番   閾値    値
 2   A       3     7
 3   B       4    13

 <Sheet2>
     A       B     C   
 1 品番   閾値    値
 2   A       3     3
 3   A       3     3
 4   A       3     1
 5   B       4     4
 6   B       4     4
 7   B       4     4
 8   B       4     1

 ■クエリーの内容は以下。

 let
     // 元のテーブルの読み込み
     Source = Excel.CurrentWorkbook(){[Name="テーブル1"]}[Content],

     // 値を閾値で割って、分割数と余りを求める
     AddColumns = Table.AddColumn(Source, "Parts", each
         let
             threshold = [閾値],
             value = [値],
             quotient = Number.IntegerDivide(value, threshold),
             remainder = Number.Mod(value, threshold),
             repeatedList = List.Repeat({threshold}, quotient),
             finalList = if remainder > 0 then List.Combine({repeatedList, {remainder}}) else repeatedList
         in
             finalList
     ),

     // 各Parts列のリストを展開して、1行ずつに変換
     Expanded = Table.ExpandListColumn(AddColumns, "Parts"),

     // 最終的に整形
     Renamed = Table.RenameColumns(Expanded, {{"Parts", "値2"}}),
     削除された列 = Table.RemoveColumns(Renamed,{"値"})
 in
     削除された列

 あとは、この結果をSheet2に出力してください。

 # Chat-GPTの回答に若干の修正をしたものです。

(xyz) 2025/06/11(水) 07:37:39


 項目名を"値"にすべきであれば、最後の4行を以下に変更してください。

   // 最終的に整形
     Expanded2 = Table.RemoveColumns(Expanded,{"値"})
     Renamed = Table.RenameColumns(Expanded2, {{"Parts", "値"}}),
 in
     Renamed

 # ご希望どおりPowerQuery案を提示しましたが、2日経って何の音沙汰もないのは残念なことです。 
 # 時間が取れなくなったということでしょうか。それならその旨を一報してください。
 # このまま放置するのはご勘弁願いたい。

(xyz) 2025/06/13(金) 10:34:45


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.