複数の範囲を関数に渡す別の方法があります。これは、ユーザーにとってよりクリーンに感じると思います。スプレッドシートで関数を呼び出すときは、範囲の各セットを括弧で囲みます。次に例を示します。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)
。
それが役立つことを願っています:)