我正在使用一个名为ColorFunction的自定义函数,我在互联网上找到了如果背景颜色与另一个单元格相同则对一系列单元格中的值求和。
这是单元格中显示总数的内容。
=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有什么方法可以忽略单元格中的*,当用它们中的颜色求和单元格时。
提前致谢。
答案 0 :(得分:2)
vResult = vResult + Val(0 & Replace(rCell.Text, "*", vbNullString))
或者,如果单元格的第一部分是数字,则可以使用Val
vResult = vResult + Val(rCell.Text)
答案 1 :(得分: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