質問です

エクセルでB列に2行目から6桁の英数文字が毎日追加されていきます
ABC123
BCD321
AB12CD
ABC123  ←赤く表示
過去に同じものがあれば(重複文字)追加された文字が赤く表示されるマクロをお願いします
よろしくお願いします

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2012/11/08 19:06:15
  • 終了:2012/11/09 19:03:20

ベストアンサー

id:Silvanus No.1

Silvanus回答回数174ベストアンサー獲得回数672012/11/08 20:18:58

ポイント60pt

このマクロは、データの追加・更新等の度に実行する必要は無く
対象となるワークシートに対して一度実行すればOK(な筈)です。

Option Explicit

Sub Inoshishi1352369175()

With Range("B3:B65535") ' A
        With .FormatConditions
            .Delete
            .Add Type:=xlExpression, Formula1:= _
                "=NOT(ISERROR(MATCH(RC,R2C:R[-1]C,0)))" ' B
        End With
    .FormatConditions(1).Font.Color = rgbRed
End With

End Sub

データの格納位置等に変更がある場合は、
上記コードの行末に「A」「B」という注釈がある行を変更します。
「A」の行にある"B3:B65535"の部分には
データ格納範囲から「先頭行を除いたもの」を指定して下さい。
つまり、この場合は「B2」を除き「B3」からにします。
最終行(ここでは65535)は、実際にデータ格納範囲が取り得る最小の
値にした方が良いですが、それ程パフォーマンスには影響しないと思います。
「B」の行にある"R2C"の数字の"2"は、データ格納範囲の先頭行を
表しています。この場合は「B2」なので「2」となります。

他10件のコメントを見る
id:inosisi4141

行数を指定できるのが良かったです

2012/11/09 19:01:34
id:Silvanus

そう言っていただけて幸いです!

2012/11/09 19:09:49

その他の回答(1件)

id:Silvanus No.1

Silvanus回答回数174ベストアンサー獲得回数672012/11/08 20:18:58ここでベストアンサー

ポイント60pt

このマクロは、データの追加・更新等の度に実行する必要は無く
対象となるワークシートに対して一度実行すればOK(な筈)です。

Option Explicit

Sub Inoshishi1352369175()

With Range("B3:B65535") ' A
        With .FormatConditions
            .Delete
            .Add Type:=xlExpression, Formula1:= _
                "=NOT(ISERROR(MATCH(RC,R2C:R[-1]C,0)))" ' B
        End With
    .FormatConditions(1).Font.Color = rgbRed
End With

End Sub

データの格納位置等に変更がある場合は、
上記コードの行末に「A」「B」という注釈がある行を変更します。
「A」の行にある"B3:B65535"の部分には
データ格納範囲から「先頭行を除いたもの」を指定して下さい。
つまり、この場合は「B2」を除き「B3」からにします。
最終行(ここでは65535)は、実際にデータ格納範囲が取り得る最小の
値にした方が良いですが、それ程パフォーマンスには影響しないと思います。
「B」の行にある"R2C"の数字の"2"は、データ格納範囲の先頭行を
表しています。この場合は「B2」なので「2」となります。

他10件のコメントを見る
id:inosisi4141

行数を指定できるのが良かったです

2012/11/09 19:01:34
id:Silvanus

そう言っていただけて幸いです!

2012/11/09 19:09:49
id:taknt No.2

きゃづみぃ回答回数13539ベストアンサー獲得回数11982012/11/08 21:07:37

ポイント40pt
Private Sub Worksheet_Change(ByVal Target As Range)
    c = Target.Column
    Target.Font.ColorIndex = 0
    If c <> 2 Then Exit Sub
    b = Target.Value
    For a = 2 To Target.Row - 1
        If Cells(a, "B").Value = b Then
            Target.Font.ColorIndex = 3
            Exit Sub
        End If
    Next a
End Sub


該当シートに記述してください。

id:inosisi4141

ありがとうございました
うまくいきました

2012/11/09 17:24:01
id:inosisi4141

非常に価値ある回答をいただきました

2012/11/09 17:33:01
  • id:gong1971
    参考までに条件付き書式でも出来ますね。

    Excel2010だと、セルB2を選択し、条件付き書式の新しいルールをクリック。
    数式を使用して…を選択し、次の数式を…欄に =COUNTIF($B$2:B2,B2)>1 と入力。
    書式ボタンをクリックして、塗りつぶしで赤を設定する。
    書式のコピーでB2セルをコピーし、必要行数分貼り付けを行えばOK。
  • id:Silvanus
    そうですね。私の回答はそれをマクロでやっているだけです。
  • id:inosisi4141
    gong1971さん
    ありがとうございました
    大変参考になりました
    回答欄に載せていただければポイントを差し上げたい
    と思います

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません