Excel宏需求:修改代码忽略X列空白或0值,避免返回YYY
修改后的VBA代码及说明
核心修改点
在原公式的两个SUMPRODUCT函数中添加--(X$8:X$#<>0)条件,该条件会同时排除X列的空白单元格(Excel默认将空白视为0)和值为0的单元格,确保这类行不会被纳入统计逻辑。
修改后的完整代码
Sub Macro() Columns("G:G").NumberFormat = "General" Dim lr As Long lr = Range("A" & Rows.Count).End(xlUp).Row With Range("K8:K" & lr) .Formula = Replace("=IF(SUMPRODUCT(--(TEXT(A$8:A$#,""mmyy"")=TEXT(A8,""mmyy"")),--(S$8:S$#=S8),--(X$8:X$#=X8),--(X$8:X$#<>0))" _ & "=SUMPRODUCT(--(TEXT(A$8:A$#,""mmyy"")=TEXT(A8,""mmyy"")),--(S$8:S$#=S8),--(X$8:X$#<>0)),"""",""YYY"")", "#", lr) .Value = .Value End With End Sub
逻辑说明
调整后的公式仅统计X列非空且值不为0的行:
- 第一个
SUMPRODUCT统计同月份、同S列值、同X列值且X列非空非0的行数 - 第二个
SUMPRODUCT统计同月份、同S列值且X列非空非0的总行数 - 当两者相等时返回空值,否则返回YYY,彻底忽略X列的空白和0值情况
内容的提问来源于stack exchange,提问作者badatvba
相关产品推荐
相关产品推荐

