【问题标题】:How to highlight matched values from two different ranges and worksheets?如何突出显示来自两个不同范围和工作表的匹配值?
【发布时间】:2022-06-21 04:11:20
【问题描述】:

我想使用 VBA 突出显示两个不同范围和工作表中的匹配值。

工作表 #1 命名为“OVR”,范围为 S2:V100(应显示突出显示的值)。
工作表 #2 命名为“LS”,范围 A2:A101 包含名称列表。

我的目标是突出显示范围 S2:V100(来自“OVR”工作表)中与范围 A2:A101(来自“LS”工作表)中的一个单元格匹配的所有单元格。

我想将它集成到该文件的现有 VBA 中。

Sub FindReference()
    LR1 = Worksheets("LS").Cells(Rows.Count, "A").End(xlUp).Row
    LR2 = Worksheets("OVR").Cells(Rows.Count, "A").End(xlUp).Row
    Set rng1 = Worksheets("LS").Range("A2:A101" & LR1)
    Set rng2 = Worksheets("OVR").Range("S2:V100" & LR1)
    For Each rCell In rng1
        rCell.Interior.ColorIndex = xlNone
        rCell.Validation.Delete
        result = WorksheetFunction.CountIf(rng2, rCell)
        If result > 0 Then rCell.Interior.Color = vbGreen
    Next
End Sub

【问题讨论】:

  • 首先,您需要从Range("A2:A101" & LR1)Range("S2:V100" & LR1)中删除101100
  • 是的,我指的是 VBA。

标签: excel vba


【解决方案1】:

颜色匹配单元格

Option Explicit

Sub FindReference()
    
    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    
    Dim lRow As Long
    
    ' Source
    Dim sws As Worksheet: Set sws = wb.Worksheets("LS")
    lRow = sws.Cells(sws.Rows.Count, "A").End(xlUp).Row
    Dim srg As Range: Set srg = sws.Range("A2:A" & lRow)
    
    ' Destination
    Dim dws As Worksheet: Set dws = wb.Worksheets("OVR")
    lRow = dws.Cells(dws.Rows.Count, "A").End(xlUp).Row
    Dim drg As Range: Set drg = dws.Range("S2:V" & lRow)
    
    ' Combine matching cells.
    
    Dim durg As Range
    Dim dCell As Range
    Dim dValue As Variant
    
    For Each dCell In drg.Cells
        dValue = dCell.Value
        If Not IsError(dValue) Then
            If Len(dValue) > 0 Then
                If IsNumeric(Application.Match(dValue, srg, 0)) Then
                    If durg Is Nothing Then
                        Set durg = dCell
                    Else
                        Set durg = Union(durg, dCell)
                    End If
                End If
            End If
        End If
    Next dCell
    
    ' Color matching cells.
    
    drg.Interior.ColorIndex = xlNone
    drg.Validation.Delete
    
    If Not durg Is Nothing Then
        durg.Interior.Color = vbGreen
    End If
    
    ' Inform.
    
    MsgBox "Data highlighted.", vbInformation

End Sub

【讨论】:

  • VBasic2008,你摇滚!
猜你喜欢
  • 2015-11-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-19
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 2016-11-26
相关资源
最近更新 更多