0

如果背景颜色与另一个单元格相同,我正在使用一个名为 ColorFunction 的自定义函数,我在 Internet 上找到该函数来对一系列单元格中的值求和。

这是显示总数的单元格中的内容。

=ColorFunction($AE$3,$B$3:$W$3,TRUE)

ColorFunction 如下。

Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean)
Dim rCell As Range
Dim lCol As Long
Dim vResult
lCol = rColor.Interior.ColorIndex
If SUM = True Then
    For Each rCell In rRange
        If rCell.Interior.ColorIndex = lCol Then
            vResult = WorksheetFunction.SUM(rCell, vResult)
        End If
    Next rCell
Else
    For Each rCell In rRange
        If rCell.Interior.ColorIndex = lCol Then
            vResult = 1 + vResult
        End If
    Next rCell
End If
ColorFunction = vResult
End Function

这一切都很好。但是,我使用的某些值在数字值之后有一个 *。对于我总结这些值的其他单元格,我使用以下内容。

=SUMPRODUCT(VALUE(0&SUBSTITUTE(B3:W3,"*","")))

有什么方法可以用 ColorFunction 来做到这一点,以便在对单元格中带有颜色的单元格求和时忽略单元格中的 *。

提前致谢。

4

2 回答 2

2
vResult = vResult + Val(0 & Replace(rCell.Text, "*", vbNullString))

或者,如果单元格的第一部分是数字,您可以只使用 Val

vResult = vResult + Val(rCell.Text)
于 2013-08-16T15:45:13.613 回答
0

您可以通过添加 REPLACE 函数(vba.Replace(rCell, "*", "")

Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean)
Dim rCell As Range
Dim lCol As Long
Dim vResult
lCol = rColor.Interior.ColorIndex
If SUM = True Then
    For Each rCell In rRange
        If rCell.Interior.ColorIndex = lCol Then
            vResult = WorksheetFunction.SUM(replace(rCell,"*",""), vResult)
        End If
    Next rCell
Else
    For Each rCell In rRange
        If rCell.Interior.ColorIndex = lCol Then
            vResult = 1 + vResult
        End If
    Next rCell
End If
ColorFunction = vResult
End Function
于 2013-08-16T15:46:00.983 回答