dポイントプレゼントキャンペーン実施中!

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

A 回答 (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

見にくいですが、ここに投稿すると字下げができないようです。
    • good
    • 0

同一かどうかを考えるとき、品物の場合はどう考えますか


。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で処理しますが。
    • good
    • 0

データ不揃いの場合



新シートの同列に2人分のデータをコピーします

全体を選択して「ツール?」-「並び替え」で並び替えます
(住所、名前順がいいかな)

空列(Fとすると)に
   =if(and(B2=B1,A2=A1),"重複","OK")
Bは住所


1行目を選択して
「データ」-「オートフィルタ」でF列▼でOKを選択

「編集」-「ジャンプ」で可視セルを選択。

deleteキーを押下して、「データ」-「オートフィルタ」を取る。

全体を選択して「ツール?」-「並び替え」で並び替えます
(住所、名前順がいいかな)

これでどうでしょうか
    • good
    • 0

if(a1=b1,"○","×")


a1のセルとb1のセルを比較して「同一なら○」「不一致なら×」を表示してくれます。
    • good
    • 0

全く同じだったら


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

新しいシートに2人で入力した住所をたとえば、A列とB列に隣り合わせにコピーして貼り付け、先頭のその横に =IF(A1=B1,"一致","不一致") を入力し、全てのレコードにコピーします。



そうしたら、一致していないレコードには不一致が表示されるので分かりやすいのではないかと思います。

ただ、住所の入れ方には個人差があるので(スペースが含まれていたり)、住所としての内容は同じでも、不一致になるかもしれません。

VBAマクロを使えば、プログラムでもっと柔軟な対応ができるのですが・・・・。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!


このQ&Aを見た人がよく見るQ&A