【问题标题】:EXCEL VBA - Subtracting By Cell Color - Basic Subtraction FormulaEXCEL VBA - 按单元格颜色减法 - 基本减法公式
【发布时间】:2018-07-29 23:30:43
【问题描述】:

这是我的 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 = 总和(D9:D12)

我想要完成的是在 D6 单元格内...减去这个灰色数字。

单元格 D6 公式: Sum(D9:D12)-If(Cellcolour *IN ROWS F11:Q12* = *GRAY "-4142)

最终结果 SUM D9:D12 减去行中的灰色数字 F11:Q12

我认为我的问题在于我无法创建正确的公式。

我觉得只做条件格式可能更容易?

任何帮助都会很棒。

谢谢!

【问题讨论】:

  • 我在here. 之前玩过公式和单元格颜色,也许这会对你有所帮助...
  • 使用单元格颜色来编码信息不是一个好方法:最好使用“状态”列(然后可以驱动条件格式来添加颜色,但也可以更容易在其他公式中使用)
  • 大多数聚合函数(如 sum)会忽略非数字值,因此您只需在数字前添加 ' 即可将它们转换为文本,从而将它们从总和中排除

标签: vba excel excel-formula conditional-formatting


【解决方案1】:

使用单元格颜色对信息进行编码并不是一个好方法:最好使用“状态”列(它可以驱动条件格式来添加颜色,但也可以更轻松地用于其他公式)

除此之外,你的函数有问题:

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-19
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多