在Excel中的sum函数中使用超过30个参数

问题描述 投票:0回答:3

我想在 Excel 的求和公式中使用超过 30 个参数,我使用以下公式:-

=SUM(IF(AND(ISNUMBER($F$73),ISNUMBER($J$73)),PRODUCT($F$73,$J$73/100),0),IF(AND(ISNUMBER($G$74),ISNUMBER($J$74)),PRODUCT($G$74,$J$74),0))

上面的公式对于 30 个参数可以正常工作,但是对于超过 30 个参数,excel 将返回错误(

#VALUE
)

excel excel-2007 excel-formula
3个回答
0
投票

您可以将较小的组批处理为子 SUM,如下所示:

=SUM(SUM(1,2), SUM(3,4),...)


0
投票

此版本会更短,您可以添加任意数量,仅限制最大公式长度

=(COUNT(F73,J73)=2)*(F73*J73/100)+(COUNT(G74,J74)=2)*(G74*J74/100)


0
投票

也许您可以在公式中保存更多字符,如下所示:

=(N(F73)*N(J73)+N(G74)*N(J74))/100

可以进一步扩展,但为了清楚起见,我建议编写一个自定义 UDF:

=SPRange((F73,G74),(J73,J74))%

SPRange 的工作方式与 SUMPRODUCT 类似,但在多个范围上运行:

Function SPRange(Range1 As Range, Range2 As Range) As Double

Dim i As Long, n As Long, rng As Range, Arr() As Double

n = Range1.Count
ReDim Arr(1 To n) As Double

i = 1
For Each rng In Range1
    If IsNumeric(rng.Value2) Then Arr(i) = rng.Value2
    i = i + 1
Next rng

i = 1
SPRange = 0
For Each rng In Range2
    If IsNumeric(rng.Value2) Then SPRange = SPRange + Arr(i) * rng.Value2
    i = i + 1
Next rng

End Function

如果您想扩展到多个范围,您可以通过代码定义名称:

names.Add "Range1",Range("f73,g74")
names.Add "Range2",Range("j73,j74")

在我的测试中允许超过 1000 个细胞。然后只需输入公式:

=SPRange(Range1,Range2)%
© www.soinside.com 2019 - 2024. All rights reserved.