文字列を加工してデータ転記する(その1)

演習問題テーマ:文字列を加工してデータ転記する(その1)

セミナーで学習したLeft関数、Mid関数、Instr関数をどう使うかみてください。

Instr関数をつかって区切りの字が何文字目にあるのかを調べる変数をたてるのがポイント。そうすると区切りの字の後からの情報がほしいときは変数+1、前までなら変数−1と表現できるということに注目。

この講座を含む定額コースに参加するか、この講座を購入することで、講座を利用できるようになります。
定額コースに参加すると、そのコースの利用期間中はいつでも講座を利用できます。
講座を購入すると、いつでも講座を利用できます。

この講座を含む定額コースや購入の詳細については、講座トップページの「利用方法」を御覧ください。

学習記録としてメモを残す

完全に理解できた
まあまあ理解できた
ふつう
あまり理解できてない
さっぱり分からない

※メモを残すにはこの講座の利用権限が必要です。

質問や感想を投稿する

とても満足 満足 普通 不満 とても不満

ユーザ名を使う ニックネームを使う 匿名で投稿

※投稿に必要な権限がありません。

このページへの投稿/コメント

投稿ID: 5209 受講生さんの投稿
小川先生 こんにちは

マクロ記載に関する質問です。
".Value"を記載しなくても実行できるようですが、常に記載しなくても大丈夫なのでしょうか?
見た目すっきりするので良いかと思うのですが、場合によって支障が出たりするのでしょうか?

よろしくお願い致します。
投稿日時: 2021年11月10日 12時35分03秒
コメントID: 7384 小川慶一さんからのお返事
こんにちは。

>".Value"を記載しなくても実行できるようですが、常に記載しなくても大丈夫なのでしょうか?
>見た目すっきりするので良いかと思うのですが、場合によって支障が出たりするのでしょうか?

こういう問いは、言語として以下のどちらがより望ましいかと考えてみられると良いかと思います。
○誤解の生じにくい、より明確な表現をするか
○「伝わればよい」ということで、なおざりな表現で済ませるか

>場合によって支障が出たりするのでしょうか?

結論から言うと、場合によって支障が出ます。
ただし、発展編1以降での話です。

とはいえ、「であれば、今はなおざりで良いや」と済ませていると、発展編1での学習をするタイミングでハマります。

こういうのは、国語の勉強でも同様ですね。
普段から主語や目的語を省略した話し方をする傾向のある人は、きちんとした文章を書く必要が生じたときになかなか上手に書けません。
複雑な事情を適切に表現する力もつきません。

「今はこれで済むから」ということでなおざりにしていると、あとあと苦労します。

以下も参考にしてください。
https://www.exvba.com/2183/
コメント日時: 2021年11月11日 09時14分56秒
コメントID: 7387 受講生さんからのお返事
小川先生
ご回答ありがとうございます。
わかりました。
省略せずに記載することを心がけます。
コメント日時: 2021年11月11日 12時18分33秒
コメントID: 7388 小川慶一さんからのお返事
おはようございます。

あとあとのためにも、それが良いかと思います。
ひきつづき、学習お楽しみください。
コメント日時: 2021年11月12日 08時12分17秒
投稿ID: 4162 Matsumotoさんの投稿
住所分割のマクロ久々です。
本編で学習から約2週間たっていたので
記憶も朧でしたが、回答できました。

スラスラとは程遠く、
記憶を呼び起こすように一行ずつ動作確認しながらですが、
最終的に動いたときの喜びは大きいですね。

ただ、絶対的な練習量が少ないので、
何度も復習=マクロを書いて、
問題を見た瞬間に体が動くようにしたいです。
(九九のようにですよね)
投稿日時: 2018年09月09日 02時04分44秒
コメントID: 5723 小川慶一さんからのお返事
Matsumotoさん:

手応えを感じられるというのはいいことです☆

