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

如何修改Excel VBA代码以跳过带背景色的零值单元格?

修改VBA代码:跳过带红色背景的零值单元格

关键修改说明

原代码通过数组读取单元格值,无法获取背景色信息,因此需要在判断零值的同时,检查对应单元格的背景色:

  • 跳过背景色为红色的零值单元格
  • 仅统计无背景填充(或蓝色背景,根据实际需求调整)的零值

修改后的完整代码

Option Explicit

Sub OB_Raport_brakow()
Dim i As Long, j As Long
Dim arrData As Variant
Dim rngData As Range
Dim arrRes, iR As Long
Dim LastRow As Long, wsOB As Worksheet
Dim DataRange As Range

' 查找透视表最后一行
LastRow = ActiveSheet.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row

Set wsOB = Sheets("OB")

' 让用户选择数据截止列
Dim strCol As String
strCol = InputBox("请输入数据截止列(如R):", "选择列范围")
Set rngData = wsOB.Range("B4:" & strCol & LastRow + 1)

arrData = rngData.Value
ReDim arrRes(1 To UBound(arrData) * 31, 0)
iR = 0

' 遍历列(从第3列开始)
For j = LBound(arrData, 2) + 2 To UBound(arrData, 2)
    If arrData(4, j) = "T" Then
        ' 遍历行(从第5行开始)
        For i = LBound(arrData) + 4 To UBound(arrData)
            ' 新增背景色判断:跳过红色背景的零值,仅统计目标格式的零值
            If arrData(i, j) = 0 And Not IsEmpty(arrData(i, j)) Then
                ' 情况1:统计无背景填充的零值(对应"无背景格式"描述)
                ' If rngData.Cells(i, j).Interior.ColorIndex = xlColorIndexNone Then
                
                ' 情况2:统计蓝色背景的零值(蓝色ColorIndex通常为5,可根据实际格式调整)
                If rngData.Cells(i, j).Interior.ColorIndex = xlColorIndexNone Or rngData.Cells(i, j).Interior.ColorIndex = 5 Then
                    iR = iR + 1
                    arrRes(iR, 0) = arrData(i, 2) & "-" & arrData(i, 1) & "-" & Format(arrData(2, j), "dd.mm.yyyy")
                End If
            End If
        Next
    End If
Next

' 处理报表工作表:存在则激活,不存在则新建
On Error GoTo Catch
Sheets("OB Rp").Select
GoTo Finally
Catch:
Sheets.Add(After:=Sheets("OB")).Name = "OB Rp"
Finally:
On Error GoTo 0

' 清空报表区域并写入数据
Sheets("OB Rp").Activate
Range("B1:D600").ClearContents
Range("B1:B" & iR).Value = arrRes

' 按姓名列排序
Range("B1").Sort Key1:=Range("B1"), Order1:=xlAscending, Header:=xlYes

End Sub

重点调整部分

  1. 背景色判断逻辑:在原零值判断条件后,新增了单元格背景色的检查:
    • 若需统计无背景填充的零值,启用xlColorIndexNone的判断
    • 若需统计蓝色背景的零值,替换为对应蓝色的ColorIndex(可通过录制宏获取实际颜色值)
  2. 保留了原代码的用户交互、报表创建及排序逻辑,仅修改核心的零值筛选条件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:23:17