• ベストアンサー

Excelで重複チェックの方法

重複データのチェックについて教えてください。 シート1にA支店の顧客データ、シート2にB支店の顧客データがあります。シートの構成は、A列に名前、B列に電話番号があります。 これで、A支店に顧客登録されていて、同じくB支店にも登録されている人を選び出し、支店間で同一人物を登録しないようにしたいのですが、どのようにしたら良いでしょうか。 私が考えるにはA列の名前でVLOOKUPを使えばいいと思うのですが、これだと同姓同名のダブりチェックが出来ないですね。名前が同じなら電話番号で比較しようと思うのですが、良く分かりません。 シート1のA支店を基準にしてシート2のB支店と比較し、重複していれば仮にC列に「重複」と表示させる。 ・・・としたいのですが、どなたか教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.5

(テストデータ)Sheet1のA1:B7 a 2 b 3 c 2 d 2 e 2 f 2 a 2 Sheet2のA1:B8 w 1 e 2 r 1 t 3 b 3 y 5 u 2 a 2 (コード)標準モジュールに貼りつけ実行する。 Sub test01() Dim c As Range Dim sheet1 As Worksheet Dim sheet2 As Worksheet Set sheet1 = Worksheets("sheet1") Set sheet2 = Worksheets("sheet2") d = Worksheets("sheet2").Cells(1, "A"). _ CurrentRegion.Rows.Count Worksheets("sheet2").Activate For i = 1 To d y = Worksheets("sheet2").Cells(i, "A") For Each c In sheet1.Range("a1:a7") If c = sheet2.Cells(i, "A") And c.Offset(0, 1) = _ sheet2.Cells(i, "B") Then sheet2.Cells(i, "c") = "重複" Else End If Next Next i End Sub (結果)Sheet2のC列のC2,C5,C8に重複と出ます。 (注意)貴殿の表で実行する場合は (A)表が大きくなった時どこを変えるべきか判りますね sheet1.Range("a1:a7")のところを変えること。 (B)Sheet2の表の開始行が第1行でないとき d = Worksheets("sheet2").Cells(1, "A"). の1を変えること。

take4-007
質問者

お礼

詳しく教えていただいてありがとうございます。 NO.3の方法と供に試してみようと思います。

その他の回答 (4)

noname#4136
noname#4136
回答No.4

