如何在Excel单表及跨表中高亮标记C列重复值(忽略空白单元格)
Excel C列重复值高亮方案(支持单表/跨表、忽略空白)
实现效果
- 仅检查所有工作表的C列,自动忽略空白单元格
- 可灵活切换仅检查当前工作表/跨所有工作表统计重复值
- 重复值自动填充高亮色,可自定义颜色
操作步骤
步骤1:录入VBA代码
按Alt+F11打开VBA编辑器,在左侧「项目-VBAProject」面板右键点击你的工作簿名称,选择「插入」→「模块」,将下方代码粘贴到弹出的代码编辑窗口中。
Sub HighlightDuplicatesInColumnC() ' 配置参数,可根据需求修改 Const CHECK_ALL_SHEETS As Boolean = True ' 设为True=跨所有工作表检查,False=仅检查当前工作表 Const HIGHLIGHT_COLOR As Long = vbYellow ' 高亮填充色 Const TARGET_COLUMN As String = "C" ' 检查的列,固定为C列无需修改 Dim dict As Object Dim ws As Worksheet, currentWs As Worksheet Dim lastRow As Long Dim cell As Range Dim cellValue As String Set dict = CreateObject("Scripting.Dictionary") Set currentWs = ActiveSheet ' 第一步:收集所有目标值的出现次数 If CHECK_ALL_SHEETS Then For Each ws In ThisWorkbook.Worksheets lastRow = ws.Cells(ws.Rows.Count, TARGET_COLUMN).End(xlUp).Row For Each cell In ws.Range(TARGET_COLUMN & "1:" & TARGET_COLUMN & lastRow) cellValue = Trim(cell.Value) If cellValue <> "" Then If dict.exists(cellValue) Then dict(cellValue) = dict(cellValue) + 1 Else dict.Add cellValue, 1 End If End If Next cell Next ws Else lastRow = currentWs.Cells(currentWs.Rows.Count, TARGET_COLUMN).End(xlUp).Row For Each cell In currentWs.Range(TARGET_COLUMN & "1:" & TARGET_COLUMN & lastRow) cellValue = Trim(cell.Value) If cellValue <> "" Then If dict.exists(cellValue) Then dict(cellValue) = dict(cellValue) + 1 Else dict.Add cellValue, 1 End If End If Next cell End If ' 第二步:高亮重复值(出现次数≥2) If CHECK_ALL_SHEETS Then For Each ws In ThisWorkbook.Worksheets lastRow = ws.Cells(ws.Rows.Count, TARGET_COLUMN).End(xlUp).Row For Each cell In ws.Range(TARGET_COLUMN & "1:" & TARGET_COLUMN & lastRow) cellValue = Trim(cell.Value) If cellValue <> "" And dict(cellValue) >= 2 Then cell.Interior.Color = HIGHLIGHT_COLOR Else cell.Interior.ColorIndex = xlColorIndexNone End If Next cell Next ws Else lastRow = currentWs.Cells(currentWs.Rows.Count, TARGET_COLUMN).End(xlUp).Row For Each cell In currentWs.Range(TARGET_COLUMN & "1:" & TARGET_COLUMN & lastRow) cellValue = Trim(cell.Value) If cellValue <> "" And dict(cellValue) >= 2 Then cell.Interior.Color = HIGHLIGHT_COLOR Else cell.Interior.ColorIndex = xlColorIndexNone End If Next cell End If Set dict = Nothing Set ws = Nothing Set cell = Nothing MsgBox "重复值标记完成", vbInformation End Sub
步骤2:按需调整参数
代码最上方的3行常量参数可直接修改,无需改动其他逻辑:
- 跨所有工作表检查重复值:保持
Const CHECK_ALL_SHEETS As Boolean = True即可 - 仅检查当前工作表重复值:将上述参数的
True改为False - 修改高亮颜色:修改
Const HIGHLIGHT_COLOR As Long = vbYellow中的值,常用取值:vbRed(红色)、vbGreen(绿色)、vbBlue(蓝色)
步骤3:运行代码
回到Excel主界面,按Alt+F8调出「宏」窗口,选择HighlightDuplicatesInColumnC,点击「执行」即可,运行完成后会弹出提示框。
注意事项
- 运行前建议先备份原文件,避免操作失误无法回退
- 如需取消高亮,选中对应C列区域,点击「开始」选项卡→「填充颜色」→「无填充」即可
- 代码会自动去除单元格前后空格后统计重复,避免空格导致的漏判
内容的提问来源于stack exchange,提问作者MicheleB
相关产品推荐
相关产品推荐

