我想使用求和公式超过30个参数用于Excel中,我使用下面的公式: -
=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个argumnets,但超过30个argumemts Excel将返回错误( #VALUE
)
我想使用求和公式超过30个参数用于Excel中,我使用下面的公式: -
=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个argumnets,但超过30个argumemts Excel将返回错误( #VALUE
)
你可以批量较小的组成子和数是这样的: =SUM(SUM(1,2), SUM(3,4),...)
这个版本会更短,你可以添加你想要的,唯一的限制将是最大长度公式
=(COUNT(F73,J73)=2)*(F73*J73/100)+(COUNT(G74,J74)=2)*(G74*J74/100)
也许你可以挽救你的公式是这样在后续的字符:
=(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)%