0

2つのワークシートを含む1つのファイルがあり、どちらも名前とアドレスでいっぱいです。その行のセルAが2番目のシートの列Aのどの行とも一致しない場合に、最初のシートの行を強調表示するマクロが必要です。

したがって、行の最初のセルに、sheet2の列Aのデータのいずれにも一致するデータがない場合、その行は赤で強調表示されます。

また、将来これを拡張したいので、Sheet1をアクティブシートにすることもできますが、sheet2はシート名で呼び出されますか?

4

4 に答える 4

1

以下のコードを試してください:

Sub Sample()

    Dim lastRow As Integer
    Dim rng As Range
    lastRow = Sheets("Sheet1").Range("A65000").End(xlUp).Row

    For i = 1 To lastRow
        Set rng = Sheets("sheet2").Range("A:A").Find(Sheets("Sheet1").Cells(i, 1))
        If rng Is Nothing Then
            Sheets("Sheet1").Cells(i, 1).EntireRow.Interior.Color = vbRed
        End If
    Next
End Sub
于 2013-03-11T17:11:33.710 に答える
0

これが醜いブルートフォースアプローチです:

Dim r As Range
Dim s As Range

For Each r In ActiveSheet.UsedRange.Rows
  For Each s In Sheets("Sheet2").UsedRange.Rows
    If r.Cells(1, 1).Value = s.Cells(1, 1).Value Then
      r.Interior.ColorIndex = 3
    End If
  Next s
Next r

これがより滑らかな方法です:

Dim r As Range
Dim s As Range

Set s = Sheets("Sheet2").Columns(1)

For Each r In ActiveSheet.UsedRange.Rows
  If Not (s.Find(r.Cells(1, 1).Value) Is Nothing) Then
    r.Interior.ColorIndex = 3
  End If
Next r
于 2013-03-11T16:59:36.140 に答える
0

ワークシートの数式を使用したアプローチは次のとおりです。

=IF(ISERROR(VLOOKUP(A:A,Sheet2!A:A,1,FALSE)),"NOT FOUND",VLOOKUP(A:A,Sheet2!A:A,1,FALSE))

次に、条件付き書式を使用して、列Aに一致するものが見つからない場合に、セルを赤に変えます。

HTH

フィリップ

于 2013-03-11T17:15:43.130 に答える
0

これはどう:

Sub CondFormatting()


Range("D1:D" & Range("A1").End(xlDown).Row).Formula = "=IF(ISERROR(VLOOKUP(A:A,Sheet2!A:A,1,FALSE)),""NOT FOUND"",VLOOKUP(A:A,Sheet2!A:A,1,FALSE))"

With Columns("D:D")
    .FormatConditions.Delete
    .FormatConditions.Add Type:=xlCellValue, Operator:=xlEqual, Formula1:="=""NOT FOUND"""
    .FormatConditions(1).Interior.ColorIndex = 3
End With

    Range("I16").Select
End Sub
于 2013-03-11T17:30:20.217 に答える