Google Spreadsheet の関数 filter, unique, join

ちょっとした計算表や管理表を作るために Google Docs のスプレッドシートをよく使っています。複数の関数を組み合わせることで希望どおりの形でデータを表示できた例があったので紹介してみます。

↓こういう表から、各月ごとに 1 件以上申し込みがあった人の氏名をカンマ区切りで表示してみます。

表 1

↓得たい結果はこういう感じです。

表 2

結論から言うと表示させたいセルに下記の式を入力すれば OK です。

=join(",", unique(filter($C$2:$C$50, $A$2:$A$50 = "2014/03")))

filter 関数

まず filter 関数で範囲内から条件に合致したデータを取得します。

=filter( 範囲 , 条件 )

条件が TRUE になるデータを返します。

例えば、以下の式を入力すると、

=filter($C$2:$C$50, $A$2:$A$50 = "2014/03")
表 3

こうなります。 これだと複数の商品を申し込んだ人はその回数分だけ表示されてしまいます。

unique 関数

次に unique 関数でデータの重複を取り除きます。

=unique( 範囲 )

以下の式を入力すると、

=unique(filter($C$2:$C$50, $A$2:$A$50 = "2014/03"))
表 4

こうなります。 これだと複数行にわたって表示されてしまいます。

join 関数

最後に join 関数でカンマ区切りで結合します。

=join( 区切り文字 , 値または配列 )
=join(",", unique(filter($C$2:$C$50, $A$2:$A$50 = "2014/03")))

これで上述の結果が得られます。 単機能の関数を組み合わせて処理していくのは UNIX コマンドと似ている感じがしますね。