リストと表
順次増えていくものごとをリストしていく場合、増えた分をどんどんリストに追加していくと楽だ。
ある程度リストがたまると、今度はそのリストを分類したくなる。そのばあいは表にまとめると便利だ。
例えば、メンバーの情報を整理したリストから、グループごとの表をつくりたいとする。
あるいは、机の文房具を使った記録をつける。日付、利用した文房具、使用して作成したもののリストを作る。表にまとめる場合は、文房具ごとに利用した機会をn番目ごとにまとめる。
こういうばあい、リストを表に変換するプロセスが必要だ。ピボットテーブルを使えば良いようなものでもあるけれど、ピボットテーブルはなんだか使いにくくて好きになれない。余計な情報が加わりすぎるということと、数値の利用に特化している印象がある。
Google Sheetsでこの機能を実現する方法を簡単にメモしておく。
方針
表の縦軸をつくる
グループを表にするときに、縦軸は分類項目とする。 色別リストとか、グループ名のリストなどである。
これには、unique関数を使うが、空行を削除する処理が必要だ。 そこで、filterコマンドをかます。
=unique(filter(A2:A,A2:A<>""))
とする。 この関数を作りたい表の見出し列とする。仮にD列に作成するとすれば、D3あたりにこの関数を入れておく。 そして、2行目は横見出しを入れる。
検索する範囲をA2:Aと指定するのは、一行目には普通見出しが入るから、それを除外するためだ。
横軸をつくる
横軸には、リストから対応するグループの要素を追加していく。
普通はvlookupを使うが、vlookupでは、同じリストに同じ要素があるばあいは対応できない。
今回は、リストの上から順にN番目をN列目におく。
そこで、次のようにする。 エクセル関数の説明をしているサイトがある。
まずは、準備として一行目に番号をつけておく。 リストの上から一番目にみつかったものを表の一列目、二番目にみつかったものを二列目というふうにする。 実際には、見出し列の隣りから一列目と考えるので、その上に1を記入し、そこから右へ順に2、3、と数字を入れる。
ここでやりたいことは、表の左列の見出しに該当する要素をA表から抽出し、
= IFERROR(INDEX($A:$A,SMALL(IF($B:$B=$D3,ROW($B:$B)),E$1)),"")
この数式をE3に記入し、右と左にコピーすれば、表の完成だ。