[英]EXCEL VBA - Subtracting By Cell Color - Basic Subtraction Formula
這是我的VBA
Function CellColour(Irow As Integer, Icol As Integer) As Long
CellColour = Cells(Irow, Icol).Interior.ColorIndex
End Function
我正在使用的灰色單元格的顏色是-4142,我通過=CellColour(5,11)
我目前有兩行包含每月的銷售數據,當月結束時,我將行手動塗成灰色,“-4142”
我有一個總計D6的部分,它是幾個單元格的總和D6 = Sum(D9:D12)
我要完成的操作是在D6單元內...減去此灰色數字。
單元格D6公式: Sum(D9:D12)-If(Cellcolour *IN ROWS F11:Q12* = *GRAY "-4142)
最終結果SUM D9:D12減去行F11:Q12
灰色數字
我認為我的問題在於無法創建正確的公式。
我覺得僅執行條件格式可能會更容易?
任何幫助都是極好的。
謝謝!
使用單元格顏色對信息進行編碼不是一個好方法:使用“狀態”列會更好(它可以驅動條件格式來添加顏色,但也可以更輕松地用在其他公式中)
除此之外,您的函數還有一個問題:
Function CellColour(Irow As Integer, Icol As Integer) As Long
CellColour = Cells(Irow, Icol).Interior.ColorIndex
End Function
...在這里, Cells()
將始終應用於ActiveSheet,它可能是您期望/想要的那個,也可能不是。
這可能可以解釋為什么您的“灰色”單元格給出-4142,這實際上是“不填充”(xlNone)的代碼
這在引用正確的工作表時更加明確,因為您使用了Range參數代替數字參數:
Function CellColour(r As Range) As Long
CellColour = r.Cells(1).Interior.ColorIndex
End Function
編輯:這可能是您需要的更多:
Function SumByColour(r As Range, indx As Long) As Long
Dim c As Range, t As Double, v
Application.Volatile
For Each c In r.Cells
v = c.Value
If IsNumeric(v) And c.Interior.ColorIndex = indx Then
t = t + v
End If
Next c
SumByColour = t
End Function
然后,您可以執行以下操作:
=SUM(D9:D12)-SumByColour(F11:Q12, 15)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.