文字列の抽出と計算 3.VBA:自分だけの関数を作る ②
今回のテーマ
前回と同じテーマです。
一つのセルに、3桁の数字が3つあります。これらは、半角スペースで区切られています。この数字について、真ん中のグループの和を求めてみましょう。
ユーザー定義関数で複数範囲を指定
前回は、一つのセルを引数として関数に渡し、結果を得るという方法を採りました。今回は、複数範囲をまとめて処理してみましょう。
Function Calc2(myRng As Range) As Long Dim r As Range For Each r In myRng Calc2 = Calc2 + Mid(r.Value, 5, 3) Next End Function
今まで紹介した For ~ Next ループでは、For i =2 to 4 のように、開始と終了の数字を具体的に指定していました。「何番目の処理であるか」が重要である場合、有効な処理です。また、
For i = 0 to 100 Step 5
のように、0 から 100 まで 5つとびで処理することもできました。
一方、 For Each r in myRng とした場合は、myRng という集団の中から一つずつ「r」として取り出し、個別に処理します。集団の大きさ(総数)に関係なく、指定した集団の中身を隅から隅まで処理する場合に有効です。
おわりに
今回の方法に対する評価(私見)は、以下の通りです。
メリット :
- 前回に比べて、一括で処理できるようになった。
デメリット:
- 前回同様、他のブックにコピーした場合、コピー先に同じユーザー定義関数がなければエラーになる。
今まで作成したものと組み合わせることで、さらなる高機能化が可能です。
(おわり)