> 住所分割のマクロ久々です。
> 本編で学習から約2週間たっていたので
> 記憶も朧でしたが、回答できました。
>
> スラスラとは程遠く、
> 記憶を呼び起こすように一行ずつ動作確認しながらですが、
> 最終的に動いたときの喜びは大きいですね。
>
> ただ、絶対的な練習量が少ないので、
> 何度も復習=マクロを書いて、
> 問題を見た瞬間に体が動くようにしたいです。
> (九九のようにですよね)
コメント日時: 2018年09月10日 19時07分59秒
投稿ID: 3602 受講生さんの投稿
馴染みのある懐かしい住所分割問題です。
Left関数や、Instr関数を扱うのも久しぶりなので、
一つずつ動作の確認をとる1行マクロを試しながら、
自力で回答できました。
(知っている関数だけれど、引数などをはっきり覚えていない時にどうするか?の練習にもなりました)

ところが、先生の動画を見て、
「同じ文字列を変数に置き換える」というステップが
足りなかったことに気がついたので、
もう一度書き直してみます。
実は、instr関数の値に+したり-したりをずらずら書くと
結構間違いやすくて修正も増えるので、
「あれ?昔解いた時、こんなに複雑な長い式だったかな・・」と思ったんですよね。
可読性とミスを減らすためにも、変数を上手に使う必要が
ありますね。
gooska
投稿日時: 2017年12月25日 06時42分30秒
コメントID: 5101 小川慶一さんからのお返事
受講生 さん:

> (知っている関数だけれど、引数などをはっきり覚えていない時にどうするか?の練習にもなりました)

こういうスキル、地味に大切です。

ひきつづきお楽しみください☆
コメント日時: 2017年12月25日 19時42分37秒
投稿ID: 3584 ガラパゴスタディー吉川さんの投稿
文字列を扱う関数は、マクロで利用することがあまりなかったので、とても勉強になりました。
動画を拝見し、特に勉強になるのはマクロを書いていく道順です。
普通の参考書では答えがばーんとあるだけで、そこにたどり着くまでの道順が難しくてあきらめてしまうということもあるかと思います。
「まずはとりあえず書いてみる」というように簡単なところからとにかく書いてみようと思いました。
投稿日時: 2017年12月15日 01時03分28秒
コメントID: 5068 小川慶一さんからのお返事
吉川 裕子さん:

コメントありがとうございます。

> 普通の参考書では答えがばーんとあるだけで、そこにたどり着くまでの道順が難しくてあきらめてしまうということもあるかと思います。
> 「まずはとりあえず書いてみる」というように簡単なところからとにかく書いてみようと思いました。

ここの部分がいちばん大切なんですよね。。

文字列は、数値と同様にエクセル表に頻出するデータです。
文字列加工のバラエティについては、基礎編-発展編2の中でかなりしっかり扱っています。

ひきつづき、お楽しみください☆
コメント日時: 2017年12月15日 22時13分08秒
投稿ID: 3423 受講生さんの投稿
Left関数、Mid関数、Instr関数の復習になった。
どんどん書く練習をすすめるぞ!
投稿日時: 2017年09月13日 06時05分25秒
コメントID: 4884 小川慶一さんからのお返事
受講生 さん:

どんどん進めましょう!
書けば書くほど上達します☆

> Left関数、Mid関数、Instr関数の復習になった。
> どんどん書く練習をすすめるぞ!
コメント日時: 2017年09月14日 19時50分31秒
投稿ID: 2265 受講生さんの投稿
小川先生 こんばんは
今月基礎講座始めました 今日は初めて質問させていただきます 宜しくお願いいたします
(3:06)くらいの時ですが それまでのSubは、
 Sub kubunnkatu()
                  Dim ku
                  Ku=Instr(Range("C2").Value, "区")
                  Range("F2"). value=Left(Range"C2", Value, Ku)..........

となっていたものを ここでDim jusho とjusho=
Range("C2"). valueを加えていくわけですが、

 Sub kubunnkatu()
                  Dim jusho 
     Dim ku
                  jusho=Range("C2"). value
     Ku=Instr(Range("C2").Value, "区")
                  Range("F2"). value=Left(Range"C2", Value, Ku)..........
