0

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)を返します。

4

3 に答える 3

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)%
于 2012-06-12T15:31:30.863 に答える
0

次のように、小さなグループをサブ SUM にバッチ処理できます =SUM(SUM(1,2), SUM(3,4),...)

于 2012-06-12T08:21:13.607 に答える
0

このバージョンは短くなります。必要なだけ追加できます。式の最大長のみが制限されます

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

于 2012-06-12T10:30:41.700 に答える