文字列の抽出と計算 3.VBA:文字数の規則性 ④
はじめに
前回はVBAのMID関数を用いて、マクロで中央の数字を取り出しました。
さらに、その合計値算出のために、計算式をセルに入力しました。
infoment.hatenablog.com
今回は、前回の内容をさらに改良してみましょう。
今回のテーマ
前回と同じテーマです。
一つのセルに、3桁の数字が3つあります。これらは、半角スペースで区切られています。この数字について、真ん中のグループの和を求めてみましょう。
Range と Cells について
今までの例では、セル A2 ~ B5 を指定する際、Range オブジェクトを
使用しました。今回は、別の方法を検討してみましょう。
Sub myCalc() Cells(2, 2).Value = Mid(Cells(2, 1).Value, 5, 3) Cells(3, 2).Value = Mid(Cells(3, 1).Value, 5, 3) Cells(4, 2).Value = Mid(Cells(4, 1).Value, 5, 3) Cells(5, 2).Value = Cells(2, 2).Value + Cells(3, 2).Value + Cells(4, 2).Value End Sub
Cells(2,2) は、2行2列目を指しています。従ってこの場合は、B2 となります。
参考までに、Range("B2").Cells(2,2) とした場合、B2 を含めて2行2列目に
なるため、結果として C3 を指すことになります。
※ Range("B2").Range("B2") も同様です。
※ B2 を含めずに、B2 を基準に C3 を指定したい場合、Offsetを使用します。
Range("B2").Offset(1, 1)
この場合、B2 からどれだけ移動するか、で指定することになります。
以上をまとめると、例えば以下は全て C3 を表すことになります。
Range ("C3") Cells(3,3) Range("B2").Range ("B2") cells(2,2).cells(2,2) range("B2").Offset(1,1)
おわりに
今回の方法に対する評価(私見)は、以下の通りです。
メリット :
- 前回と比べると、異なる表現方法の学習にはなったが、何らメリットはない。
デメリット:
- 前回と比べた場合、デメリットも特にない。
次回紹介予定の「繰り返し処理」の中で、今回の表現方法が効果を発揮します。
(おわり)