■
A列にあってB列にないものを別領域に取り出す(サンプルファイル)
方法1:関数(メリット:数式を1度設定すれば自動更新して抽出)
方法2:フィルタオプション(メリット:操作が簡単(デメリット:データ更新時に再操作))
■方法1:関数で抽出(INDEX,SMALL,ISNA,ROW)
※サンプルファイルを参考にしましょう。A列にあってB列にないデータを取り出します。
D1に式を入力し、Ctrl+Shift+Enterキーを押して(配列数式)オートフィル
します。
{=INDEX(A:A,SMALL(IF(ISNA(MATCH(A:A,B:B,0)),ROW(A:A)),ROW()),1)}
※0を表示させたくない場合はこちら
【関数の意味】
MATCH(A列,B列,0)…A列を検索値としてB列を検索し位置を返す。B列にない場合は#N/Aエラーを返す。
ISNA(MATCH())…MATCH関数で#N/AエラーならTRUEを返す
IF(ISNA(),ROW(A列))…ISNA関数でTRUEならA列の行番号を返す
SMALL(IF(ISNA(MATCH…)),ROW())…行番号を小さい順に返す
INDEX(A列,行番号,1)…上記関数を行番号に引き渡す=行・列の交差する値を返します。
★
関数紹介 ★
★MATCH(A列,B列,0) … A列を検索値としてB列範囲を探し、なければ#N/Aエラーが帰ります。
★ISNA(式) … 結果が#N/AエラーならTrueを返します。今回はエラーならA列の番号を取得します。
★INDEX(配列) … 指定された行と列の交差する値を返します。
|
■方法2:フィルタオプションを使う
C列に条件式を入力し、D列にTrueの場合の結果を抽出します。
-
C2に条件として=Isna(Match(A2,B:B,0))を入力
→ これはA2を検索値としてB列にマッチすれば配置を出し、なければNAエラーを返します。ISNA関数はNAエラーならTrueを返すので、Trueの場合(Bにない)に値を取得することになります。
-
D1を選択し「データ」→「並べ変えとフィルター」にある「詳細設定」をクリック
-
リスト範囲 →A列(A1:A5)
検索条件範囲→C2の数式と、その上の空白セル(C1)を選択(C1:C2)
抽出範囲→抽出先を「指定した範囲」としてD1を指定して「OK」をクリック
→ D1に取得できます。
※ フィルタオプションについてはこちらもどうぞ。