となるのでしょうか?
Dim jusho の位置がDim ku の上に入ることにより Ku-Instra(Range,,,,,の文と引き離されてしまっているように思います。
なにか書き方にルールがあるのでしょうか? こういう微妙なところがわかりません おしえてください

ペンネーム:ぺる
投稿日時: 2016年04月11日 06時57分20秒
コメントID: 3667 ゲストさんからのお返事
受講生 さん:

こんにちは。

>Dim jusho の位置がDim ku の上に入ることにより Ku-Instra(Range,,,,,の文と引き離されてしまっているように思います。

気になるのはごもっともです。
では、どういう順序が適切なのか。。?というと。

「ズバリ、動けばどれも正解」です。あとは好み。
ただ、あえて言うなら、変数宣言は、ループの外にあったほうかよいです。(←その理由は分かりますか?)
コメント日時: 2016年04月12日 19時49分03秒
コメントID: 3683 岩瀬真子さんからのお返事
小川先生、
回答していただきどうもありがとうございました。
動けばどれも正解、あとは好みということで、こういうものかと納得です。

”あえて言うなら、変数宣言は、ループの外にあったほうかよいです。(←その理由は分かりますか?)”、この部分なのですが、なんとなくわかる感じがするのですが、はっきりにんしきできていません。理由を教えてください 宜しくお願いいたします。






小川慶一 さん:

>受講生 さん:
>
>こんにちは。
>
>>Dim jusho の位置がDim ku の上に入ることにより Ku-Instra(Range,,,,,の文と引き離されてしまっているように思います。
>
>気になるのはごもっともです。
>では、どういう順序が適切なのか。。?というと。
>
>「ズバリ、動けばどれも正解」です。あとは好み。
>ただ、あえて言うなら、変数宣言は、ループの外にあったほうかよいです。(←その理由は分かりますか?)
>
コメント日時: 2016年04月16日 08時14分34秒
コメントID: 3695 ゲストさんからのお返事
岩瀬真子 さん:

ループの中で変数宣言をしていると、こびとちゃんは、その変数宣言をしている行にくる都度、新たに変数を作るところから作業をします。
ループの外であらかじめ宣言した変数を使い回すのであれば、上記のステップは不要で、こびとちゃんは、ただ変数に格納された値を上書きするだけです。

という説明でどうかな?


>小川先生、
>回答していただきどうもありがとうございました。
>動けばどれも正解、あとは好みということで、こういうものかと納得です。
>
>”あえて言うなら、変数宣言は、ループの外にあったほうかよいです。(←その理由は分かりますか?)”、この部分なのですが、なんとなくわかる感じがするのですが、はっきりにんしきできていません。理由を教えてください 宜しくお願いいたします。
コメント日時: 2016年04月18日 20時08分25秒
投稿ID: 2140 受講生さんの投稿
今回は、今までの復習問題でしたね。
全問解いてから動画を見ています。1,2は、先生と同じような形で書けました。
今回のような使い方をするleft、MID、instr操作はマスターできたと思います。
後半部分、次の動画で先生の回答と比較したいと思います。
by gooska
投稿日時: 2016年03月25日 04時25分18秒
コメントID: 3524 ゲストさんからのお返事
受講生 さん:

このペースで学ばれる方にとっては復習問題ですね (^^;
通常のペースで学ばれる方にとっては、「やったけど覚えてない」ということもちらほら (^^;

>今回は、今までの復習問題でしたね。
>全問解いてから動画を見ています。1,2は、先生と同じような形で書けました。
>今回のような使い方をするleft、MID、instr操作はマスターできたと思います。
>後半部分、次の動画で先生の回答と比較したいと思います。
>by gooska
コメント日時: 2016年03月25日 16時33分55秒
投稿ID: 2043 受講生さんの投稿
お世話になります。
仕事で必要で、少し複雑なMID関数をマクロで強引に当てはめてみました。なんだかできちゃいましたが・・

わかっていることは、①全部で16文字 ②11文字目がいつも丁 ③最初の1文字と最後の3文字は必要ない
          ④”-”の前は AかBかC
C列の文字を以下条件でG列に抜き出す
例)”東京都渋谷A代々木4丁目5番地よ” を ”京都渋谷A-代々木45” としたい。
2文字目から5文字取り出し”-”を入れる&7文字目から4文字取り出し&2文字飛ばして&13文字目の1文字を取り出す。
これを1つの文字として 別台帳に転記する。

今回は規則性なし(この場合の規則性が当てはまるのかもわからなかったので・・^:^;)
単純に関数の式を当てはめました。
Sub MMM()
Dim NAMAE
Dim GYO
For GYO = 2 To 51
NAMAE = Range("C" & GYO).Value
Range("G" & GYO).Value = MID(NAMAE, 2, 5) & "-" & MID(NAMAE, 7, 4) & MID(NAMAE, 13, 1)
Next
End Sub

できちゃったからいいのか?とも思いましたが
 他に良い方法があれば教えてください。
投稿日時: 2016年03月08日 11時25分17秒
コメントID: 3436 ゲストさんからのお返事
受講生 さん:

まずは動けばOKです。
そして、次のステップは、渋谷区でも世田谷区でも港区でも動くようにすること ヾ(´ー`)ノ


>お世話になります。
>仕事で必要で、少し複雑なMID関数をマクロで強引に当てはめてみました。なんだかできちゃいましたが・・
>
>わかっていることは、①全部で16文字 ②11文字目がいつも丁 ③最初の1文字と最後の3文字は必要ない
>          ④”-”の前は AかBかC
>C列の文字を以下条件でG列に抜き出す
>例)”東京都渋谷A代々木4丁目5番地よ” を ”京都渋谷A-代々木45” としたい。
>2文字目から5文字取り出し”-”を入れる&7文字目から4文字取り出し&2文字飛ばして&13文字目の1文字を取り出す。
>これを1つの文字として 別台帳に転記する。
>
>今回は規則性なし(この場合の規則性が当てはまるのかもわからなかったので・・^:^;)
>単純に関数の式を当てはめました。
>Sub MMM()
> Dim NAMAE
> Dim GYO
> For GYO = 2 To 51
> NAMAE = Range("C" & GYO).Value
> Range("G" & GYO).Value = MID(NAMAE, 2, 5) & "-" & MID(NAMAE, 7, 4) & MID(NAMAE, 13, 1)
> Next
>End Sub
>
> できちゃったからいいのか?とも思いましたが
> 他に良い方法があれば教えてください。
コメント日時: 2016年03月09日 08時22分37秒
投稿ID: 1820 受講生さんの投稿
小川様
ループの中に入れるメリットがないことがよくわかりました!
ありがとうございます。
投稿日時: 2015年12月03日 07時52分23秒
コメントID: 3131 ゲストさんからのお返事
受講生 さん:

よかったです。ひきつづきお楽しみを!

>小川様
>ループの中に入れるメリットがないことがよくわかりました!
>ありがとうございます。
>
コメント日時: 2015年12月03日 22時42分01秒
投稿ID: 1815 受講生さんの投稿
お疲れ様です。変数が何個かでてきたときに ハナコでくくるときは、他の変数は外側にだしておいたほうがいいですか?
どこに書いても同じかと思ったのですが、ハナコでくくる位置は一番外側ではなくて、内側のほうがいいのでしょうか。

Sub rensyu1()
Dim gyo
For gyo = 2 To 50
Dim jyusyo
jyusyo = Range("C" & gyo).Value
Dim ku
ku = InStr(jyusyo, "区")
Range("F" & gyo).Value = Left(jyusyo, ku)
Range("G" & gyo).Value = Mid(jyusyo, ku + 1)
Next
End Sub
投稿日時: 2015年12月01日 08時31分43秒
コメントID: 3122 ゲストさんからのお返事
受講生 さん:

ループの中に変数宣言があると、こびとちゃんは、その変数宣言に来るたびに新たに変数を作り直します。
そして、そうすることのメリットはないです。

というのが簡潔な説明なのですが、これでご理解いただけるでしょうか?

>お疲れ様です。変数が何個かでてきたときに ハナコでくくるときは、他の変数は外側にだしておいたほうがいいですか?
>どこに書いても同じかと思ったのですが、ハナコでくくる位置は一番外側ではなくて、内側のほうがいいのでしょうか。
>
>Sub rensyu1()
> Dim gyo
> For gyo = 2 To 50
> Dim jyusyo
> jyusyo = Range("C" & gyo).Value
> Dim ku
> ku = InStr(jyusyo, "区")
> Range("F" & gyo).Value = Left(jyusyo, ku)
> Range("G" & gyo).Value = Mid(jyusyo, ku + 1)
> Next
>End Sub
コメント日時: 2015年12月02日 17時26分12秒
投稿ID: 416 明石 照伸さんの投稿
お世話になります。

上記設問[3]、[4]、[5]について以下回答案作成してみました。
アドバイス等いただけますと幸いです。

よろしくお願いいたします。

===設問[3] ここから===

Sub furiwake3()
Dim kugiri1 '文字列の最初の区切り
Dim kugiri2 '文字列の2番目の区切り
Dim nagasa '文字列の長さ
Dim gyo

For gyo = 2 To 51
kugiri1 = InStr(1, Range("e" & gyo).Value, "線")
kugiri2 = InStr(1, Range("e" & gyo).Value, "駅")
nagasa = Len(Range("e" & gyo).Value)

Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri1)
Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri1 + 1, nagasa - kugiri2 + 1)
Range("J" & gyo).Value = Right(Range("e" & gyo).Value, nagasa - kugiri2)


Next



End Sub
===設問[3] ここまで===


===設問[4] ここから===

Sub furiwake4()
Dim gyo
For gyo = 2 To 11
Dim kugiri
kugiri = InStr(Range("c" & gyo).Value, "区")

If kugiri > 0 Then
Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)

Else
kugiri = InStr(Range("c" & gyo).Value, "市")
Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)

End If

Next



End Sub
===設問[4] ここまで===

===設問[5] ここから===

Sub furiwake5()

Dim kugiri
Dim gyo

For gyo = 2 To 11
kugiri = InStr(Range("e" & gyo).Value, "線")
If kugiri > 0 Then

Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri)
Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri + 1)

Else
kugiri = InStr(Range("e" & gyo).Value, "ル")
Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri)
Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri + 1)

End If

Next



End Sub
===設問[5] ここまで===
投稿日時: 2014年07月24日 08時49分46秒
コメントID: 1227 小川慶一さんからのお返事
明石 照伸 さん:

楽しんでますね!

設問[3]について。
Right関数を使うという発想、とてもよいと思います!

設問[4], [5] について。

たとえば[4]について言うと、If文の中で以下の2行が True のとき False のときの2回登場していますね。
そこの冗長さを解決したいです。

            Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
            Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)

ひきつづきお楽しみを!



>お世話になります。
>
>上記設問[3]、[4]、[5]について以下回答案作成してみました。
>アドバイス等いただけますと幸いです。
>
>よろしくお願いいたします。
>
>===設問[3] ここから===
>
>Sub furiwake3()
> Dim kugiri1 '文字列の最初の区切り
> Dim kugiri2 '文字列の2番目の区切り
> Dim nagasa '文字列の長さ
> Dim gyo
>
> For gyo = 2 To 51
> kugiri1 = InStr(1, Range("e" & gyo).Value, "線")
> kugiri2 = InStr(1, Range("e" & gyo).Value, "駅")
> nagasa = Len(Range("e" & gyo).Value)
>
> Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri1)
> Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri1 + 1, nagasa - kugiri2 + 1)
> Range("J" & gyo).Value = Right(Range("e" & gyo).Value, nagasa - kugiri2)
>
>
> Next
>
>
>
>End Sub
>===設問[3] ここまで===
>
>
>===設問[4] ここから===
>
>Sub furiwake4()
> Dim gyo
> For gyo = 2 To 11
> Dim kugiri
> kugiri = InStr(Range("c" & gyo).Value, "区")
>
> If kugiri > 0 Then
> Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
> Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)
>
> Else
> kugiri = InStr(Range("c" & gyo).Value, "市")
> Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
> Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)
>
> End If
>
> Next
>
>
>
>End Sub
>===設問[4] ここまで===
>
>===設問[5] ここから===
>
>Sub furiwake5()
>
> Dim kugiri
> Dim gyo
>
> For gyo = 2 To 11
> kugiri = InStr(Range("e" & gyo).Value, "線")
> If kugiri > 0 Then
>
> Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri)
> Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri + 1)
>
> Else
> kugiri = InStr(Range("e" & gyo).Value, "ル")
> Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri)
> Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri + 1)
>
> End If
>
> Next
>
>
>
>End Sub
>===設問[5] ここまで===
コメント日時: 2014年07月24日 18時25分12秒
コメントID: 1228 明石 照伸さんからのお返事
小川慶一 さん:

コメントありがとうございます。(^^

ちょっとIF~Else~のところの流れがいけてない
感じがしていたのですが、小川さんのアドバイスで
もうすこしすっきりかけそうな気がします。

試しながらやってみます。(^^




>明石 照伸 さん:
>
>楽しんでますね!
>
>設問[3]について。
>Right関数を使うという発想、とてもよいと思います!
>
>設問[4], [5] について。
>
>たとえば[4]について言うと、If文の中で以下の2行が True のとき False のときの2回登場していますね。
>そこの冗長さを解決したいです。
>
>
            Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
>            Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)
>
>ひきつづきお楽しみを!
>
>
>
>>お世話になります。
>>
>>上記設問[3]、[4]、[5]について以下回答案作成してみました。
>>アドバイス等いただけますと幸いです。
>>
>>よろしくお願いいたします。
>>
>>===設問[3] ここから===
>>
>>Sub furiwake3()
>> Dim kugiri1 '文字列の最初の区切り
>> Dim kugiri2 '文字列の2番目の区切り
>> Dim nagasa '文字列の長さ
>> Dim gyo
>>
>> For gyo = 2 To 51
>> kugiri1 = InStr(1, Range("e" & gyo).Value, "線")
>> kugiri2 = InStr(1, Range("e" & gyo).Value, "駅")
>> nagasa = Len(Range("e" & gyo).Value)
>>
>> Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri1)
>> Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri1 + 1, nagasa - kugiri2 + 1)
>> Range("J" & gyo).Value = Right(Range("e" & gyo).Value, nagasa - kugiri2)
>>
>>
>> Next
>>
>>
>>
>>End Sub
>>===設問[3] ここまで===
>>
>>
>>===設問[4] ここから===
>>
>>Sub furiwake4()
>> Dim gyo
>> For gyo = 2 To 11
>> Dim kugiri
>> kugiri = InStr(Range("c" & gyo).Value, "区")
>>
>> If kugiri > 0 Then
>> Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
>> Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)
>>
>> Else
>> kugiri = InStr(Range("c" & gyo).Value, "市")
>> Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
>> Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)
>>
>> End If
>>
>> Next
>>
>>
>>
>>End Sub
>>===設問[4] ここまで===
>>
>>===設問[5] ここから===
>>
>>Sub furiwake5()
>>
>> Dim kugiri
>> Dim gyo
>>
>> For gyo = 2 To 11
>> kugiri = InStr(Range("e" & gyo).Value, "線")
>> If kugiri > 0 Then
>>
>> Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri)
>> Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri + 1)
>>
>> Else
>> kugiri = InStr(Range("e" & gyo).Value, "ル")
>> Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri)
>> Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri + 1)
>>
>> End If
>>
>> Next
>>
>>
>>
>>End Sub
>>===設問[5] ここまで===
>
コメント日時: 2014年07月25日 06時03分07秒
コメントID: 1230 小川慶一さんからのお返事
明石 照伸 さん:

はい!模範解答もみてみてください。
ひきつづきよろしくお願いいたします (^^

>小川慶一 さん:
>
>コメントありがとうございます。(^^
>
>ちょっとIF~Else~のところの流れがいけてない
>感じがしていたのですが、小川さんのアドバイスで
>もうすこしすっきりかけそうな気がします。
>
>試しながらやってみます。(^^
>
>
>
>
>>明石 照伸 さん:
>>
>>楽しんでますね!
>>
>>設問[3]について。
>>Right関数を使うという発想、とてもよいと思います!
>>
>>設問[4], [5] について。
>>
>>たとえば[4]について言うと、If文の中で以下の2行が True のとき False のときの2回登場していますね。
>>そこの冗長さを解決したいです。
>>
>>
            Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
>>            Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)
>>
>>ひきつづきお楽しみを!
>>
>>
>>
>>>お世話になります。
>>>
>>>上記設問[3]、[4]、[5]について以下回答案作成してみました。
>>>アドバイス等いただけますと幸いです。
>>>
>>>よろしくお願いいたします。
>>>
>>>===設問[3] ここから===
>>>
>>>Sub furiwake3()
>>> Dim kugiri1 '文字列の最初の区切り
>>> Dim kugiri2 '文字列の2番目の区切り
>>> Dim nagasa '文字列の長さ
>>> Dim gyo
>>>
>>> For gyo = 2 To 51
>>> kugiri1 = InStr(1, Range("e" & gyo).Value, "線")
>>> kugiri2 = InStr(1, Range("e" & gyo).Value, "駅")
>>> nagasa = Len(Range("e" & gyo).Value)
>>>
>>> Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri1)
>>> Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri1 + 1, nagasa - kugiri2 + 1)
>>> Range("J" & gyo).Value = Right(Range("e" & gyo).Value, nagasa - kugiri2)
>>>
>>>
>>> Next
>>>
>>>
>>>
>>>End Sub
>>>===設問[3] ここまで===
>>>
>>>
>>>===設問[4] ここから===
>>>
>>>Sub furiwake4()
>>> Dim gyo
>>> For gyo = 2 To 11
>>> Dim kugiri
>>> kugiri = InStr(Range("c" & gyo).Value, "区")
>>>
>>> If kugiri > 0 Then
>>> Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
>>> Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)
>>>
>>> Else
>>> kugiri = InStr(Range("c" & gyo).Value, "市")
>>> Range("f" & gyo).Value = Left(Range("c" & gyo).Value, kugiri)
>>> Range("g" & gyo).Value = Mid(Range("c" & gyo).Value, kugiri + 1)
>>>
>>> End If
>>>
>>> Next
>>>
>>>
>>>
>>>End Sub
>>>===設問[4] ここまで===
>>>
>>>===設問[5] ここから===
>>>
>>>Sub furiwake5()
>>>
>>> Dim kugiri
>>> Dim gyo
>>>
>>> For gyo = 2 To 11
>>> kugiri = InStr(Range("e" & gyo).Value, "線")
>>> If kugiri > 0 Then
>>>
>>> Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri)
>>> Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri + 1)
>>>
>>> Else
>>> kugiri = InStr(Range("e" & gyo).Value, "ル")
>>> Range("h" & gyo).Value = Left(Range("e" & gyo).Value, kugiri)
>>> Range("i" & gyo).Value = Mid(Range("e" & gyo).Value, kugiri + 1)
>>>
>>> End If
>>>
>>> Next
>>>
>>>
>>>
>>>End Sub
>>>===設問[5] ここまで===
>>
>
コメント日時: 2014年07月25日 14時48分28秒
投稿ID: 123 薄木洋祐さんの投稿
いい復習になりました!
投稿日時: 2014年03月23日 23時56分29秒
コメントID: 807 小川慶一さんからのお返事
薄木洋祐 さん:

よかったです!ひきつづき、お楽しみを!

>いい復習になりました!
コメント日時: 2014年03月24日 16時27分03秒
投稿ID: 65 受講生さんの投稿
動画を見てスーっと入っていくような感じがして楽しくなってきました。
投稿日時: 2014年01月18日 19時44分37秒
コメントID: 747 小川慶一さんからのお返事
匿名さん:

いい感じですね。そのまま、見た瞬間答えが頭に浮かぶようになるまで続けてください。

>動画を見てスーっと入っていくような感じがして楽しくなってきました。
コメント日時: 2014年01月18日 21時42分04秒