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
一応無事退院出来て、少しだけ落ち着いてきたので、
またこっちも更新していきま~す!!
皆さんも健康には気を付けましょ~!
次回も楽しみにしていてください~!
最後までご視聴、ブログ閲覧いただきありがとうございました!!
コメント