• 締切済み

エクセルのデータ照合

エクセルで、名前、住所、郵便番号、電話などを順にセルに入力し、1000名分の住所録データベースを作成しました。作成の際に、私と妹で全く同じ住所録別々に入力し、あとで、入力したデータを照合しようと考えていたのですが、どのようにしたらよいのかわかりません。エクセルやワードでデータを照合するような方法は無いのでしょうか?

みんなの回答

noname#215107
noname#215107
回答No.6

私は、エクセル自体はほとんど使ったことが無いので、もっといい方法があるかもしれないのですが、 簡易的なVBマクロを作ってみました。エクセルに詳しい人なら、もっと簡単な方法が使えるかもしれません。 プログラム中のコメントにある条件で、シートを作成し、コマンドボタンを配置してその中に下記のプログラムをコピーして使ってください。 ・全角半角の違いは、見逃す。 ・途中にスペースが入っている/いないは見逃す。 とした条件で、複数の項目の文字列を比較し、結果を返します。 Private Sub cmdCompare_Click() Dim intRow As Integer '行カウンタ Dim intCol As Integer '列カウンタ Dim strWatashi As String '文字列取得 Dim strImoto As String '文字列取得 Dim intWatashiColL As Integer '私が入力した列の左端 Dim intWatashiColR As Integer '私が入力した列の右端 Dim intImotoColL As Integer '妹が入力した列の左端 Dim intImotoColR As Integer '妹が入力した列の右端 Dim intOutput As Integer '結果を出力する列 intWatashiColL = 1 intWatashiColR = 3 'とりあえずA~C列に「私」の入力したデータが入っているとします intImotoColL = 4 intImotoColR = 6 'とりあえずD~F列に「妹」の入力したデータ入っているとします intOutput = 7 'G列に結果を出力 ' intRow = 1 Do strWatashi = "" strImoto = "" For intCol = intWatashiColL To intWatashiColR strWatashi = strWatashi & RemoveSpace(Cells(intRow, intCol)) Next For intCol = intImotoColL To intImotoColR strImoto = strImoto & RemoveSpace(Cells(intRow, intCol)) Next If strWatashi = "" Then Exit Do Cells(intRow, intOutput) = IIf(strWatashi = strImoto, "一致", "不一致") intRow = intRow + 1 Loop End Sub 'スペース除去 Private Function RemoveSpace(strPmtr As String) As String Dim i As Integer Dim strResult As String Dim strChar As String For i = 1 To Len(strPmtr) strChar = StrConv(Mid(strPmtr, i, 1), vbNarrow) strResult = strResult & IIf(Trim(strChar) = "", "", strChar) Next i RemoveSpace = strResult End Function 見にくいですが、ここに投稿すると字下げができないようです。

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

同一かどうかを考えるとき、品物の場合はどう考えますか 。2日前に振った番号を書きとめ、今、目前にある物の番号が書きとめた番号と同じなら、同じと知る。ホテルのクロークのように。 ビジネスでは、このように抽象的な番号を1つ設定して、住所録原資料に振り、それも含めて入力し、その番号を基に、同一か(ミスタイプが無いか)調べます。しかし番号のミスタイプもあり得るので、事は複雑になります。それはさておきます。今回はもう既に入力し終わっているとすると、番号が無いでしょうから、氏名や電話番号を番号代わりにして、考えざるを得ません。しかし氏名も電話番号も同姓同名や同一家族の電話番号のような問題があります。それを覚悟で比較する方法がよい方法が有りますが、プログラム(VBAなど)を組めないと出来ません。 それではと言うことで、Sheet4とSheet5に入力したとして、 タイプ洩れについてSheet4に =IF(ISERROR(VLOOKUP(A1,Sheet5!$A$1:$A$10,1,FALSE)),"なし","") Sheet5に =IF(ISERROR(VLOOKUP(A1,Sheet5!$A$1:$A$10,1,FALSE)),"なし","") で「なし」と2シートに出たものを訂正してください。 これでSheet4とSheet5の氏名が同数になります。正確にはダブりは、両シートに =IF(COUNTIF($A$1:A1,A1)>1,"ダブリ","")でチェックします。 ここで同一氏名の各項目が同一かどうかチェックします。 Sheet4に=IF(B1=VLOOKUP(A1,Sheet5!$A$1:$B$10,2,FALSE),"","相違")と入れて下へ複写します。 B列をしましたが、c、d、e列も同じような式をいれ 第3引き数を、3、4、5・・に増やすようにします。 これで氏名を元にした項目(列)内容が同じかチェックできます。しかしチェック結果式を入れる列が、列数だけ必要です。 私なら、式が一杯になるのがいやで、VBAで処理しますが。

noname#8445
noname#8445
回答No.4

データ不揃いの場合 新シートの同列に2人分のデータをコピーします 全体を選択して「ツール?」-「並び替え」で並び替えます (住所、名前順がいいかな) 空列(Fとすると)に    =if(and(B2=B1,A2=A1),"重複","OK") Bは住所 1行目を選択して 「データ」-「オートフィルタ」でF列▼でOKを選択 「編集」-「ジャンプ」で可視セルを選択。 deleteキーを押下して、「データ」-「オートフィルタ」を取る。 全体を選択して「ツール?」-「並び替え」で並び替えます (住所、名前順がいいかな) これでどうでしょうか

noname#10657
noname#10657
回答No.3

if(a1=b1,"○","×") a1のセルとb1のセルを比較して「同一なら○」「不一致なら×」を表示してくれます。

参考URL:
no
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

全く同じだったら どっちかの列の隣にそれぞれのセルを連結して同じかどうか調べればいいです。 =IF(姉_名前&姉_住所&姉_郵便番号&姉_電話=妹_名前&妹_住所&妹_郵便番号&妹_電話,"","違う")

noname#215107
noname#215107
回答No.1

新しいシートに2人で入力した住所をたとえば、A列とB列に隣り合わせにコピーして貼り付け、先頭のその横に =IF(A1=B1,"一致","不一致") を入力し、全てのレコードにコピーします。 そうしたら、一致していないレコードには不一致が表示されるので分かりやすいのではないかと思います。 ただ、住所の入れ方には個人差があるので(スペースが含まれていたり)、住所としての内容は同じでも、不一致になるかもしれません。 VBAマクロを使えば、プログラムでもっと柔軟な対応ができるのですが・・・・。