メインコンテンツへスキップ
見出し画像

行・列方向に条件が並ぶ表を、行方向のみに条件が並ぶ表に変換する

    タイトルが、あまりうまく言語化できていないかもですが…。

    こんな感じの一覧表って、よく見かけますよね。
    (タイトル行・列に条件が並び、それらの交差部分が対応値になっている表)

    画像

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

    • 例-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)))))
    • すると、次のような感じに変換できる

    画像



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

    画像
    画像
     
     
    品格が一級ではない一級建築士・技術士(建設部門) 何かと「それ数式で出来ますよ」と言いたくなるタイプ (重度のGoogleスプレッドシート依存症)

    あなたへのおすすめ