2016-07-17 8 views
1
Public Function ColorSum(ByVal target As range, ByVal MyColor As String) 
    Dim Blacksum As Long, Othersum As Long, cel As range 
    Application.Volatile 

    Blacksum = 0 
    Othersum = 0 
    For Each cel In target 
     If IsNumeric(cel.Value) Then 
      If cel.Font.ColorIndex = 1 Then 
       Blacksum = Blacksum + cel.Value 
      Else 
       Othersum = Othersum + cel.Value 
      End If 
     End If 
    Next cel 

    ColorSum = IIf(LCase(MyColor) = "black", Blacksum, Othersum) 

End Function 

に基づいて、私はExcelシートの異なる行に黒色の総和と赤色の総和を計算するために上記のコードを使用していますが、あなたはフォントでの自動黒い色がある知っているようにオプションを使用して、自動カラー(黒)で値を入力すると、黒の合計値の合計ではなく、自動カラー(黒)セルの値の合計が黒の色の合計ではなく赤の合計になります。合計はブラック・ブラック合計に含める必要があります。Excelの合計の自動フォントの色

は私が A11=colorsum(A1:A10,"black") A11=colorsum(A1:A10,"red")

答えて

2

xlColorIndexNone(およびxlNone)は、値-4142の定数です。

xlColorIndexAutomatic(およびxlAutomatic)は、値が-4105の定数です。

ExcelのGUIを使ってセルの色を「自動」に設定すると、ColorIndexが1に設定されることがよくありますが、設定前の色であればColorIndexを-4105(xlColorIndexAutomatic)に設定します。

だから、1、xlColorIndexNone(またはxlNone)、xlColorIndexAutomatic(またはxlAutomatic)のそれぞれについてチェックすることをお勧めします。特定のセルに赤色フォントセル値の合計を取得する方法を言い換える

If cel.Font.ColorIndex = 1 Or _ 
    cel.Font.ColorIndex = xlColorIndexNone Or _ 
    cel.Font.ColorIndex = xlColorIndexAutomatic Then 

If cel.Font.ColorIndex = 1 Then 

を変更

+0

親切に言って、これのコードはどうすればいいのでしょうか? –

+0

ありがとうございます:-) –

1

を使用しています長い時間前、私はVBAをプログラムするが、私はカラーインデックス= 0またはxlNoneまたはxlColorIndexAutomaticまたはxlColorIndexNoneが自動的に行われ、ブラックのColorIndex = 1を持っており、それが理由だと思い。あなたは上記の提案された値で試して遊ぶことができますか?

1

ColorIndexを参考にすると、インデックスを暗記する必要があるため、難しい場合があります。

enter image description here

それはの色を更新することに注意する必要があります:私は、コードは自明であると思います、式を使用するには、2つの方法があります使用にcolor

Function SumByFontColor(MyRange As Range, Optional MyColor As Range) 
    Dim Rng As Range 
    Dim Col As Long 

    Application.Volatile 

    If MyColor Is Nothing Then 
     Col = Application.Caller.Font.Color 
    Else 
     Col = MyColor(1).Font.Color 
    End If 

    SumByFontColor = 0 
    For Each Rng In MyRange 
     If Rng.Font.Color = Col Then 
      SumByFontColor = SumByFontColor + Rng.Value2 
     End If 
    Next Rng 
End Function 

をお勧めしたいですセルはその式を再計算するためにシートを開始しません。セルの色を更新するたびに再計算するには、手動でF9を押す必要があります。

+0

? = sumbyfontcolorを使用しているときは、黒の色の値の合計だけを合計します。 –

+0

@ JyotirmayaChandra合計したい色でセルのフォントを色付けします。 – Rosetta

+0

Rosettaに感謝します:-) –