You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel VBA代码修改:双条件匹配高亮重复值需求

修改后的Excel VBA代码实现双条件高亮需求

以下是符合你需求的VBA代码,已修正双条件匹配逻辑,同时处理空白单元格的白色填充:

Sub HighlightMatchingCells()
    Dim wsMark As Worksheet, wsTally As Worksheet
    Dim markData As Variant, tallyCell As Range
    Dim i As Long, matchFound As Boolean
    
    ' 绑定目标工作表
    Set wsMark = ThisWorkbook.Worksheets("ShpMarkLog(test)")
    Set wsTally = ThisWorkbook.Worksheets("TALLY-SHEET")
    
    ' 先将目标区域统一设为白色填充,覆盖原有格式
    wsTally.Range("H8:AK103").Interior.ColorIndex = xlColorIndexNone
    
    ' 读取ShpMarkLog(test)的订单号、箱号数据到数组,提升运行效率
    markData = wsMark.Range("A2:B" & wsMark.Cells(wsMark.Rows.Count, "A").End(xlUp).Row).Value
    
    ' 遍历TALLY-SHEET的目标单元格区域
    For Each tallyCell In wsTally.Range("H8:AK103")
        If tallyCell.Value <> "" Then
            matchFound = False
            ' 遍历ShpMarkLog的数据,检查双条件匹配
            For i = LBound(markData, 1) To UBound(markData, 1)
                ' 双条件:订单号匹配 + 箱号匹配
                If wsTally.Cells(tallyCell.Row, "A").Value = markData(i, 1) And tallyCell.Value = markData(i, 2) Then
                    matchFound = True
                    Exit For ' 找到匹配项后跳出循环,减少冗余判断
                End If
            Next i
            
            ' 匹配成功则高亮(这里用黄色,可自行修改ColorIndex换颜色)
            If matchFound Then
                tallyCell.Interior.ColorIndex = 6
            End If
        End If
    Next tallyCell
    
    ' 释放对象变量
    Set wsMark = Nothing
    Set wsTally = Nothing
End Sub

关键说明:

  • 工作表引用:直接绑定目标工作表,避免切换工作表的操作错误
  • 预设置白色填充:先统一重置目标区域格式,确保空白单元格和未匹配单元格都是白色
  • 数组优化:将ShpMarkLog的核心数据读入数组,比逐单元格读取效率高很多
  • 双条件判断:同时校验订单号(假设TALLY-SHEET的Order No在A列,ShpMarkLog的SMOrder_No在A列)和箱号(ShpMarkLog的SMNewCTNno在B列),完全符合你的需求
  • 颜色自定义:如果需要更换高亮颜色,修改ColorIndex的值即可(比如3是红色,4是绿色)

注意:

如果你的订单号、箱号所在列和代码假设的不一致,自行修改代码中的列标识(比如把"A"改成对应列的字母)

内容的提问来源于stack exchange,提问作者Ray

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 01:50:28