2013-08-16 160 views
0

如果背景顏色與另一個單元格相同,我使用的是一種稱爲ColorFunction的自定義函數,該函數在因特網上找到了一組單元格範圍內的值。Excel VBA替換/替換模塊

這是顯示總數的單元格中的內容。

=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中做到這一點的細胞與他們顏色總結時忽略在細胞中的*。

在此先感謝。

回答

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

或者,如果細胞的第一部分是多少,你可以只使用瓦爾

vResult = vResult + Val(rCell.Text) 
+0

歡呼。我用下面的 下來voteunaccept vResult = vResult + Val(0&Replace(rCell.Text,「*」,vbNullString)) 它的工作原理 –

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