365・LibreOfficeなどに関するメモ2022-05-15(Gスプレッドシート)FILTER関数を使ってクロス表から検索するGoogleスプレッドシートGoogleスプレッドシートでのクロス表からの値の検索についてです。INDEX/MATCH関数を使うのが定石ですが、ここではFILTER関数を使った方法を試してみます。FILTER関数を2重にネストすることでクロス表から値を取得することができます。手順B2:E6の範囲がクロス表になっています(メニューの価格表)。G3セルに次のような式を入力することで、「海鮮丼」の「竹」の値段を求めています。G3セル=FILTER(FILTER(B2:E6,B2:B6="海鮮丼"),B2:E2="竹")まず内側の「FILTER(B2:E6,B2:B6="海鮮丼")」により「{"海鮮丼",2400,2000,1600}」という配列が得られます。この段階で最上段の見出し列が失われるので詰んでしまうような気もしますが、さらにFILTER関数を重ねて「B2:E2="竹"」という条件を付ければ無事に2000という値が抽出されます。FILTER関数では取得対象({"海鮮丼",2400,2000,1600})が検索値(竹)を含んでいる必要はない、というのがポイントです。よって3か所の参照先については範囲を縮小することができ、このようにしてもOKです。厳格にはこちらが正解でしょうけども、直観的に上記の式の方がわかりやすいかとは思います。G3セル=FILTER(FILTER(C3:E6,B3:B6="海鮮丼"),C2:E2="竹")なおINDEX/MATCHと異なり複数の値を取得する可能性がありますが、最も左上のマッチを取得したい場合はさらにINDEX関数で囲んで「INDEX(~,1,1)」とします。ちなみに、単純にAND検索でいければ大変便利なのですが、これはうまくいかずエラーになります。*演算子を使っても同じです。365はデスクトップ版、LibreOfficeは記事作成時の安定バージョンを用いた結果を示しています。サイトポリシー等についてはこちらをご覧ください。(1)検索スポンサーリンク引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。