Sub again3()
Dim sen
Dim eki
Dim toho
Dim kuri
Dim jyusyo
For kuri = 1 To 51
jyusyo = Range("E" & kuri).Value
sen = InStr(jyusyo, "線")
eki = InStr(jyusyo, "駅")
toho = InStr(jyusyo, "歩")
Range("H" & kuri).Value = Left(jyusyo, sen)
Range("I" & kuri).Value = Mid(jyusyo, sen + 1, eki - sen)
Range("J" & kuri).Value = Mid(jyusyo, toho + 1)
Next
End Sub
Sub again33()
Dim sen
Dim eki
Dim densya
Dim aruku
Dim ekitoho
Dim toho
Dim hensu
For hensu = 2 To 51
densya = Range("E" & hensu).Value
sen = InStr(densya, "線")
eki = InStr(densya, "駅")
aruku = InStr(eki + 1, densya, "歩")
ekitoho = Mid(densya, sen + 1)
toho = InStr(ekitoho, "駅")
Range("H" & hensu).Value = Left(densya, sen)
Range("I" & hensu).Value = Left(ekitoho, toho)
Range("J" & hensu).Value = Mid(densya, aruku + 1)
Next
End Sub
わかやまさんの投稿
(投稿ID: 3764)
問題3を以下のように解きましたが、どうでしょうか?
アドバイスお願いいたします。
小川 慶一さんのコメント
(コメントID: 5273)
これですと、たとえば、「大渓谷線歩みが原駅歩11」みたいな文字列をキレイに分解できませんね。
「『線』より前に『駅』はない。『駅』より先に『歩』はない」という前提でしたら、これでもOKです。
dirac96さんのコメント
(コメントID: 5276)
お返事ありがとうございます。
ご指摘いただいた「大渓谷線歩みが腹駅歩11」の場合ですが
とすることで解決するのですが、この場合のみの限定マクロになってしまいます。
より一般化するには、先に進まないと難しいのでしょうか?
今まで学んだ発想でも可能でしょうか?
小川 慶一さんのコメント
(コメントID: 5277)
おはようございます。
> とすることで解決するのですが、この場合のみの限定マクロになってしまいます。
> より一般化するには、先に進まないと難しいのでしょうか?
> 今まで学んだ発想でも可能でしょうか?
ですので、この動画の3分ぐらいのところから示している通り、
・「駅」という文字の場所を探し
・その結果を変数に格納し
・Instr関数の第1引数にその変数の値+1を格納して「歩」という文字の場所を探す
という流れになります。
そういう視点で、この動画でもう一度学び直し見てください。
dirac96さんのコメント
(コメントID: 5279)
考え直しました。
どうでしょうか?
小川 慶一さんのコメント
(コメントID: 5282)
> どうでしょうか?
まずは、ゲストさんご自身が(見本と比べて)どう思うか?考えてみてください。
そして、考えたことをここに書いてみてください。
見本と比べて考察を深めるには、もう一度動画を見直して、動画で示したやり方で(何も見ないで)イチから同じマクロを自力で書いてみると良いです。
考察に当たっては、最低でも以下のことくらいは十分に検討する必要があるでしょう。
[1] 見本のやり方と比べてのメリットは?
[2] 見本のやり方と比べてのデメリットは?
[3] [1], [2]をふまえたうえで、あえてご自身で考えた方法を採用したいと思う相当な理由は?
よろしく、お願いします。
dirac96さんのコメント
(コメントID: 5285)
[1] 見本のやり方と比べてのメリットは?
駅名に歩がある場合に対応できる。
[2] 見本のやり方と比べてのデメリットは?
変数が2つ増えてややこしくなった。
[3] [1], [2]をふまえたうえで、あえてご自身で考えた方法を採用したいと思う相当な理由は?
変数はふえたものの、駅名に歩がある場合に対応できるので、私のマクロを採用する。
こう考えました。よろしくお願いします。
小川 慶一さんのコメント
(コメントID: 5286)
なるほど。
すっきり書くなら、こんな感じ↓ですかね。
上の見本のように、
[a] 区切り文字を見出すセクション
[b] 書き出しセクション
と、分けて書いたほうが可読性も高いし、シンプルです。
「『線』以外に『モノレール』もある」等のバリエーションよりもしっかり解説すべきなような気がしてきました。
おもしろいテーマですので、いずれ、演習問題としてもこれを追加したいと思います。
ありがとうございます。