文字列の抽出と計算 3.VBA:自分だけの関数を作る ③

はじめに

前回はユーザー定義関数で、目的の数値をまとめて抽出させてみました。
infoment.hatenablog.com

今回も、前回の内容を改良してみましょう。

今回のテーマ

前回と同じテーマです。
一つのセルに、3桁の数字が3つあります。これらは、半角スペースで区切られています。この数字について、真ん中のグループの和を求めてみましょう。
f:id:Infoment:20180619063141p:plain


ユーザー定義関数に、複数の引数を指定

前々回に、処理対象となるセルを引数として、中央の数値を返す(求める)ユーザー定義関数を作成しました。しかし、いつも中央の数値が欲しいとも限りません。時には最初の数値だったり、最後の数値だったり。今回は、そんな場合にも柔軟に対応できるよう、引数を一つ増やしてみましょう。

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 番目から始まることが分かります。これを利用すれば、「何番目のグループか」を追加で指定することで、簡単に目的の結果を得ることが出来るわけです。

f:id:Infoment:20180629234641p:plain
f:id:Infoment:20180629234603p:plain
f:id:Infoment:20180629234723p:plain

f:id:Infoment:20180629234901p:plain

おわりに

今回の方法に対する評価(私見)は、以下の通りです。

メリット :

  • 集計するグループを、直感的に指定できるようになった。

デメリット:

  • 他のブックにコピーした場合、コピー先に同じユーザー定義関数がなければエラーになる。

前回同様、複数範囲を選択したうえで、どのグループか指定することも可能になります。

(おわり)