《連載第2弾 少しだけ、マクロを"カジって"みよう》
IFとFor...Nextループ
前回は、セルの中身を書き替えるということに挑戦してもらいましたが、 その内容だけ見ると、「ナンダ、手で打ち込んだほうが早いじゃないか・・・」。確かに、その程度のサンプルでした。
しかし、Cells(・・・).Valueや、.Formulaが、そればかりでないところを今回は実感していただきたいと思います。
まずは、For・・・Nextループと、IF・・・Then・・・Elseを使ってみましょう。
For・・・Nextループは、指定された回数だけ、特定の処理を繰り返す場合の命令です。
【図1】のような簡単な書式です。
ここでは、i が、Next i を実行したときに、1づつ繰り上がって、11になったときに、次の命令に処理が進みます。すなわち、10回同じ処理≪命令≫の実行が行われるということになります。
次に、If ・・ Then ・・Else。
【図2】のような書き方になります。
これは、もし、xが、1のときは、≪命令1≫を、そうでないとき(Else)は、≪命令2≫を実行して、≪次の命令≫に処理が移る。というやり方です。
ワークシート関数上でも =if(条件式 , 処理1, 処理2)という関数がありますよね。
これと同じ考え方を、マクロ上では、【図2】のように表現します。

さて、それでは、具体的に、(前回の Cellsメソッドも使いながら)理解を深めていきたいと思います。
例の見込客進捗管理表2【図3】をマクロを使って加工してみましょう。

【図3】の見込ランクAの見込金額をK列に書き出す。
というプロシジャを作ってみます。
さて、For・・Next と If・・Then・・Else と Cellsメソッドを組み合わせて、できますか?
できれば、 【図4】を見る前に、考えてみてください。
では・・・
少し長くなりますが、【図4】に示します。

もうあまり説明はいらないかと思いますが、
(1)は、i が、3(行目)から、19(行目)まで繰り返そうという目論見です。
(2)は、その行(i行)のI 列の値 が"A"か?を聞いています。
そして、"A"だったら、(3)・・・同じ行(i)のG列の値(見込金額)を、同じ行(i) のK列に書き込みなさい。 違ったら (Else)、(4)・・・同じ行(i)
のK列には、0を書き込みなさい。を実行。
これを、19行目まで繰り返します。
(5)以下は、おまけです。
(項目タイトルと、合計を書き込んでみました)
いかがですか?
このあたりまでくると、手作業で入力というより、はるかに楽ができそうな気がしてきませんか?
経営コンサルタント 谷田貝 敏紀
[2003年11月10日 掲載]
ジャーナル最新のテーマ
お客様の声をお聞かせください

富士通ジャーナルに掲載している記事やコンテンツについてのご意見・ご感想を、ぜひお寄せください。
お寄せいただいたご意見・ご感想については、富士通からの回答をお約束するものではありません。ご了承ください。
なお、富士通からのご回答を必要とするお問い合わせについては、
富士通ジャーナルに関するお問い合わせをご利用ください。





