文字列の抽出と計算 3.VBA:文字数の規則性 ②
今回のテーマ
前回と同じテーマです。
一つのセルに、3桁の数字が3つあります。これらは、半角スペースで区切られています。この数字について、真ん中のグループの和を求めてみましょう。
ワークシート関数を用いる
まず、前回のコードを振り返ってみます。
Sub myCalc() Range("B2").Value = Mid(Range("A2").Value, 5, 3) Range("B3").Value = Mid(Range("A3").Value, 5, 3) Range("B4").Value = Mid(Range("A4").Value, 5, 3) Range("B5").Value = Range("B2").Value + Range("B3").Value + Range("B4").Value End Sub
最後の和を求める際、セルの値を一つずつ足し算しています。
Range("B5").Value = Range("B2").Value + Range("B3").Value + Range("B4").Value
数が少ない内は良いのですが、行数が増えるごとに式は長くなり、入力の手間も増えます。
できれば、ワークシート関数のSUMを使用したいところです。ところが、VBAにはSUM関数が
ありません。そこで、和を求める部分を次のように変更して、ワークシート関数を使用できる
ようにしてみましょう。
Range("B5").Value = WorksheetFunction.Sum(Range("B2:B4"))
WorksheetFunction. と記載することで、使用できるワークシート関数があります。
※全てのワークシート関数が使用できるわけではない点に、ご留意ください。
実行して、前回と同じ結果が得られることを確認しましょう。
ところで、Range("B2:B4") は B2~B4の範囲を表しています。Range("B2","B4")でも、同じ結果になります。様々な表現があるので、随時覚えていきましょう。
最後に、今回のコードを改めて記載します。
Sub myCalc() Range("B2").Value = Mid(Range("A2").Value, 5, 3) Range("B3").Value = Mid(Range("A3").Value, 5, 3) Range("B4").Value = Mid(Range("A4").Value, 5, 3) Range("B5").Value = WorksheetFunction.Sum(Range("B2:B4")) End Sub
今回も、正しい結果を得られました。
おわりに
今回の方法に対する評価(私見)は、以下の通りです。
メリット :
- 前回と比べて、行数が3行でも100行でも、コードの長さが殆ど変わらない(※合計算出のみ)
デメリット:
- 前回と比べた場合、デメリットは存在しない。
行の増減に追従しない点は前回と同様ですが、前回と比べた場合のデメリットは無さそうです。このような改修は、積極的に行うべきと考えます。
(おわり)