文字列の抽出と計算 3.VBA:文字数の規則性 ④

はじめに

前回はVBAのMID関数を用いて、マクロで中央の数字を取り出しました。
さらに、その合計値算出のために、計算式をセルに入力しました。
infoment.hatenablog.com

今回は、前回の内容をさらに改良してみましょう。

今回のテーマ

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


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 となります。
 
f:id:Infoment:20180623164838p:plain
 
参考までに、Range("B2").Cells(2,2) とした場合、B2 を含めて2行2列目に
なるため、結果として C3 を指すことになります。
 
f:id:Infoment:20180623165548p:plain
 
※ 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)

 

おわりに

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

メリット :

  • 前回と比べると、異なる表現方法の学習にはなったが、何らメリットはない。

デメリット:

  • 前回と比べた場合、デメリットも特にない。

次回紹介予定の「繰り返し処理」の中で、今回の表現方法が効果を発揮します。

(おわり)