16

セルのグループを取得し、以下の関数でそれらに対していくつかの計算を行っています。

最初のパラメーターとして範囲 (符号付き) を渡すと:機能しますが、その範囲 ( A1, A3, B6, B9) としていくつかのセルを選択すると失敗します。コンマの前の最初のセルを最初のパラメーターとして取得するだけです。しかし、私は全細胞が欲しいです。

私に何ができる?(範囲を渡すために文字列を使用する場合を除く)

Function calculateIt(Sessions As Range, Customers As Range) As Single
    ' calculate them...
End Function

もう 1 つ:範囲のグループをパラメーターとして渡すことは可能ですか? どうやって?

4

4 に答える 4

11

複数の範囲を関数に渡す別の方法があります。これは、ユーザーにとってよりクリーンに感じると思います。スプレッドシートで関数を呼び出すときは、範囲の各セットを括弧で囲みます。次に例を示します。calculateIt( (A1,A3), (B6,B9) )

上記の呼び出しでは、2 つのセッションが A1 と A3 にあり、2 人の顧客が B6 と B9 にあると想定しています。

これを機能させるには、関数がAreas入力範囲のそれぞれをループする必要があります。例えば:

Function calculateIt(Sessions As Range, Customers As Range) As Single

    ' check we passed the same number of areas
    If (Sessions.Areas.Count <> Customers.Areas.Count) Then
        calculateIt = CVErr(xlErrNA)
        Exit Function
    End If

    Dim mySession, myCustomers As Range

    ' run through each area and calculate
    For a = 1 To Sessions.Areas.Count

        Set mySession = Sessions.Areas(a)
        Set myCustomers = Customers.Areas(a)

        ' calculate them...
    Next a

End Function

良いことは、両方の入力が連続した範囲としてある場合、通常の関数と同じようにこの関数を呼び出すことができることですcalculateIt(A1:A3, B6:B9)

それが役立つことを願っています:)

于 2015-07-09T09:09:44.183 に答える