【问题标题】:How to SUMIF (or ??) using criteria from another function value return?如何使用来自另一个函数值返回的条件来 SUMIF(或??)?
【发布时间】:2014-12-24 01:53:58
【问题描述】:

我正在尝试对排除有色列的列进行非常简单的求和。我想总结的那一栏是我所有的账户,绿色的代表付费账户。我想要一个代表“剩余支付”价值的总和,以跟踪我的进度,而无需每次都重做我的公式。颜色不是有条件的,也不可能。

我已经创建了 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 中运行该函数(或者可能是另一个函数?),这样我所要做的就是为我的单元格着色并只刷新一个公式。

【问题讨论】:

  • 这是相当复杂的,并且依赖硬颜色编码容易出错 - 为什么不输入一个简单的“已支付”项目?
  • 我意识到使用 ColorIndex 并不理想,但它可以完成诸如求和之类的简单任务。此外,尽管我不是程序员并且讨厌编码,但我经常在 Python、XML 和 VB 方面受到挑战,所以这让我的大脑在这方面保持活跃。无论如何,对于这个电子表格来说,这是一个绝妙的主意,而且比我想象的要简单。

标签: vba excel excel-formula


【解决方案1】:

在程序决策过程中使用颜色并不理想,而且对于简单的任务来说过于复杂。

但假设您想要这个(或无法控制这个),并且您想要求和的单元格 NOTInterior.ColorIndex = 50 着色 - 并假设您的值在C2:C18 范围内(或任何地方),执行此操作的 VBA 函数如下。

使用函数=PAID(C2:C18,50)

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

重复一遍,这个函数将把你给它的所有colour.index着色的单元格加起来(比如50)。

【讨论】:

  • 谢谢!就是这样!尽管公式将所有颜色加起来,而不是排除。所以我更改了颜色代码以反映其他单元格的颜色(在本例中为浅灰色 15),非常完美!谢谢!!!!
  • @user3161018 对不起 - 是的,我想念你说你在 FALSES 上做 SUMIF。这很容易更改 - 如果颜色索引是 NOT 某个给定数字,我将使用一个替代版本来更新问题。
  • @user3161018 更新了函数以按照您最初描述的方式执行。它现在应该用你给它的colour.Index 着色的单元格 NOT 相加。
猜你喜欢
  • 1970-01-01
  • 2015-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多