6本目 セルに計算式を入れる(B列*C列)

VBA100本ノック

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


問題

VBA100本ノック 6本目
画像のように、A1から始まる表があります。
D列に、B列×C列の計算式を入れてください。
ただし商品コードに、”-“の枝番が付いている場合は、
計算式を入れずそのままにしてください。

例.D2にはA2×B2の計算式を入れる。D4:D5には計算式を入れない。

解答

※動画内での回答

Sub ノック6本目()

    Dim i As Long
    Dim 最終行 As Long
    最終行 = Cells(Rows.Count, 1).End(xlUp).Row
    
    For i = 2 To 最終行
        If Not Cells(i, 1).Value Like "*-*" Then
            Cells(i, 4).Formula = "=RC[-2]*RC[-1]"
        End If
    Next i

End Sub

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

Sub 模範解答()

    Dim i As Long
    For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
      If Not Cells(i, 1).Value Like "*-*" Then
        Cells(i, 4).FormulaR1C1 = "=RC[-2]*RC[-1]"
      End If
    Next

End Sub

FormulaR1C1は説明するとややこしくなりそうだったので、Formulaで説明。
その他はほぼ同じです。(最終行は変数にした)

今回は”最終行の取得”、”Like演算子”の使い方をメインとして解説しました。

新人君
新人君

最終行の取得は是非
マスターしてほしいっす!

ブチョ
ブチョ

俺は”最初行”はマスターしてるぞ!
“1”だよな!ハッハッハ!

新人君
新人君

あたりまえ体操~・・・

最終行を求めるコード

とにかくここから。
前回(5本目)で直接数値を入力してた部分にフォーカス。

データが変わるたび、このコードを変えるなんて恐ろしいですよね。

↑今回は一旦最終行の数値を変数にぶち込んでから、For Nextのループに入れています。
モチロン模範解答の様に、For Next内でRows.CountさんしてもGood!!

初心者でも分かりやすいように”最終行”って変数にしたぜ!
1周目の時は”lastrow”とかが多かったかな~

最終行を求めるコードの詳しい解説

もちろん書くだけじゃなくて詳しい解説も入れたぜぃ!

覚える必要がないのは間違いない。
だけどさすがに何回も書くことになるから、そのうち自然に覚えると思うよ!
コピペで済ませなければ!
これくらいは書こう!

だらだら書いてますが…
わけ分けして考えたら簡単。

Cells(Rows.Count,1)ってのは、A列(1列目)の、最終行(Rows.Count)だね!
つまりA1000000??セルを指してるってこと!

これで理解できたかな?
理解できなくても全然問題ないぞ!
教える側もくそだからな!

A列に”-“があるかで条件分岐(Like演算子)

5本目の時はセル自体が空白かどうかで判定したよな!
今回は文字列の中にハイフン(“-“)があるかどうかで判定してみよう!

あいまい検索って言葉が合ってるんかどうかは知らん。

Like演算子さんはこれからもめっちゃ出てくるよ~ん

イコール(“=”)は完全に一致してるかどうかの確認 or 左辺に右辺を代入 ってイメージ!

一応、If Not の書き方も紹介したぞ!
今回の問題は、ハイフンが”含まれない場合”に処理をしたいから、
こう書かないとElseの部分に処理を書かないといけなくなって、めんどいからね!

B列×C列の計算式を入れる

“計算結果”じゃなくて、”計算式”を入れるってところがポイント!

R1C1形式についてはこちらの神髄さんの記事を参考にしてねww

RがRow、CがColumnの方だから…
えーっとえーっと…w

列を移動?させたかったら、こうだね!

完成なり~

ブチョ
ブチョ

D列に計算結果じゃなくて、
“計算式”が入ったね!

新人君
新人君

頑張りましたね!

ブチョ
ブチョ

ん?てかノック1周目の時…
“計算結果”を入れるコード書いてない?

新人君
新人君

あ~それ言っちゃダメなやつ…

あとがたり

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

今回は5本目では素通りした、”最終行の取得”について、
それなりに詳しく解説してみました~。
いやそれなりて…。おいらはボイラ~♪みうらの~

あとはLike演算子さん、R1C1形式での数式の入力方法について!!

R1C1形式については、正直触れるかどうか迷いました。
結構初心者さんは難しいと思うんですよね。どーすか?

だけど…これ以外の方法で解こうと思ったら…
今度はコードが結構難しくなりそうでやめましたw

とりあえず!最終行の取得と!条件分岐!LIKE!
この辺を抑えたかった問題でした!!

これだけで十分すぎるほど実務では戦っていけると、個人的には思ってます。

とまあ、6本目の解説は以上!

P.S.
2週間ぐらいNewノックの動画の更新が止まってたのですが…
実は家族の一人が入院してまして…(>_<)
マジで大変でしたwww

一応無事退院出来て、少しだけ落ち着いてきたので、
またこっちも更新していきま~す!!
皆さんも健康には気を付けましょ~!

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

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

コメント

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