アプリ版:「スタンプのみでお礼する」機能のリリースについて

A列に顧客名
B列に住所
C列に電話番号
が入力されているデータがあります。
年賀状を重複しないで送りたい為、重複チェックをしたいのですが、
名前だけのチェックでは同姓同名の別人という場合もあるので、A1、B1、C1を1つのセットとして考え、2行目以降に、ABCのデータが全く同じ顧客がいたら、色や◯で重複していることがわかるための方法を教えてください!

A 回答 (7件)

こんばんは。


なかなか難しいご質問だと思いました。

例えば、「安藤さくら」「安藤 さくら」「安藤 サクラ」
見かけは似ていても、バイナリーでは全部違います。
電話番号も 01 - 1234 - 7890/ 01-1234-7890/01-1234-7890

これらを一般的な方法では同一に扱うことは不可能ですし、真ん中の空白が入っている、入っていないさえ、別ものに扱ってしまいます。住所も含めると、これもパターンで統一の変換しないといけないわけです。

もうひとつ気になるのは、半角・全角の混在で、特にハイフン(-)とと同様の全角・半角文字列や

住所の漢数字とアラビア数字とその一部の全角半角。住所の「番地」「丁目」を入れた書き方とそうでない書き方。

これらを関数ではうまくいくと思えなくなりました。そこで、名前と電話番号ぐらいにして、住所まで入れると逆に精度が落ちるような気がします。また、最低限の置換で、文字列内の全角の空白・半角の空白ぐらいは除去すべでしょうね。

私が昔やっていた方法は、名前が1番で、電話番号が2番でソートを掛けます。
入力がそれぞれの癖があっても、人間の目からは同じか別か判定できるます。2000件程度なら、目でも可能です。削除するものに印を入れていくわけです。

最後に、削除の印をしたものをソートを掛けて削除します。
順番自体を狂わせたくなかったら、インデックスで、1,2,3,...と入れておけば、順番は戻ります。

それと、私は、回答者としてはマクロ専門ですが、さすがに、No.1さんの回答の内容では、どうやってマクロにするのか、分からないですね。曖昧検索をどの程度可能にするかという技術が必要だとは思うのですが、いずれにしても最後は目視による削除しかないように思っています。
    • good
    • 0

添付図が参考になれば仕合せかと。


意味不明ならサヨナラです。
セル G2 に式 =B2&"_"&C2&"_"&D2 を入力
セル F2 に式 =IFERROR(MATCH(G2,G$1:G1,0)-1,"") を入力
範囲 F2:G2 を下方にズズーッとオートフィル
「エクセルです」の回答画像6
    • good
    • 0

こんにちは



一発では出ないけれど、マクロを使わない方法です。

名前はともかく、住所などは内容が同じでも記述方法がいろいろだったりするので、意味として同じか否かをチェックするのはやっかいだと思いますが…
ひとまず、「まったく同じ文字列か否か」で判断して良いものと仮定します。

(1)D列にA~C列を連結したものを作成します。
(邪魔になる場合は、他の列にしたり、非表示列にしておけば良いです)
例えば、D1セルに
 =A1&"§"&B1&"§"&C1
と入力して下方にフィルコピーします。
区切り文字("§")は、住所録に出て来ない文字であれば何でも良いです。
これで、D列の重複をチェックしさえすればよくなりました。

(2)E列に結果を記すものとして
E1セルに
=IF(COUNTIF(D$1:D1,D1)>1,"重複","")
と入力して、下方にフィルコピーします。

この結果、E列には、重複のある行のうち2番目以降に出現する行に「重複」の文字が表示されるようになります。
(重複するもののうち最初に出現する行には何も表示されませんが、多分、それで質問の内容と合っていると思いますので…)
    • good
    • 0

・・・追記・・・



文句を言っちゃダメ。
分からない物を分からないままで済まそうとする態度は褒められたものではない。
ここは、疑問を「自分の力」で解決できるようにするための場所です。
Q&Aってのはそういう物なんですよ。
何かと理由を付けて考えることを後回しにする人が利用する場所ではありません。
    • good
    • 1

D列にA列からC列までの文字列を結合した物を使って、


E列の1行目に
 =COUNTIF(D$1:D1,D1)
と入力して、必要な行まで複製する。
でもって、E列に「2」以上の値が表示されたものが重複しているデータ。
    • good
    • 1

No.1です。



> マクロが全くわかりません。

でしたらここで「これで出来ると思うよ」を示しても、実際に動かして不備が有ったりちょっと機能仕様を変えたいところがあっても何もできません。
そもそも全くわからないのであればExcelのマクロの編集画面を開くこともままならなかったり、開けても教わったソースコードをどう入力し、どう実行すればよいかもわからないでしょう。
それを全てこういった掲示板でやりとりして理解するのは現実的ではありません。

ということで身の周りにいるわかる人に依頼しましょう。
そういう人も居ない場合はExcelの該当表を印刷して目視で先に示したチェック(処理手順の「」部分)を行うのが早いでしょう。
データが数千、数万のオーダーですとそれも非現実的ですが。。。

参考まで。
    • good
    • 0

以下のようなマクロを作成して実行します。



機能:
  他の行と重複する行が無いかチェックし、有ったらその行のD列に〇印を入れる。

処理手順:
 1行目から最終行の1行前の行まで以下の処理を繰り返し行う。

 「対象行の顧客名、住所、電話番号を取り出し、対象行の次の行から最終行までそれらと全て同じ値を持つ行がないかを1行ずつチェックし、有ったらその行のD列に〇印をセットする」

マクロの作り方はExcelマクロの入門書で勉強されたり、同様の解説を行っているWEbサイトのページを利用されるとよいです。
また、Excelのマクロ編集画面のメニューバーにある「ヘルプ」も役立ちます。

参考まで。
    • good
    • 1
この回答へのお礼

うーん・・・

マクロが全くわかりません。
仕事で急ぎだったので、勉強してる時間もありません。

お礼日時:2018/12/07 13:41

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