VBAを使用してExcelで2つの行を比較する方法
手動で行ごとにデータを比較する VBAを使用してExcelで2つの行を比較し、このプロセスを自動化する方法を紹介しましょう。
VBAには、2つの文字列を比較できるStrCompと呼ばれる組み込み関数があります。 この関数は、比較の結果に基づいて整数を返します。 ゼロ’0’は完全一致を意味し、結果が’0’と等しくない場合は、次のコード例でセルが強調表示されます。
StrComp関数は3つの引数を取得します:最初の2つの引数は比較される文字列であり、最後の引数は比較タイプです(オプション)。 省略された場合、比較のタイプはOption Compare設定によって決定されます。 以下は、すべての利用可能なオプションです:
- vbUseCompareOption:Option Compareステートメントの設定を使用して比較を実行します。
- vbBinaryCompare:バイナリ比較を実行します。 大文字と小文字が区別されます。
- vbTextCompare:テキスト比較を実行します。 大文字と小文字は区別されません。
- vbDatabaseCompare: データベース内の情報に基づいて比較を実行します。 Microsoft Accessのみ。
このコードでは、ユーザーが単一の範囲内の行を選択する必要があります。 選択された範囲は範囲変数bothrowsに割り当てられ、その範囲内の各セルは列ごとに比較されます。 With文を使用すると、各行に対してbothrowsを繰り返す必要はなく、For…Nextループはすべてのセルをチェックする方法です。
強調表示
範囲を取得した後、ColorIndexプロパティを使用してその範囲を色に設定できます。 ここに色のためのある索引数はある:
- 3: 赤
- 5:青
- 6:黄色
- 0:塗りつぶしなし
まず、ブックまたはアドインファイルにモジュールを追加する必要があります。 コードをコピーしてモジュールに貼り付けて実行します。 Moduleメソッドの主な利点は、後で再度使用できるように、コードをファイルに保存できることです。 さらに、モジュール内のサブルーチンは、メニューリボンまたはキーボードショートカットのアイコンで使用できます。 VBAコードを保存するには、ファイルをXLSMまたはXLAM形式で保存することを忘れないでください。
ハイライト用サンプルコード
Sub HighlightRowDifferences() Dim bothrows As Range, i As Integer Set bothrows = Selection With bothrows For i = 1 To .Columns.Count If Not StrComp(.Cells(1, i), .Cells(2, i), vbBinaryCompare) = 0 Then Range(.Cells(1, i), .Cells(2, i)).Interior.ColorIndex = 6 End If Next i End WithEnd Sub