Quantcast
Channel: なんでもエクセル(Nandemo Excel)
Viewing all articles
Browse latest Browse all 60

数式/関数:マージと展開を数式でやってみる

$
0
0

「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関数の中に書くのって、何となく変な感じがしますね。


Viewing all articles
Browse latest Browse all 60

Trending Articles