2021年3月22日月曜日

Googleスプレッドシートのフィルタに別シートのListを使ってフィルタしたい

 フィルタするときのフィルタに指定する値を別表に書いているものを使ってフィルタしたいという例があると思います。

例えば、

表1:

A1
B2
C3
D4
B5
A6
B7
C8
C9
D10

表2:

A
B

があり、表1をA,Bでフィルタをかけたいというようなイメージです。


SQLのイメージ的にいうと

SELECT * from 表1 where ID in (SELECT ID from 表2)

みたいなイメージのことをSpreadSheetを使ってやりたいなというところです。


これどうやってやるのが一番簡単なのかちょっといろいろ探ってみたのですが、

おそらく、FILTER関数とMATCH関数を使って実現するのがよさそうです。


書き方は下記の感じです。

=FILTER(フィルタしたい票の範囲,MATCH(フィルタしたい範囲の条件部分,フィルタを掛けたい値の別表,0))

実例はこちらになります。

=FILTER(A1:B10,MATCH(A1:A10,'別表2'!A1:A2,0))


実際のサンプルスプレッドシートはこちらです。

https://docs.google.com/spreadsheets/d/1tSr8mukLFhREQCYxy6gsp2QUz9-Ie6liPV7uHt3fOh0/edit?usp=sharing