「2つのテーブルをマージして必要な値を展開する」って、クエリでやれば超簡単なんですが、これをあえて数式でやってみました。
因みにクエリでやるなら「大分類」でマージして「値」を展開するだけです。マウスの操作だけで読み込みまでいけます。書くまでもないんですが、一応コードも書いておきます。
クエリ版let ソース = 表1, クエリのマージ = Table.NestedJoin( ソース, {"大分類"}, 表2, {"大分類"}, "表2" ), 緩衝テーブル = Table.Buffer( クエリのマージ ), マージ列の展開 = Table.ExpandTableColumn( 緩衝テーブル, "表2", {"値"} ) in マージ列の展開
ただこれを数式でやろうと思うと、Microsoft365前提でもそれなりに面倒です。
数式版=REDUCE( HSTACK(表1[#見出し],"値"), SEQUENCE(ROWS(表1[大分類])), LAMBDA( x,y, LET( _c1,INDEX(表1,y,0), _c2,INDEX(表1,y,1), _flt,FILTER(表2[値],_c2=表2[大分類]), VSTACK(x,IFERROR(HSTACK(_c1,_flt),_c1)) ) ) )
OFFSET関数は嫌いなので REDUCE関数の第二引数には行番号の配列を入れました。FILTERで抽出した結果を VSTACKで縦結合しています。
それにしても、LET関数を LAMBDA関数の中に書くのって、何となく変な感じがしますね。