VLOOKUPをしたくない人生だったのですが、色々ワケあってスプレッドシートを使うこともあるので そんな時に覚えておくと便利な関数でも書いておきます。スプレッドシートは関数型言語です
QUERY
SQLのように色々かけます
=QUERY(
'Sheet1'!A:Z,
"SELECT A, B, C, D, E WHERE A = 'ドラえもん'"
)
WHERE とかGROUP BYとかORDER BYとかLIMIT 1とかできます
JOINをやろうとすると出来ないので爆発します
FILTER
FILTER関数を使うと特定の条件のものを除外した結果を返してくれます。スプレッドシートでフィルタ機能つかっても誰かが勝手にいじって絞り込みがいつの間にか変わってたやんウギャーとかならずに済みます
IMPORTRANGE
別のスプレッドシートからデータを引っ張ってくることができます とあるスプレッドシートと同じデータを使いまわしたい場合や とあるスプレッドシートの内容を確認したいけど直接いじりたくない時とかに便利です
=IMPORTRANGE("https://docs.google.com/spreadsheets/d/xxxxxxx", sheet1!A:Z)
UNIQUE
重複を排除します。これもデータクリーンアップで特定行で重複排除みたいなことをイチイチやらずに関数の組み合わせをしたいときなどに便利です
=UNIQUE(A:A)
ARRAYFORMULA
もう、関数を行数分コピペするなんて嫌なんやという時に便利です。
=ARRAYFORMULA(IF(A:A<> "", "空ではない","空"))
組み合わせると
組み合わせると、こんな感じになんやかんやできます。
A列がユニークなidだとして
- Sheet1のA列の空文字でないところに絞り込み
- 重複を排除したデータをキーとしてVLOOKUP
- 対象のデータ範囲の1,2,3,4,5,6,7番目を列に展開
=ARRAYFORMULA(
VLOOKUP(
UNIQUE(FILTER('Sheet1'!A:A, 'Sheet1'!A:A <> ""))
,'Sheet1'!$A:$Z, {1,2,3,4,5,6,7}
,FALSE
)
)
まとめ
ということで関数型言語、スプレッドシートのお話でした!
でも、やりすぎると関数のネストが深くなって秘伝のタレ化します
なにごとも程々にするのがよいですね
そもそもの、元々のデータを綺麗にしてエクセルワーク的なのは減らしたいですね