
行・列方向に条件が並ぶ表を、行方向のみに条件が並ぶ表に変換する
タイトルが、あまりうまく言語化できていないかもですが…。
こんな感じの一覧表って、よく見かけますよね。
(タイトル行・列に条件が並び、それらの交差部分が対応値になっている表)

ただ、これを電子的なデータとして、引用・分析しようとすると、
実は、次のような感じに整形されている方が、結構都合よかったりします。
(左側に条件が示されて、右側が対応値になっている表)
例-1

例-2

というわけで、今回は、その変換をするための数式をご紹介します。
(1) 対応値を並べ替える
対応値の方が変換が簡単
今回のような場合だと、数式「tocol()」を使えば1発で処理できる

引数には、対応値の範囲(黄色の範囲)を指定する
=tocol([対応値の範囲])すると、次のような感じに変換できる

(2) 条件を順次かけあわせた上で、並べ替える
条件については、複数行と複数列との順次かけあわせが必要

行の条件(赤色の範囲)の順次かけあわせは「byrow()」で、
列の条件(青色の範囲)の順次かけあわせは「bycol()」でいける
これらの数式を使うには「lambda()」もセットで必要
具体的には、以下のような構文になる
(※「rowkeys」や「colkeys」は、私が勝手に作った変数です。
それぞれ赤色・青色の範囲を指しており、別名に代えてもOKです。)
=byrow([行の条件の範囲],lambda(rowkeys,bycol([列の条件の範囲],lambda(colkeys,rowkeys&"-"&colkeys))))すると、次のような感じに変換できる

この状態にさえなれば、「tocol()」の引数に入れればOK
=tocol(byrow([行の条件の範囲],lambda(rowkeys,bycol([列の条件の範囲],lambda(colkeys,rowkeys&"-"&colkeys)))))すると、次のような感じに変換できる

(3) 条件を別々のセルに置きたい場合
条件を1セルに結合したくない場合は、
「rowkeys&"-"&colkeys」を「rowkeys」「colkeys」だけにすればOK
=tocol(byrow([行の条件の範囲],lambda(rowkeys,bycol([列の条件の範囲],lambda(colkeys,rowkeys)))))=tocol(byrow([行の条件の範囲],lambda(rowkeys,bycol([列の条件の範囲],lambda(colkeys,colkeys)))))すると、次のような感じに変換できる

以上のことを組み合わせれば、次のような表ができあがります。
機会があれば、せひ活用していきましょう!

