3日がかりのその仕事、3分で終わらせる方法教えます!
パソコンスキルの心技体

マクロは、書き上げる「過程」が大切 – Excelマクロ・VBA

2012年11月24日
  • このエントリーをはてなブックマークに追加
  • follow us in feedly

「エクセルマクロ達人養成塾」、ブログ担当の大椛です。

今回は、「Excelマクロ・VBA基礎コース」のフォローアップ講座から。

こんな問題↓です。

[1]
D列に記載された得点が
80点以上だったら「A判定です」
60点以上だったら「B判定です」
40点以上だったら「C判定です」
それより下だったら「D判定です」
と記載するマクロを作りなさい。


|A列 |B列 |C列 |D列 |E列 |
----------------------------------------------
1 行目 |ID |氏名 |性別 |得点 |合否 |
----------------------------------------------
2 行目 |1 |松本 めぐみ |女性 |65 | |
----------------------------------------------
3 行目 |2 |金沢 京子 |女性 |75 | |
----------------------------------------------
4 行目 |3 |東京 尚広 |男性 |82 | |
----------------------------------------------
5 行目 |4 |金沢 大輔 |男性 |95 | |
----------------------------------------------
6 行目 |5 |広島 留美 |女性 |65 | |
----------------------------------------------
7 行目 |6 |三重 尚広 |男性 |79 | |
----------------------------------------------
8 行目 |7 |神戸 真菜 |女性 |79 | |
----------------------------------------------
9 行目 |8 |米子 理絵 |女性 |62 | |
----------------------------------------------
10行目 |9 |京都 若菜 |女性 |48 | |
----------------------------------------------
11行目 |10 |権田原 竜之介|男性 |34 | |
----------------------------------------------

If文で解決するならば、「Elseif」を使います。
条件を満たさな場合、「もし、そうでなければ~」と、次の条件へと引き継がれていきます。

解答はこんな感じ↓。

Sub kaitou()
Dim gyo
For gyo = 2 To 11
    If Range("D" & gyo) >= 80 Then
        Range("E" & gyo).Value = "A判定です"
    ElseIf Range("D" & gyo) >= 60 Then
        Range("E" & gyo).Value = "B判定です"
    ElseIf Range("D" & gyo) >= 40 Then
        Range("E" & gyo).Value = "C判定です"
    Else
        Range("E" & gyo).Value = "D判定です"
         
    End If
Next
End Sub

今月、基礎コースを受講されたばかりのSさんからのフィードバックがこちら。

Elseifの説明を見た後は何とか自分で書けました~!
が、書き直しをしたりして時間がかかりました。

動画の解説でコピーを効率良く使うやり方を見てなるほどと思いました。
コピーひとつとっても、自己流でやるのと、できる人のやり方を実際に見てからするのでは全然違うので、教えていただいてよかったです。

動画で塾長がどうコピーしているかというと、

上記、解答の4行目、

If Range(“D” & gyo) >= 80 Then

をコピーして、

「Elseif」が出てくる6行目、8行目で、Elseだけを書いておいて、

ElseIf Range(“D” & gyo) >= 80 Then

と貼りつけ、点数をそれぞれ60、40に変更。

動画を見ながら、正直僕も驚きました。「そこ、コピペするんかい!」って。
だけど、よくよく考えなくても、この方が間違いなく早いし、正確。

もちろん、5行目の、

Range(“E” & gyo).Value = “A判定です”

も、以下に続く”○判定”の行にコピペ、コピペ。

塾長曰く、

結果的に同じものができあがるとしても、その過程は違うし、その手元での操作、もっというと、頭の中で起こっていることから違う。
そういうところをしっかりとマネすることが大切。

こういうのは実際にマクロを作っている場面に触れるのがいちばん。実際にマクロを書いている様子を目の当たりにしないまま完成型を見ても腑に落ちるものではない。

とのこと。

そういえば、セミナーのとき、「まずは、僕の思考をマネるように努めてください。学ぶ=マネぶです!」と塾長が吠えていたのを思い出しました。

キーワード

コメント

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

最新の記事

人気記事

最新記事

カテゴリ

最新コメント

タグクラウド