初めまして。 まずシート1と2のC列に =a1&b1 という感じで名前と電話番号を結合させた列を作ります。 この列は重複チェック用のキーワードになります。 普段は必要ないと思いますので、完成したら非表示にすればいいです。 次にD列に重複していた場合の”重複”の文字を出すようにします。 このためにはIF関数とCOUNTIF関数を組み合わせると良いでしょう。 具体的には =IF(COUNTIF(範囲,検索条件>=1,"重複","") =IF(COUNTIF(Sheet2!C1:C3,Sheet1!C1:C3)>=1,"重複","") となります。範囲は仮にC1:C3としています。 COUNTIF関数で同じ物が1以上あれば、重複です。 おわかりになったでしょうか。

take4-007
質問者

お礼

とても詳しい説明ありがとうございます。 名前と電話番号を結合するのですね。 これだと、1列増えることになり、ファイルのサイズが大きくなってしまうと思い、できれば避けたいと思っていました。他の方が言われているVBAと一緒に試してみます。

  • AQUALINE
  • ベストアンサー率33% (18/53)
回答No.3

VBAでも簡単に検索可能です。 以下をコピーして標準モジュールに張付け、実行してみてください。 なお、データは途中に空白行がないものとします。 Sub CHECKTEST() Dim 最終行1, 最終行2 As Integer Dim 行1, 行2 As Integer 最終行1 = Worksheets("Sheet1").Range("A1").CurrentRegion.Rows.Count 最終行2 = Worksheets("Sheet2").Range("A1").CurrentRegion.Rows.Count For 行2 = 2 To 最終行2 For 行1 = 2 To 最終行1 If Application.WorksheetFunction. _ Trim(Worksheets("Sheet2").Range("A" & 行2)) = _ Application.WorksheetFunction. _ Trim(Worksheets("Sheet1").Range("A" & 行1)) Then Worksheets("Sheet1").Range("C" & 行1) = "名前が一致" Worksheets("Sheet2").Range("C" & 行2) = "名前が一致" If Application.WorksheetFunction. _ Trim(Worksheets("Sheet2").Range("B" & 行2)) = _ Application.WorksheetFunction. _ Trim(Worksheets("Sheet1").Range("B" & 行1)) Then Worksheets("Sheet1").Range("D" & 行1) = "電話番号も一致" Worksheets("Sheet2").Range("D" & 行2) = "電話番号も一致" End If End If Next 行1 Next 行2 End Sub

take4-007
質問者

お礼

ありがとうございます。 No..5の方法と両方試してみようと思います。 勉強になりました。

  • vantage
  • ベストアンサー率60% (310/514)
回答No.2

思いついただけなので、もっときちんとした方法は他にあるのでしょうが・・・ とりあえず C列に[名前]&[電話番号]のデータを作って比較してみればいかがでしょう?

take4-007
質問者

お礼

ありがとうございました。

回答No.1

シート3にA支店のデータとB支店のデータを同じ列にコピーして、並べ替えすれば、重複のは2回出てきます。それをピックアップすればいいではないでしょうか? ちなみにデータのほうに名前、電話番号以外に支店の列を設けると、もっと分かりやすいはないでしょうか?

take4-007
質問者

お礼

ありがとうございます。

関連するQ&A

  • エクセルで重複のチェックをしたい

    初心者なので、拙い内容ですが教えてください。 ・エクセル2003 二つのシートにそれぞれA列に企業名、B列に支店名、 C列に郵便番号、D列に住所が入力されています。 二つのシートはほぼ同じ内容で、シート1は3000件の全データ、 シート2は抽出された1300件のデータが入力されています。 やりたいことは3000件のうちの1300件の重複データを シート1の全データの空白列に「重複」や  重複データには行に色をつけて表示させる、などとにかく 重複をわかりやすく表示させたいのです。 過去ログみましたが、いまいち理解できませんでしたので わかりやすく教示してくださると助かります! ちなみに二つのデータをひとつにし、フィルタオプションの 「重複するレコードは・・」は検討違いだったようでうまくいきませんでした・・ ひとつの列に対する重複チェックは理解できたのですが.. 支店によって住所が違ってくるので、たちどまってしまいました。

  • 2シート間の重複データのチェックについて質問です!

    2シート間の重複データのチェックについて質問です! まず、以下のように二つのシートがあるとします。 【シートA】 A列     B列 登録あり  あああ社 登録なし  いいい社 登録あり  ううう社 登録なし  えええ社 登録あり  おおお社 登録なし  かかか社 【シートB】 A列     B列       あああ社       いいい社       えええ社       おおお社       かかか社       さささ社 やりたいのは、シートAのB列の社名がシートBのB列と重複しており、且つシートAにて登録ありの社名のみシートBのA列に「登録あり」とチェックする・・・ということです。 要するに、 以下のようにしたいのです。 【シートB】 A列     B列 登録あり  あああ社       いいい社       えええ社 登録あり  おおお社       かかか社       さささ社 ちなみに、シートAは5000社、シートBは10000社以上あります。 ここでシートAとシートBを比較し、登録ありの重複データをシートBにてチェックしたいということです。 説明がややこしくて大変申し訳ありません。 どなたか教えていただけませんでしょうか? 何卒よろしくお願いします。

  • エクセル2010での重複データチェック

    エクセル2010で作成したデータの重複データチェックをしたいです。 顧客コードと、接触日 の両方とも同じデータが入っていれば 最初に出てきた行に1回目 再度出てきたデータ行に重複と表示したいです。 シートの項目(見出し)は下記のようになっています。 A列:顧客コード B列:顧客名 C列:接触日 D列:面談要旨 F列:結果 皆様、年末のお忙しいところ申し訳ありませんが、ご教示ください。 上記説明では、わかりにくいかと思い、スクリーンショットも添付いたします。 よろしくお願いいたします。

  • Excel 2007 重複データのチェックについて

    Excel 2007 重複データのチェックについて A列にあるデータ(約100件)で重複している値がある 行についてB列にフラグをつけます。 やりたいことはどの行とどの行が重複しているのかを すぐに分るようにしたいです。 添付画像のように重複している行に番号をつけていくことは可能でしょうか。 番号は1から順番に増えていきます。 自分は下記を考えましたが、これでは重複している行に「重複データ」と入る だけでわかりづらいです。 =IF(COUNTIF($A$2:A2,A2)>1,”重複データ”,”○”) よろしくお願いいたします。

  • Excel マクロ 重複チェックについて

    Excel マクロ 重複チェックについて Sheet3のA列とB列に製品番号が入っています。 A列とB列を比較して、A列と同じ番号がB列に2個以上ある場合のみ C列にフラグ「1]を入れたいです。 Sub RetsuCheck() Dim i As Long Dim ws1 As Worksheet Set ws1 = Worksheets("Sheet3") '「Sheet3」シートでA列とB列の重複をチェック。 For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row If ws1.Cells(i, "A") = ws1.Cells(i, "B") Then ws1.Cells(i, "C") = 1 End If Next i End Sub 1個の場合には上記マクロで解決するのですが、 2個以上の場合にどうようなマクロを記載すればよいのか アドバイスを頂けませんでしょうか。 よろしくお願いいたします。

  • 「エクセル」で重複したデータだけを呼び出したい。

    「Excel2000」を使用しています。 「重複しているデータだけ抽出する」 ということは出来るでしょうか? たとえば「A列」に名前が入っていて、 「B列」に住所、「C列」に電話番号が 入っているとします。 重複した名前だけを呼び出して、 なおかつ「B列」「C列」の データも表示させたいのですが…。

  • 重複データのチェック方法がわかりません。

    はじめまして。エクセル・アクセス関係を最近さわりはじめました。 下記について重複しているデータをチェックしたいのですが、いろんなサイトをみても「これ!」というのが見当たらず困っています。どのような式を作成すればよいのか、ご教授ください。 ちなみに今はMATCH関数を使いながら、データを並び替え・・とすごく面倒なことをしています。 顧客ID     請求番号       登録日 1111       0001         2010/01/01   1112       0001         2011/11/11   1113        0002         2010/02/01   1113       0003     2011/01/01   1114       0004     2011/01/01   1114       0005     null         上記の顧客データあるとします。 顧客IDや請求IDが重複しているものがあるため、これらを最終的には下記(<最終形態>)のようにしたいのですが、その前に横の列にチェック(<チェック>)をいれたいです。 <最終形態> 顧客ID     請求番号       登録日 チェック 1112       0001         2011/11/11    残し 1113      0003     2011/01/01       残し 1114      0004     2011/01/01       確認 1114      0005     null            確認 <チェック> 顧客ID     請求番号       登録日       チェック 1111       0001         2010/01/01     削除   1112       0001         2011/11/11     残し 1113       0002         2010/02/01     削除 1113      0003     2011/01/01        残し 1114      0004     2011/01/01        確認 1114      0005      null              確認 (1)請求番号が同じで顧客IDが異なり、登録日も違う場合は、登録日が新しいほうに「残し」、古いほうに「削除」を入れる (2)顧客IDが同じで請求番号が異なり、登録日も違う場合は、登録日が新しいほうに「残し」、古いほうに「削除」を入れる (3)顧客IDが同じで請求番号が異なる、あるいは請求番号が同じで顧客IDが異なり、登録日がnull(どちらか一方でも)の場合は、「確認」を入れる→登録日がともに同じ日付でも「確認」を入れる ※ちなみに、実際の重複するデータは上記のように連続して入っていません。 順序はばらばらです※ エクセルでもアクセスでもかまいませんが、やりやすいほうでご教授いただけると幸いです。 よろしくお願いします。 SQLはよくわかっていません。。 最初から教えていただけると幸いです。

  • ◆◆急募◆◆ エクセル 重複するデータの抽出について

    データの入力された2枚のA、Bシートが同じブックにあります。 <Aシート> D2~D500まで顧客番号が入力されています。 <Bシート> C2~C600まで顧客番号が入力されています。 AシートとBシートの顧客番号はいくつか重複しています。 その重複している番号をBシートのどこかのセルに”重複”と表示したいのですが、その方法が分かりません。最終的にオートフィルタで重複と重複していないものを分けたいのです。 大至急教えてください!宜しくお願いします。

  • 23歳の事務をやっているOLです。エクセルでの重複データ抽出についての

    23歳の事務をやっているOLです。エクセルでの重複データ抽出についての質問です。仕事で2つのデータから重複データを抽出しないといけなくなったのですが、エクセルはよくわからないので質問させてください。データには顧客番号と名前が入っています。   A列    B列 1 顧客番号  名前 2 1234   田中太郎 3 2345   鈴木一郎 4 3456   佐藤次郎 5 4567   伊藤三郎 6 5678   吉田四郎 ・ ・ ・ データの形式は2つともこのような感じです。 データAには約1,000件のデータがあり、データBには約300件ほどのデータがあります。 AとBの顧客番号が重複している人の顧客番号と名前を上と同じような感じで別のファイルに表示させたいのですが、どうやってやったらいいのかわかりません>< 助けてください。 どうかよろしくお願いします。

  • Excelで隣り合う列にあるデータの重複チェック

    Excelで同一のシート上の隣り合う列に入力されたデータの重複チェックをする方法が知りたいです。 例:A1とB1にそれぞれデータ(長文もあり)が入っていて、それぞれのデータが重複していればC1に「重複あり」などと表示させるための数式が知りたいです。 いろいろとやってみたのですが、どうもうまく行きません。 よろしくお願い致します。

専門家に質問してみよう