暫くパソコン教室に行けてなかったので、昨日連絡してみたら、席が空いてますよ~。
とのことでしたので、行ってきました。
開始早々に、マクロのテストだったので、さすがに面食らってしまった。(^^;
頭の中がマクロになっていないと、ちょっときついですね。
問題は
住所録の中の住所から、4文字目に県のある(神奈川県とか)住所は、住所左から4文字を抽出し、
4文字以外の都道府県は3文字を抽出してください。
また、市町村以下の住所は、市町村のセルに抽出してください。
というような問題文でした。(画像は、自宅に戻って作ったシート)
当然、For ~ Next 構文とIF構文を使ったマクロになります。
実際の抽出では、Left と Mid で抽出だろうな~と、大体の構想はすぐにできました。
がっ、「4文字目に県がある」の条件式が思い浮かばない...。(+_+)
Instr を使うのかと思い込んでしまったので...。
しかし、なぜかうまくいかないので、途中でMid 関数に切り替えて、県を抽出して= "県" としようかと。
マクロが完成するまでに凄い時間が掛かってしまって、、、
まあ、自宅でやるのとは、やっぱり違いますからね。
こんなのね。
この中の
Mid(Cells(i, "D"), 4, 1) = "県"
こんな簡単な条件式なのにね。
超難産だった。(^^ゞ
でも、Cells(i, "F") = Mid(Cells(i, "D"), 5) の
Mid関数の使い方で、抽出文字数をワザと入れない使い方をすると
指定した文字以降をすべて抽出するになるとのこと
よ~~く憶えました。
苦労すると頭にしっかり刻み込まれますよね。
今日どうしても納得がいかないので、、、
Instr 関数でできない訳がないよなと考え
実際にマクロを組んでみました。
すると、あっさりとできてしまって...。(^^;
こんなのね。
If InStr(Cells(i, "D"), "県") = 4 Then
というのを最初にイメージしました。
なぜうまく動かなかったかは、今となっては分かりませんが。
こちらの方が問題文に対してストレート(素直)な気がします。
まあ、正しく動けばどちらでも良いんですけどね。
検証できたので気が済んだ~~。(^^ゞ
いきなりマクロこれは、こころの準備ができていないからきついですね。3114
頭が付いていきませんよね。(^^;