Excelでは大量のデータを扱います。渡されたデータをそのまま使えれば良いのですが、場合によってはその中に重複があるかを確かめてからでないと、処理に移れないことも。目視によって確認するのはさすがに無理ですので、効率よく重複データの有無を確認する方法と、重複データを削除の方法を覚えておきましょう。
重複データがあると処理がうまくできないことも
Excelの集計機能は大変優れていますが、重複するデータがあることによってうまく機能しないこともあります。
たとえば、VLOOKUP関数。
VLOOKUP関数は、「探したいデータ」を指定すると、指定範囲の左端の列を検索して、一致するものがあれば、そのセルから指定した数だけ右に移動したセルのデータを、表示させることができます。
(例)
「新聞図書費」を「探したいデータ」に指定して、表全体を「調査する範囲」に指定します。
「調査する範囲」の一番左端の列を縦に調べて、「探したいデータ」と一致するものがあれば、
指定したセルの数(ここでは「4」)だけ、
一致したセルから、右に進んだセルのデータを表示してくれます。
VLOOKUP(J8,$J$5:$Q$10,4,0)と入力した結果が、次の図です。
「新聞図書費」で一致したデータから、右に4つ進んだセルにある「アンチェロッティの完全戦術論」が表示されています。
これが、VLOOKUP関数の動きです。
VLOOKUP関数は、大量のデータの中から該当するデータを探し出し、必要なデータを転記する場合に役立つものですが、欠点もあります。
それは、「探したいデータ」に重複がある場合。
先ほどの表をもう一度見ていただきたいのですが、
調査する範囲の一番左端の列には、「新聞図書費」が2つ入力されています。
この時、VLOOKUP関数を使うと、最初の「新聞図書費」にはVLOOKUP関数が反応するのですが、2つめの「新聞図書費」には到達しません。1つめで止まってしまうからです。
ですので、VLOOKUP関数を使って該当するデータを全て、抽出するようなケースでは、VLOOKUP関数で処理を行う前に、重複するデータがないかどうかを調べる必要があります。
また、手動で表を作成する場合には、同じデータを2度入力してしまうエラーが考えられます。そのようなエラーのチェックをかけるためにも、重複データの有無を確認するのは有効です。
重複データを確認するには、「COUNTIF関数」を使います。
重複データの有無を調べる
重複データの有無を調べるには、「COUNTIF関数」を使います。
COUNTIF関数は、
このような関数です。
が、説明だけでは分からないので、先ほどの表を使って、具体的に試してみましょう。
①範囲の指定
調べたいのは、表の左端にある「科目」の列に、重複したデータがないかどうか。
なので、範囲はL列のL3セルからL8セルを指定します。
なお、「会議費(=L3セル)」以外の科目についても、重複を確認したいので、
COUNTIF関数をコピー&ペーストしても、指定範囲のセルが移動しないように(L3セルからL8セルのままになるように)、絶対参照($マーク)になっている点に注意して下さい。
②数えたいデータ
次に、数えたいデータは、「会議費」「新聞図書費」と言った、「科目」の列に入力されているデータなので、L列のセル(「会議費」ならL3セル)を入力します。
こちらは、COUNTIF関数をコピー&ペーストすることで、セルを移動させたいので(「会議費=L3セル」→「通信費=L4セル」→「新聞図書費=L5セル」)、相対参照($マークがついていない)になっている点にご注意下さい。
COUNTIF関数の入力結果
以上のように入力されたCOUNTIF関数の結果は、
「1」と表示されまれました。このことの意味は、
青枠で囲んだ範囲で、「会議費(=L3セル)」の数は1つだけ。
つまり、「重複はない」
ということです。
それ以外の科目についても、重複の有無を確認するために、COUNTIF関数をコピー&ペーストします。すると、
「会議費」「通信費」「旅費交通費」は「1」で重複がありませんが、「新聞図書費」は「3」で、指定したL3セルからL8セルの範囲内に3つの重複があることが分かりました。
このようにして、COUNTIF関数を使い、重複の有無を確認します。
範囲指定の方法を、「始点:絶対参照」「終点:相対参照」に変えてみる
以上の方法で、データの重複の有無を確認することはできるのですが、先ほど使ったCOUNTIF関数の「①範囲」の指定方法を少し変えると、新たなデータを取得することができて、そのデータを別の場面で生かすことができます。
応用を利かせやすい方法ですので、余裕のある方はこちらの方法でも範囲指定できるようになっておきましょう。
先ほどの範囲指定では、絶対参照を使って入力していました。
こうして入力したCOUNTIF関数をコピー&ペーストしたセルでは、
指定したデータが指定範囲内で、合計いくつ含まれているか、
を数えることになります。
これはこれでいいのですが、範囲指定の方法を変えると、別の結果が出てきます。
それは、範囲の始点のセル(L3セル)は、絶対参照にしてコピー&ペーストしても、動かないようにして、
終点のセルを、相対参照にしてコピー&ペーストで移動するようにするのです。
つまり、
このように指定します。
そして、最初に入力した関数(=COUNTIF($L$3:L3,L3))を、L列にコピー&ペーストしていきますが、K5セルにコピーすると、範囲の始点はL3で、終点はL5に、
K7セルにコピーすると、範囲の始点はL3のままで、終点はL7に、
K8セルにコピーすると、範囲の始点はL3のままで、終点はL8に、
と、コピーしたセルに応じて終点が移動することになります。
こうしておくと、重複の有無だけでなく、「そのデータが、上から順番に数えて何番目のデータか」まで表示してくれます。
これなら、重複の有無だけでなく、何番目に出現したデータかも分かるため、データの使い方に幅ができて、利用できる範囲が広がるのです。
絶対参照の方法だけでなく、「始点:絶対参照、終点:相対参照」による範囲指定の方法も、できるようになっておきましょう。
重複するデータを削除する
次は、重複のあるデータを削除する方法です。
目視で重複を確認して、該当するものを削除といった、個別の処理をしなくても、削除することができます。
重複を確認したいデータの範囲を指定します。
ドラッグ(マウスをクリックした状態で移動させる)で範囲指定しても良いですが、データの量が多くなると効率が悪いので、
「Shift+Ctrl+矢印キー」
のショートカットで指定します。
次に「データ」タブの「データツール」にある「重複の削除」をクリック。
「重複の削除」画面が開くので、条件を入力します。
画面では全ての列が表示され、チェックが入れられるようになっています。
これは、
「チェックを入れた列を対象にして重複を確認して、重複があれば削除する」
ことを意味しています。
たとえば、「科目」だけにチェックを入れるとします。
すると、「新聞図書費」で3つデータが重複しているので、最初の1つを残して、残りの2つが削除されます。
次に、「科目」と「日付」の2つにチェックを入れます。
複数の列にチェックを入れた場合は、データの重複がチェックを入れた両方の列で共通している時に限って削除が実行されます。
なので、「新聞図書費」で重複している3つのデータのうち、「日付」でも重複しているのは2つだけなので、両方で重複している2つだけが、削除の対象となり、
最初のデータが残され、後のデータが削除されます。
このように、「重複の削除」を利用すれば、簡単に重複するデータを削除できます。
たとえば、重複がおこるはずがない、全従業員の給与データを扱う場合などに、この方法が力を発揮します。
ただし、1点だけ注意を申し上げておくと、最初の範囲指定は確実に行うようにして下さい。
重複の削除は、適当にセルを指定しておけば、Excelの方で勝手に範囲を指定してくれるのですが、意図した通りの範囲ではないことがあるからです。
たとえば、縦に長く続くデータの中で、1行だけブランクがあるような場合、Excelはそこがデータの切れ目と判断して、それ以降を対象から外す可能性があります。
それでは正しく重複を判断することができませんから、そのような範囲指定の漏れを防ぐために、確実に範囲指定することを心がける必要があるのです。
まとめ
データの重複のチェックはCOUNTIF関数を使うと便利です。
範囲指定の方法は絶対参照だけでなく、終点だけを相対参照にする方法で、「何番目のデータか」を表示することもできるので、2つの方法を使えるようになっておきましょう。
おまけ
日中に1時間程度ランへ。
iPhoneで東京以外のラジオ局を聞いていると、見えている風景と、耳から入る情報が一致せず、一瞬、自分がどこにいるのか分からなくなりました。
人間の脳は(自分の脳だけ?)、簡単にダマされてしまうようです。