Vbaで重複した値を強調表示するにはどうすればよいですか?
大きなデータを扱う場合、値の重複が常に問題になります。ほとんどの場合、私は重複の削除オプションを使用してこれらの値をすべて削除します。そして、きっとあなたも同じことをするでしょう。
ただし、これらの重複値を削除したり、単純にカウントしたりしても問題は解決されません。重要なことは、重複する値をすべて削除する前に調べることです。
はい、それは本当だ。これらの値をすべて強調表示したら、それらを確認して削除できます。今日のこの記事では、重複した値を強調表示するための 4 つの異なる VBA コードを共有したいと思います。
そして重要なのは、これらのコードはさまざまな方法でセルを強調表示できるということです。これらをコピーして VBA エディタに貼り付けるだけで使用できます。
1. すべての行で
この VBA コードは、行内のすべてのセルをチェックし、行内で重複しているすべてのセルを強調表示します。簡単に言うと、行に値「522」が 2 回ある場合、その行は重複しているとみなされます。ただし、他の 522 が別の行にある場合は、一意とみなされます。
Sub DuplicateValuesFromRow() 'Declare All Variables. Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count Number of Rows and Columns myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop Each Row To Check Duplicate Values and Highlight cells. For i = 2 To myRow Set myRange = Range(Cells(i, 2), Cells(i, myCol)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub
このマクロを見ると、ループを使用して各行の重複値をチェックし、それらを色で強調表示していることがわかります。
注意事項
- データに空白の行や列を含めることはできません。空白の行や列を含めると、そのセルは無視されます。
- データの開始セルはセル「A1」である必要があります。また、開始点を調整したい場合は、コードを調整する必要があります。
- データシートの最初の行と最初の列はヘッダーである必要があります。
2. 各列で
この VBA コードは、列内のすべてのセルをチェックし、各列で重複しているすべてのセルを強調表示します。簡単に言うと、列に値「231」が 2 回ある場合、その列は重複しているとみなされます。ただし、別の「231」が別の列にある場合は、一意とみなされます。
Sub DuplicateValuesFromColumns() 'Declare All Variables Dim myCell As Range Dim myRow As Integer Dim myRange As Range Dim myCol As Integer Dim i As Integer 'Count number of rows & column myRow = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count myCol = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count 'Loop each column to check duplicate values & highlight them. For i = 2 To myRow Set myRange = Range(Cells(2, i), Cells(myRow, i)) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next Next End Sub
3. 選択範囲内
選択範囲から重複した値を持つセルを強調表示したい場合は、このコードが役に立ちます。このコードを使用するには、セル範囲を選択してこのコードを実行するだけです。選択されている各セルをチェックし、セルに重複する値がある場合は赤で強調表示します。
Sub DuplicateValuesFromSelection() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Selection For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub
4. 整数データ
大規模なデータ セットがある場合は、このマクロ コードを使用してデータの完全性を確認し、重複する値を強調表示できます。このコードは各セルを 1 つずつ調べて、重複しているすべてのセルに赤色を適用します。
Sub DuplicateValuesFromTable() Dim myRange As Range Dim i As Integer Dim j As Integer Dim myCell As Range Set myRange = Range(“Table1”) For Each myCell In myRange If WorksheetFunction.CountIf(myRange, myCell.Value) > 1 Then myCell.Interior.ColorIndex = 3 End If Next End Sub
重要な注意:上記のコードではテーブル名「Table1」を使用していますが、この名前はコードから変更できます。範囲がある場合は、その範囲名を使用するだけです。
[ボーナス ヒント] 重複する値を数える
このコードは、選択範囲から重複する値の数を数えるのに役立ちます。このコードを実行すると、番号を示すメッセージ ボックスが返されます。
Sub CountDuplicates() Dim i As Integer Dim j As Integer Dim myCell As Range Dim myRange As Integer myRange = Range("Table1").Count j = 0 For Each myCell In Range("Table1") If WorksheetFunction.CountIf(Range("Table1"), myCell.Value) > 1 Then j = j + 1 End If Next MsgBox j End Sub
上記のコードでもテーブル名を使用していますが、それを範囲で変更または置換します。
サンプルファイル
詳細については、ここからこのサンプル ファイルをダウンロードしてください。
結論
状況に応じて、異なる方法で重複値をチェックする必要があります。また、上記のコードはすべて、この点で役立ちます。必要に応じて、カラー インデックス番号を使用してコードからハイライトの色を変更できます。
では、一つ手伝ってください。
これらのコードをどこで改善できるでしょうか?
コメント欄でご意見をお聞かせください。ぜひご意見をお待ちしております。このヒントを友達と共有することを忘れないでください。
関連するチュートリアル
- ハイパーリンク アドレス (URL) を抽出する VBA
- VBAの入力ボックス
- VBA でテキスト ファイルを作成して書き込む
- VBA画面更新
- VBA ステータス バー (非表示、表示、進行状況)