重複データを取り出す簡単な方法を4つご紹介します。
一瞬で重複チェックするなら条件付書式が簡単です(ですがA列とB列で重複を探す場合、A列だけで重複していても色がつくので注意)COUNTIFで取り出すのも簡単ですし、重複データのみ他領域に取り出す方法もご紹介します(自動更新可能)
★サンプルデータダウンロード
方法1:重複に色を付ける(自動更新OK)
方法2:COUNTIF関数で別領域に抽出(自動更新OK)
方法3:重複データを詰めて別領域に抽出(自動更新OK)
方法4:重複データを別領域に抽出(フィルタオプション)
■方法1:重複に色を付ける
-
データを列選択で範囲選択(列で選択しておくと今後データの増減があっても自動更新可能)
-
「ホーム」→「条件付き書式」→「セルの強調表示ルール」→「重複する値」をクリック
-
「OK」をクリック
→→→
■方法2:COUNTIF関数を使う(自動更新可)
COUNTIF関数では範囲内から検索条件に合致するものの個数を返します。B列の範囲からA列の値を数え、あれば個数(1以上)を返します。関数の世界では1以上はTrue、0はFalseなので、IF関数
にネストしてTrueなら値を取り出します。
=COUNTIF(範囲,検索条件)
=IF(COUNTIF(範囲,条件),真の場合,負の場合)
★1以上はTrue,0ならFalse
●今回の場合は…
=IF(COUNTIF(B:B,A2),A2,"")
★B列の中でAの値の個数を出し、1以上(True)ならAの値を取り出す。
→→→
■ 方法3:重複データ
を詰めて別領域に抽出(自動更新OK)
{=INDEX(A:A,SMALL(IF(COUNTIF(B:B,A:A),ROW(A:A)),ROW()-1),1)}
入力後Ctrl+Shift+ENTERキー
-
INDEX関数は範囲内の指定された行と列の交差する値を返します(INDEX(領域,行番号,列番号))
-
SMALL関数は配列内から指定した順位の値を返します。SMALL(配列,順位)
よってSmall(配列,1)なら1番小さい値を返します。一般的にはSMALL(配列,ROW())とすることでオートフィルすれば行番号が順位として連番になるので使われます。
→→→
★最初にIferror関数を付けると、エラーは表示されません(エラーなら空白)
{=iferror(INDEX(A:A,SMALL(IF(COUNTIF(B:B,A:A),ROW(A:A)),ROW()-1),1),"")}
【関数の意味】
IF(COUNTIF(B:B,A:A),ROW(A:A)),ROW()-1)…B列の中にA列の値の個数を数え、TrueならA列の行番号を返す(タイトル行があるので-1)
SMALL(IF(COUNTIF… 行番号を小さい順に返す
INDEX(A列,行番号,1)…上記関数を行番号に引き渡す=行・列の交差する値を返します。
■方法4:フィルタオプションで別領域に抽出する
フィルタオプションは簡単な式を指定するだけで別領域に取り出せます。
-
条件式としてC2に=Countif(B:B,A2)と入力(B列にAの値があるか)★データの最初のセル(A2)を指定
-
A列から重複データを取り出すので、A列を選択し「データ」タブ→「並べ変えとフィルター」にある「詳細設定」をクリック
-
リスト範囲がA:A(A列)
検索条件範囲…先程条件式を入力したC2と、その上の空白セルを選択(C1:C2)
抽出範囲…抽出先を「指定した範囲」にし、抽出セルをクリックしOKをクリック
★フィルタオプションについては「フィルタオプションで数式を使う方法」も参考にしてください。
|