文字列の抽出と計算 3.VBA:自分だけの関数を作る ③
今回のテーマ
前回と同じテーマです。
一つのセルに、3桁の数字が3つあります。これらは、半角スペースで区切られています。この数字について、真ん中のグループの和を求めてみましょう。
ユーザー定義関数に、複数の引数を指定
前々回に、処理対象となるセルを引数として、中央の数値を返す(求める)ユーザー定義関数を作成しました。しかし、いつも中央の数値が欲しいとも限りません。時には最初の数値だったり、最後の数値だったり。今回は、そんな場合にも柔軟に対応できるよう、引数を一つ増やしてみましょう。
Function Calc2(r As Range, myIndex As Long) As Long Calc2 = Mid(r.Value, 4 * myIndex + 1, 3) End Function
今回追加した myIndex は、欲しい数値が何番目かを指定しています。
一つ目のグループ 1番目
二つ目のグループ 5番目(1+4)
三つ目のグループ 9番目(5+4)
このように、グループの数が増えるごとに4増えています。
従って、myIndex 番目のグループは、4×myIndex - 3 番目から始まることが分かります。これを利用すれば、「何番目のグループか」を追加で指定することで、簡単に目的の結果を得ることが出来るわけです。
おわりに
今回の方法に対する評価(私見)は、以下の通りです。
メリット :
- 集計するグループを、直感的に指定できるようになった。
デメリット:
- 他のブックにコピーした場合、コピー先に同じユーザー定義関数がなければエラーになる。
前回同様、複数範囲を選択したうえで、どのグループか指定することも可能になります。
(おわり)