5本目 セルの計算(B列とC列の積)

VBA100本ノック

VBA100本ノック5本目を動画で解説してみました。Excelの神髄さんの模範解答はコチラ


問題

VBA100本ノック 5本目
画像のように、B2から始まる表があります。
B列×C列を計算した値をD列に入れ、
通貨\のカンマ編集で表示してください。
ただしB列またはC列が空欄の場合は、
空欄表示にしてください。

例.D3にはB3×C3の計算結果の値を「\234,099」で表示、D5は空欄
※ブック・シートは任意

解答

※動画内での回答

Sub ノック5本目()

    Dim i As Long
    For i = 3 To 12
        If Cells(i, 2).Value = "" Or Cells(i, 3).Value = "" Then
            Cells(i, 4).Value = ""
        Else
            Cells(i, 4).Value = Cells(i, 2).Value * Cells(i, 3).Value
        End If
    Next i

    Columns("D").NumberFormatLocal = "\#,##0"

End Sub

※神髄さんの解答(これ以外の方法も紹介してくれてます)

Sub 模範解答()

    Dim i As Long
    For i = 3 To Range("B2").CurrentRegion.Rows.Count + 1
      If Cells(i, 2) = "" Or Cells(i, 3) = "" Then
        Cells(i, 4) = ""
      Else
        Cells(i, 4) = Cells(i, 2) * Cells(i, 3)
      End If
    Next
    Columns("D").NumberFormatLocal = "\#,##0"

End Sub


今回は初めての”ループ”だったので、そこをメインに解説してみました。
最終行の取得や、表範囲のRows.Countという考え方は一旦保留。
“i”は3 to 12という書き方をしています。

新人君
新人君

今回は”ループ”や”条件分岐”を
ある程度イメージしてくれると
嬉しいっす!

ブチョ
ブチョ


一気に全部教えたほうが
手っ取り早くない?

新人君
新人君

初心者さんには
無理だっつーの・・・

“ループ”について

ループが5本目のメインです。
セルD3~D12までを1セルずつループ処理する方法について解説。

崩した言い回しにしてます。
もちろん”型”の話とかはしてません。

動画時間も少し短かったので、触れるぐらいならよかったかも?

条件分岐

しれっと初めての「IF~ELSE」を使ってますね。あと「OR」も。
詳しくは解説してないですが、順番に進めたので
動作はイメージはできたかな?

ブチョ
ブチョ

B列かC列が空白だった場合、
D列も空白にできたね!

新人君
新人君

そうっスね!

ブチョ
ブチョ

これがなんだっけ?
じょうけ…無条件の愛?だっけ?

新人君
新人君

条件分岐っす…

あとがたり

おはこんばんちは。uぷ主です。
VBA100本ノック、5本目の解説となります。

ループ、条件分岐、最終行の取得等…、
必要な知識が多すぎる問題でしたね。w

最終行の求め方は一旦さておき、”ループ”と”条件分岐”についての解説を中心にしてみました。

正直、これさえあれば大体なんとかなりますよね。

実は昔、uぷ主は会社で表彰されたことがあったんですが…(業務自動化ツール!みたいなん作った)、
その時はこのレベルの知識しかありませんでした。
けどなんとかなりました。
(今見たらコードは酷すぎますが…)

最終行の求め方も今後の問題で必須なので、いつか解説入れます~!

次回も楽しみにしていてください~!

最後までご視聴、ブログ閲覧いただきありがとうございました!!

コメント

タイトルとURLをコピーしました