我想将新函数应用于先前使用的函数中引用的同一组单元格。例如,在我的特定情况下,单元格J73包含单个函数:
=SUM(G68:G73,G64:G66,G62,G59:G60,G55:G57,G48:G53,G46,G36:G38,G40:G44)
我想在同一组单元格上使用COUNT函数而不再单独选择它们,以显示SUM函数结果中有多少值。换句话说,我想最终得到包含以下内容的单元格K74:
=COUNT(G68:G73,G64:G66,G62,G59:G60,G55:G57,G48:G53,G46,G36:G38,G40:G44)
我还必须使用不同的单元格数和数量来执行此操作> 150次,因此手动复制和粘贴参数也非常耗时。似乎必须有一般方法来引用另一个函数中的一个函数的参数,但事实证明它很难搜索。
编辑:要清楚,在我的特定情况下,所有像J73这样的单元格(多个数据系列的总和)已经存在于我的工作表中(因此如果我最初包含它们,那么使用固定引用会很有用,但现在不是特别有用)。在我理想的世界中,会有一个简单的公式从第一组单元格中拉出参数,因此我可以快速创建一个新列,显示使用SUM函数进入每个单元格的信息量。不幸的是,这似乎并非如此,但看起来可能有几个有希望的解决方案。
答案 0 :(得分:0)
小计
如果您因为包含小计而跳过某些行,则需要使用SUBTOTAL函数而不是SUM和COUNT。使用SUBTOTAL,您可以聚合整个范围内的数字,但跳过该范围内的任何SUBTOTAL函数。
如果你之前从未使用过SUBTOTAL,这是一个例子。 A1和A2分别输入1和2。在A3中,键入
=SUBTOTAL(9,A1:A2)
然后你会得到3.然后分别在A5和A6中键入10和20。复制公式从A3到A7得到30.现在神奇了。在单元格A10中,键入
=SUBTOTAL(9,A1:A9)
你将获得33.它只计算尚未包含SUBTOTAL公式的单元格。
无关信息
这有点难度,因为每种情况都不同,但是如果你因为混合中存在无关数据并且无法重新排列数据而跳过行,那么你应该考虑使用SUMPRODUCT和一些辅助列。例如,您可以在A列添加一个辅助列,并在要在G列中求和的每一行中放置一个“x”。然后使用
=SUMPRODUCT((A1:A40="x")*(G1:G40))
要计算,只需
=SUMPRODUCT(--(A1:A40="x"))
答案 1 :(得分:0)
接受机会的建议,如果您能够使用访问权并使用VBA,那么以下用户定义的函数COUNTINSUM
应该可以为您提供所需的功能
Function COUNTINSUM(X As Range) As Variant
COUNTINSUM = CVErr(xlErrValue)
If X.Count <> 1 Then
Exit Function
End If
If Left(X.Formula, 5) = "=SUM(" Then
COUNTINSUM = WorksheetFunction.Count(Range(Mid(X.Formula, 6, Len(X.Formula) - 6)))
End If
End Function
将此内容添加到工作簿后,就可以像使用其他任何功能一样在工作表中使用它。它只需要一个参数,这是对包含SUM()
公式的单元格的引用。如果J73
包含
=SUM(G68:G73,G64:G66,G62,G59:G60,G55:G57,G48:G53,G46,G36:G38,G40:G44)
并且您希望J74
包含构成此总和的值的数量,然后在单元格=COUNTINSUM(J73)
中输入J74
。
COUNTINSUM
将在所有情况下返回#VALUE!
,除非其参数(括号中的内容)是单个单元格,并且该单元格仅包含SUM
公式。就像COUNT
函数一样,如果有任何零值构成SUM的一部分,COUNTINSUM将在结果中计算这些值。这并非完全万无一失,如果您习惯在输入=
公式后立即在SUM
符号之前或之后放置空格,它将返回#VALUE!
而不是您想要的。
创建这样的用户定义函数可能是最后的手段,我同意其他建议,即工作表重新设计可能是更合适的解决方案,具体取决于您在摘要中跳过单元格的原因。