如何使用另一个函数值的条件返回SUMIF(或??)?

时间:2014-12-22 23:01:41

标签: excel vba excel-vba excel-formula

我正在尝试对一个排除彩色列的列进行非常简单的总结。我希望总结的列是我的所有帐户,绿色代表付费帐户。我想要一个代表“剩余付款”价值的金额来跟踪我的进度,而不是每次都重做我的公式。颜色不是有条件的,也不是。

我已经创建了2个函数:

Function GetColor(MyCell As Range)
GetColor = MyCell.Interior.ColorIndex
End Function

Function PAID(MyCell As Range) As Boolean
    If MyCell.Interior.ColorIndex = 50 Then
        PAID = True
    Else
        PAID = False
    End If
End Function

所以我已经在我的数字旁边创建了一个具有公式的列(具有更改的单元格编号):

=PAID(C13)

并且这会吐出TRUE或FALSE值,然后我可以根据我的SUMIF公式,目前我有这个(E列包含来自PAID函数的值,C包含我的帐户值):

=SUMIF(E2:E18,"FALSE",C2:C18)

我想看看是否可以绕过制作这个额外的列并直接在SUMIF中运行函数(或者可能是另一个函数?),这样我所要做的就是为我的单元格着色并只刷新一个公式。 / p>

1 个答案:

答案 0 :(得分:0)

使用颜色作为程序决策过程的一部分并不理想,对于简单的任务来说过于复杂。

但是假设你想要这个(或者无法控制这个),并且想要求和的单元格 NOT Interior.ColorIndex = 50着色 - 并假设你的值在范围{{ 1}}(或任何地方),执行此操作的VBA函数如下所示。

将此功能用作C2:C18

=PAID(C2:C18,50)

要重复,此函数会将所有单元格 NOT 与您提供给它的Function PAID(MyCells As Range, colour_avoid As Integer) As Double Dim cc As Range Dim accumulate As Double accumulate = 0 'not needed but good practice For Each cc In MyCells If (cc.Interior.ColorIndex <> colour_avoid) Then accumulate = accumulate + cc.Value End If Next cc PAID = accumulate End Function 相加(例如,50)。