Chiquilin Site■05.10.29_Excel:複数条件での検索/抽出方法

その1:複数条件での検索方法について
その2:検索方法の色々
その3:各種方法のメリット・デメリットを知る

その1:複数条件での検索方法について

複数条件で計算する方法は色々あります。作業列を使って全てを繋いでから LOOKUP系の関数や INDEX/MATCH関数を使う方法・データベース関数を使う方法・配列数式などなど。外部データの取り込みを使うという手もあるかもしれません。検索結果が数値だったら SUMIFS関数でもいいでしょう。 Micorosoft365なら FILTER関数や XLOOKUPでやってもいいです。
例えば下のような時、あなたならどんな方法を使うでしょうか?
F37セルにどんな数式を入れますか?
とりあえず 私ならデータベース関数を使います。ただ38行目以降にも別の条件に従ったデータを抽出しようとする場合には 別の方法を考えます。
→参考ファイル(013.xlsx)
ページの一番上へ

その2:検索方法の色々

★作業列を使う方法
■G3セル
 =B3&C3&D3&E3
 フィルハンドルをダブルクリック
 列を非表示
■F36セル
 =INDEX(F3:F34,MATCH(B37&C37&D37&E37,G3:G34,))
★データベース関数を使う方法
■F36セル
 =DGET(B2:F34,5,B36:E37)
★配列数式を使う方法
■F36セル
 =INDEX(F3:F34,MIN(IF((B3:B34=B37)*(C3:C34=C37)*(D3:D34=D37)
*(E3:E34=E37),ROW(1:32))))
 Ctrl + Shift + Enter で確定
★SUMPRODUCTを使う方法
■F36セル
 =INDEX(F3:F34,SUMPRODUCT((B3:B34=B37)*(C3:C34=C37)*(D3:D34=D37)
*(E3:E34=E37)*ROW(1:32)))
 普通に Enter で確定
★AGGREGATEを使う方法(Excel2010以上)
■F36セル
 =INDEX(F3:F34,AGGREGATE(15,6,ROW(1:32)/(B3:B34=B37)/(C3:C34=C37)
/(D3:D34=D37)/(E3:E34=E37),ROW(A1)))
 普通に Enter で確定
★MMULTを使う方法
■F36セル
 =INDEX(F3:F34,MATCH(4,MMULT((B3:E34=B37:E37)*1,{1;1;1;1}),))
 普通に Enter で確定
ページの一番上へ

その3:各種方法のメリット・デメリットを知る

それぞれの方法は やり方次第では非常に便利ですが 状況に応じて使い分けないと 様々な不備が生じる恐れがあります。
●作業列を使う方法
長所 ・配列数式より処理が速い
・メンテナンスがしやすい
短所 ・表が煩雑になる可能性あり
 
●データベース関数を使う方法
長所 ・数式が短く簡潔になる。
・メンテナンスしやすい
短所 ・条件式が必須
・重複するデータがある場合にエラーが返る。
・下方向に連続して入力できない
参照: データベース関数で検索する
 
●配列数式を使う方法
長所 ・データが重複していても計算できる。
・作業列不要。
短所 ・処理が重い。
・「Ctrl + Shift + Enter」が面倒。
・メンテナンスしづらい。
 
●SUMPRODUCTを使う方法
長所 ・数式だけで解決できる。
・「Enter」で確定できる。
短所 ・重複するデータがある場合は正しい結果を返さない。
・メンテナンスしづらい。
・式が長くなる。
 
●MMULTを使う方法
長所 ・条件が増えても短い数式で解決できる。
・「Enter」で確定できる。
短所 ・メンテナンスしづらい。
・検索条件に融通を利かせにくい
その場その場で有効な方法を 考えて使っていただきたいと思います。
関連:Excel 複数条件での合計/カウント
関連:Excel 抽出データを詰めて表示する(条件抽出)
ページの一番上へ
ChiquilinSite トップページへ  Copyright(C) Chiquilin_site. All Rights Reserved.
inserted by FC2 system