簡體   English   中英

EXCEL VBA-按單元格顏色進行減法-基本減法公式

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM