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

excel2010で顧客名簿を作っているのですが、1人で複数のお客様番号がある顧客がいます。複数の異なるお客様番号を持つ顧客のみを抽出しお客様番号に色を付けるにはどうしたらよいですか?
顧客名簿が複数の項目があり30000件くらいあります。
よろしくおねがいします。
   A      B
氏名   お客様番号
1 青田  1060031
2 秋田  4610012
3 稲尾  1050001
4 遠藤  1040032
5 金井  2200045
6 塚本  3200026
7 東山  2250021
8 青田  100061
9 秋田  9820006
10 稲尾  620020
11 仁志  600041
12 根本  100061
13 野沢  9820006
14 遠藤  1060031
15 豊田  4240005
16 中井  4600008
17 永井  1020082
18 中岡  5400019
19 長島  6520032
20 那須  5330001

質問者からの補足コメント

  • うれしい

    早速ありがとうございます。
    1)青田さんは別人ではなく同じ人です。
    2)その通りです。
    3)初心者ですので、簡単なマクロでおねがいします。

    No.1の回答に寄せられた補足コメントです。 補足日時:2017/08/18 21:53
  • うーん・・・

    早速のご回答ありがとうございます。
    条件式書式でやってみたのですが、同じお客様番号にも色がついてしまいます。
    また、名前ではなくお客様番号に色をつけたいのです。
    よろしくご教授ねがいます。

    No.2の回答に寄せられた補足コメントです。 補足日時:2017/08/18 22:29
  • つらい・・・

    同じ行のお客様番号に着色でお願いします。
    提示した表については、適当に作ったものなので…

    No.3の回答に寄せられた補足コメントです。 補足日時:2017/08/18 23:13
  • へこむわー

    ご丁寧にありがとうございます。
    私のやり方がまずいのか、Elseに対するIFがありませんとエラー表示がでます。
    どうしてでしょう?

    No.5の回答に寄せられた補足コメントです。 補足日時:2017/08/19 09:41

A 回答 (9件)

以下のマクロを標準モジュールへ登録してください。


--------------------------------------
Option Explicit
Public Sub 重複チェック()
Dim dicT As Object
Dim dicF As Object
Dim maxrow As Long
Dim row As Long
Dim key As Variant
Dim val As Variant
Dim i As Long
Set dicT = CreateObject("Scripting.Dictionary")
Set dicF = CreateObject("Scripting.Dictionary")
maxrow = Cells(Rows.count, 1).End(xlUp).row
For row = 2 To maxrow
'パターンクリア
Cells(row, 2).Interior.Pattern = xlNone
key = Cells(row, 1).Value
'同一氏名なら、行番号を追加する
If dicT.exists(key) = True Then
val = dicT(key)
ReDim Preserve val(UBound(val) + 1)
val(UBound(val)) = row
dicT(key) = val
'顧客番号が違うなら記憶する
If val(0) <> Cells(row, 2).Value Then
dicF(key) = True
End If
Else
'顧客番号と行番号を記憶
val = Array(Cells(row, 2).Value, row)
dicT(key) = val
End If
Next
'重複した氏名を処理する
For Each key In dicF
val = dicT(key)
For i = 1 To UBound(val)
row = val(i)
'背景色設定
Cells(row, 2).Interior.Color = 5296274
Next
Next
MsgBox ("完了")
End Sub
---------------------------------------------
名前14は同じ顧客番号なので色を付けません。
顧客番号が違うのが1つでもあれば、全ての同じ氏名の人の顧客番号へ色を付けています。
「excel2010で1人に対して異なる複」の回答画像5
この回答への補足あり
    • good
    • 0

No5です。


念の為、私が提示したマクロをコピペして実行してみましたが、正常に動作しています。
コピペするときに、どこかに漏れがあった可能性があります。
-----------で挟まれた範囲を正しくコピーしてください。(もちろん---------はコピーしてはいけません)

あと、念の為、確認ですが、あなたが提示された例では、1の青田と8の青田の両方のお客様番号に色を付ければ良い訳ですね。
(8の青田のほうのお客様番号だけを望まれている訳ではないですね)
    • good
    • 0
この回答へのお礼

助かりました

できました。
何かしら間違えてたようで…
ご丁寧にありがとうございました。

>あと、念の為、確認ですが、あなたが提示された例では、1の青田と8の青田の両方のお客様番号に色を付ければ良い訳ですね。
(8の青田のほうのお客様番号だけを望まれている訳ではないですね)

そうです。

また、困ったときはお願いします。

お礼日時:2017/08/19 15:46

[No.7]の添付図において、


列Dは無視してください、「適当に作ったものなので…」
    • good
    • 0

[No.3補足]へのコメント、


》 提示した表については、適当に作ったものなので…
困っちゃうなぁ~!、チェックさせられてぇ~!
お願いィ~、お願いィよォ~、テキトーにしないでぇ~!

添付図参照
[条件付き書式]
 ̄ ̄適用先→=$B$2:$B$21
 ̄ ̄適用式→=COUNTIF(A$2:A$21,A2)>1
「excel2010で1人に対して異なる複」の回答画像7
    • good
    • 0
この回答へのお礼

助かりました

何度もありがとうございました。
教えていただいた通りにやってできました。
早速、会社で試してみます。
助かりました。

お礼日時:2017/08/19 09:51

No.4です。



>名前ではなくお客様番号に色をつけたいのです
を見逃していました。
前回はA・B列両方に色を付ける方法でした。

B列を範囲指定 → 条件付き書式 → ・・・中略・・・ → 数式欄の数式を
=AND(COUNTIF(A:A,A1)>1,COUNTIFS(A:A,A1,B:B,B1)=1)

として書式の塗りつぶしから色を選択してください。

※ 前回の数式の「$」マークを消しただけです。m(_ _)m
    • good
    • 0

こんばんは!



横からお邪魔します。
おそらくないとは思いますが・・・
A・B列に万一重複する行があっても対応できるようにしてみました。

A・B列すべてを範囲指定 → 条件付き書式 → 新しいルール → 数式を使用して・・・ → 数式欄に
=AND(COUNTIF($A:$A,$A1)>1,COUNTIFS($A:$A,$A1,$B:$B,$B1)=1)

という数式を入れ → 書式 → 塗りつぶしから好みの色を選択しOK

こんな感じではどうでしょうか?m(_ _)m
    • good
    • 0

》 名前ではなくお客様番号に色をつけたいのです


失礼しました。
私は早とちりで名前に着色しまたが、同じ行のお客様番号の方に着色すればOKですか?それとも着色行が異なりますか?
改めて眺めると「お客様番号」と称しているのに、名前が異なるのに番号が同じものが3組ある(青田/遠藤、青田/根本、秋田/野沢)けど、どういうことですか?

以上の補足を待って、修正回答をしやうかと。
この回答への補足あり
    • good
    • 0

添付図参照


[条件付き書式]
 ̄ ̄適用先→=$A$2:$A$21
 ̄ ̄適用式→=COUNTIF($A$2:$A$21,A2)>1
「excel2010で1人に対して異なる複」の回答画像2
この回答への補足あり
    • good
    • 0

1)提示された例の場合、


青田さんが、2つのお客様番号を持っているように見えますが、
同姓の青田さんで、実は、別人だったというようなことは、ないですか。同姓なら、同じ人として扱って良いのですか。
2)1行目は見出しで、データは2行目以降から、A列が氏名、B列がお客様番号、であってますか。
3)マクロでなら作成可能ですが、それで良いですか。
この回答への補足あり
    • good
    • 0

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