Top

hiroyuki.tank.support.site

簡単!マクロ講座

第14回〜穴埋め問題??〜

 いままで自動記録から始まり,マクロを自分で書いて,そのマクロを使うところまでできるようになりました。
 自動記録でも十分事務能率の向上にはなりますが,どうしてもマクロを自分で書いていかないとうまくいかないことが出てきます。
 今回からちょっと難しくなりますが,それができるようになります。難しいと思うところはさっととおりすぎ,わからないところは書いてあるとおりにやってみてください。
 それでは,マクロを書き実務に活かすことを例をみながら練習しましょう。

 まず次のように準備してください。


 いくつかのセルに「〃」と入力されています。「〃」は「どう」とタイプして変換すると出ます。
 これはワープロ時代には上と同じ場合は「〃」とタイプして印刷する場合が多くあった名残です。
 コンピュータで処理しようと思うとこれはまずいのです。
 エクセルで説明しますと,1行を1レコードとしてみると,1列2行目は「東京」というデータがありますが,1列3行目は「〃」というデータがあります。人間の目で見ると「あっこれは上と同じで東京だな」と判断できますが,コンピュータはそんなことは理解できません。1レコードだけをみると「『〃』というデータなんだな」と判断してしまいます。
 ですから,後々データ処理をすることを考えると,いくら少しのデータといえども「〃」を使わないということを頭に置いておく必要があります。

 前置きはさておき課題です。
「県名や市区町村名が入力されているセルはそのままで,「〃」と入力してあるセルは一つ上のデータ(県名または市区町村名)を入れてください。」
 これを手動でやるにはコピーをしていけばいいのですが,これが100行,1000行あったら大変ですね。マクロを使ってあっという間に処理してしまいましょう。
 今回は自動記録ではできません。きちんとプログラムを順を追って書いていく必要があります。
 プログラムを書いていくコツは,「まず手順を紙に書いてみる」ということです。紙に書くことです。頭でわかっていてもダメです。
 それでは書いてみましょう。みなさんも自分なりに考えてみてください。

@セルA2を見る。
AA2に県名が入力されているか確認する。(セルA2には先頭ですから必ず県名があるはずです。)
BA3を見る。
CA3がもし「〃」だったら,A2をコピーしてA3に貼り付ける。
DA3がもし「〃」でなかったら,そのままにしておく。
EA4をみる。
FC,Dを繰り返し。
GA12までいったら終わり。

 ではこれをエクセルがわかるようにVBAで書いてみましょう。
 いきなりは難しいので,わかるところからやりましょう。
Cは次のようになります。
If Range("a3") = "〃" Then Range("a3")= "東京" End If

 でもこれではいつも「a3」で,しかも「東京」しか入力されません。
 Fの繰り返しも難しそうです。ポイントは,何という文字を「〃」と入れ替えるかと言うことと,繰り返しをどうやって実現するかです。
 途中までは添付ファイルにマクロ「穴埋1」「穴埋2」「穴埋3」がありますのでそれぞれ何が違うかを順を追ってみていってください。
注:「'」以下はコメント行ですのでプログラムとは関係ありません。

************************************************************
Sub 穴埋1() 'A3が「〃」だったら「東京」を入力-rangeを使う
If Range("a3") = "〃" Then
Range("a3") = "東京"
Else
MsgBox "同じじゃないよ"
End If
End Sub

Sub 穴埋2() 'A3が「〃」だったら「東京」を入力-cellsを使う
If Cells(3, 1) = "〃" Then
Range("a3") = "東京"
Else
MsgBox "同じじゃないよ"
End If
End Sub

Sub 穴埋3() 'A列i行目が「〃」だったらセルA3に「東京」を入力(iは変数)
i = 3
If Cells(i, 1) = "〃" Then
Cells(i, 1) = "東京"
Else
MsgBox "同じじゃないよ"
End If
End Sub
############################################################

 内容がどう違うか詳しくわからなくても問題ありません。どこが違うかがわかればOKです。次回はプログラムを完成させます。わかる方は自分で完成させてみてください。

| hiroyuki.tank.support.site.Top | このページのTop | マクロ講座目次 | 前回 | 次回 |