【问题标题】:Sum across rows and count rows less than 0跨行求和并计算小于 0 的行数
【发布时间】:2018-09-21 15:28:52
【问题描述】:

我正在尝试确定每家商店的库存短缺情况以及我供应的面包类型。

按商店显示每种面包需求的示例表。

第 8 行是我试图用公式完成的。
根据手头的数量,我可以有条件地格式化以根据短缺情况突出显示红色或绿色的单元格。
我找不到计算红细胞数量的公式。

我想我需要使用 sumproduct。

=SUMPRODUCT(--($B9:$B11<C9:C11))

上述方法可用于识别商店 A 的短缺(C 列)。但是,当拖到 D 和 E 列时,它不记得其他商店需要什么。

如果不添加范围内的所有行,我无法对行求和。我需要将每一行单独与手头的数量进行比较。我假设需要使用一个数组。

【问题讨论】:

  • 能否也显示预期的结果?
  • 预期结果在第 8 行。单元格 E8 是预期结果的一个很好的例子。有一排没有足够的供应给商店。
  • 您必须使用稍微深奥的公式来查找行(是的,我的意思是行)总数 - 稍后会尝试发布一些内容。
  • 您需要更改您的示例编号,以便所有这些都更加清晰。每个商店的短缺是 count 的短缺还是实际减去的数量?
  • 例如,这是否显示了您的解决方案在实践中应该是什么样子,假设您使用了更多的量? i.stack.imgur.com/xva5Q.png

标签: arrays excel vba excel-formula


【解决方案1】:

这是我提到的公式。它使用 mmult 的标准方法来获取矩阵的行总数,然后将它们与可用的数量进行比较:

=SUM(--($B9:$B11<MMULT($C9:C11,TRANSPOSE(COLUMN($C9:C11)^0))))

进入C8并拉过。必须使用 CtrlShiftEnter

作为数组公式输入

编辑

OP 评论说,如果商店不需要特定商品,即使该商品的库存已用完,也不应将其列为短缺。

因此,只有当当前列在特定行中的数字 >0 并且行总和大于可用数量时,才应该有一个额外的条件才能将其注册为短缺:

=SUM((C9:C11>0)*($B9:$B11<MMULT($C9:C11,TRANSPOSE(COLUMN($C9:C11)^0))))

如果你也想只选择一些行,它看起来像

=SUM(ISNUMBER(MATCH($A9:$A11,{"Wheat","Rye"},0))*(C9:C11>0)*($B9:$B11<MMULT($C9:C11,TRANSPOSE(COLUMN($C9:C11)^0))))

【讨论】:

  • 这是完美的。非常感谢!
  • Tom Sharpe - 如果我想为您的公式添加标准,例如仅小麦和黑麦,我会修改 MMULT 公式吗?
  • 我认为您不会更改公式的 MMULT 部分,只需乘以条件,它看起来就像 =SUM((($A9:$A11="Wheat")+( $A9:$A11="Rye"))*($B9:$B11
  • 或者你可以这样做 =SUM(ISNUMBER(MATCH($A9:$A11,{"Wheat","Rye"},0))*($B9:$B11
  • 嗨,汤姆,我有一个后续问题。当我对您的公式进行更多试验时,我意识到如果手头上的商店没有足够的数量,它会将所需的数量计算为 0 作为短缺。例如,如果 A 店需要小麦面包,但不足以满足 A 店的需求,则短缺会在 A 店之后传递到每个商店。无论 B、C、D、E 等店是否需要这种面包.您对如何忽略要求 0 有什么建议吗?
【解决方案2】:

编辑:固定为条件格式工作

将其粘贴到模块中:

Public Function CellColour(addr)
    CellColour = Range(addr).DisplayFormat.Interior.Color
End Function

Function FINDRED(rng As Range)

    FINDRED = 0

    Dim cell As Range
    For Each cell In rng
        If (cell.Parent.Evaluate("CellColour(""" & cell.Address & """)") = RGB(255, 0, 0)) Then
            FINDRED = FINDRED + 1
        End If
    Next cell

End Function

然后您可以像使用普通的 excel 公式一样使用它:

【讨论】:

  • 如果单元格通过条件格式着色则不起作用...
  • 感谢您的帮助。正如 BigBen 指出的那样,我正在使用条件格式为单元格着色。
  • 您可以使用this answer中的解决方法
猜你喜欢
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-10-27
  • 1970-01-01
  • 2011-05-27
  • 1970-01-01
相关资源
最近更新 更多