「エクセルマクロ達人養成塾」、ブログ担当の大椛です。
今日は、基礎コースを10月に受講されたTさんとのやりとりをご紹介。
今回はイレギュラーな路線が「東京モノレール」だけでしたので良かったですが、イレギュラーな別路線が出てきた場合にはどのようなマクロにすれば良いのでしょうか?
問題4.5とは、こんな課題。
[4]
シート「Sheet2」で、C列にある住所の「区」または「市」までをF列に、それ以降をG列に書き込むマクロを作れ
|C列 |
----------------------------
1 行目 |市区町名 |
----------------------------
2 行目 |渋谷区代々木5丁目|
----------------------------
3 行目 |港区高輪2丁目 |
----------------------------
4 行目 |品川区東品川2丁目|
----------------------------
5 行目 |川越市広栄町2丁目|
----------------------------
6 行目 |港区西麻布4丁目 |
----------------------------
7 行目 |渋谷区渋谷3丁目 |
----------------------------
8 行目 |市川市相之川4丁目|
----------------------------
9 行目 |渋谷区広尾3丁目 |
----------------------------
10行目 |川越市松江町1丁目|
----------------------------
11行目 |港区赤坂2丁目 |
----------------------------
[5]
シート「Sheet2」で、E列にある路線駅名の「路線」情報をH列に、駅名以降の情報をI列に書き込むマクロを作れ
|E列 |
------------------------------------------
1 行目 |路線駅名 |
------------------------------------------
2 行目 |小田急線代々木八幡駅歩4 |
------------------------------------------
3 行目 |浅草線泉岳寺駅歩4 |
------------------------------------------
4 行目 |東京モノレール天王洲アイル駅歩3|
------------------------------------------
5 行目 |東武東上線川越駅歩18 |
------------------------------------------
6 行目 |日比谷線広尾駅歩8 |
------------------------------------------
7 行目 |山手線渋谷駅歩6 |
------------------------------------------
8 行目 |東西線南行徳駅歩3 |
------------------------------------------
9 行目 |日比谷線広尾駅歩13 |
------------------------------------------
10行目 |西武新宿線本川越駅歩8 |
------------------------------------------
11行目 |千代田線赤坂駅歩3 |
------------------------------------------
[4]は、「区」または「市」が何文字目にあるかを調べて住所を分割、
[5]は、「線」が何文字目にあるかを探して、路線駅名を分割、その情報を指定箇所に書き込む、というものです。
ただし、[5]の4 行目。「東京モノレール天王洲アイル駅歩3」となっており、「線」が見つかりません。
さて、どうするか。
「『線』が見つからない場合は、『モノレール』を探す」というマクロを書いてはみたものの、また違うイレギュラーケースが出てきたとき、どうマクロを書いたらいいのかと悩みます。とのこと。
塾長曰く、
例えば、「線」も「モノレール」も見つからないときはセルに色をつけ、その値の入っているセルを選んだ状態で動作を止めるとか。
言い出したら切りがないので、どこかまではプログラムで、どこからは手作業で処理するかを決める、ということです。
人間に仕事を渡すときも、アシスタントの子には処理しきれない課題についてはリマークをつけて返してもらいます。それと同じ感覚ですね。
もっとも、プログラミングスキルがもっと高まってくると、それはアシスタントの子がより優秀になるってことでもありますから、プログラムだけで対応できる範囲もさらに広がる、ということでもあります。
とのこと。
言われてみれば、確かにそうです。キリがないですものね。