複数の記号に挟まれた文字列を取り出す

この講座は有料講座です。
講座の購入後ご覧になれます。

ログインアカウントの新規作成

解説

演習問題テーマ:複数の記号に挟まれた文字列を取り出す

●●●/▲▲▲▲▲/■■■といった形でひとつのセルに格納された情報から、「▲▲▲▲▲」を取り出す。
といった具合に、複数回登場する同じ記号に挟まれた文字列を取り出すことがよくあります。
その方法を解説します。

Instr関数の引数指定がポイントです。

No.0015 - 問題(前半)

[1]
シート「問題」のセルE3の文字列を元にして、Left関数、Mid関数を用い、以下を行うマクロを作れ
セルF3に路線名を記入する
セルG3に駅名を記入する
セルH3に駅からの距離を記入する

[2]
シート「問題」のセルE3の文字列に対して、以下を行うマクロを作れ
セルI3に、2つのスラッシュのうち、左にあるものが左から何文字目にあるかを記入する
セルJ3に、2つのスラッシュのうち、右にあるものが左から何文字目にあるかを記入する

[3]
シート「問題」のセルE3の文字列について、含まれる路線名、駅名の文字数に関わらず[1]と同様の処理を行うマクロを作れ

[4]
[3]と同様の処理をセルE2-E51のすべての文字列に対して行うマクロを作れ


No.0015 - 問題(後半)

以下では、「RC」という文字列は「鉄筋コンクリート」を指し、「SRC」という文字列は「鉄骨鉄筋コンクリート」を指すものとする。
また、セルD2-D51では、左のスラッシュより手前には、RCとSRCしか出現しないものとする。

[5]
セルD3の文字列を元にして、セルI3-K3のように記入するマクロを作れ

[6]
セルD2-D51のすべての文字列に対して、[4]と同様の処理を行うマクロを作れ

[7]
セルD3の文字列を元にして、セルL3ように記入するマクロを作れ

[8]
セルD2-D51のすべての文字列に対して、[7]と同様の処理を行うマクロを作れ

この教材についての過去の質問・感想

11039 : 小川慶一の回答 (2019-01-30 07:39:37)

ゲストさん:

こんにちは。

あれ、こんな超頻出関数、講座本編でお伝えしてないわけないよな...と思って調べたのですが。
お伝えしてないですね。すいません。

講座本編に追加しようと思います。

とりいそぎ別講座のテキストから関連資料をここに転載しますので、ご活用ください。
https://www.dropbox.com/s/tdnrrndabs72ywb/hatten1_text_StrFuncs.pdf?dl=0

もうしわけありません。


> Replace 関数?
> 過去に習いましたでしょうか?


11032 : ゲストさんのコメント (2019-01-29 07:10:40)

Replace 関数?
過去に習いましたでしょうか?


10199 : 小川慶一の回答 (2018-07-02 09:35:21)

morimotoさん:

順調そうでなにより☆

理系科目のというか論理的思考力を問われる課題というのは、すべて、このようにとくものです。
[1] まずは小さなものから。そしてだんだん大がかりに。
[2] まずは書いてみる。
[3] まずは実行してみる。

あとは、あえてこれに付け加えるとするならば、以下ですかね。

[4] 可能な限り同じパターンを再活用する。



> 動画後半の課題F,G,H列を作らず直接I列を作りだすことにトライし完成しました。
> たまにですがコードを入力しながらどの部分をdim定義しようか迷う場面がよくあるのですが、1つずつコードを作っていくと見えてくるもんですね。
> 不思議です。
> ハナコステップの前段のダンゴをどう作ったらいいか、、、ダンゴを練っていくと見通しが立つものですね。
> これもこのわかりやすい講座のおかげです。早く発展編、フォーム編へ行きたいです。


10194 : morimotoさんのコメント (2018-07-01 22:08:44)

動画後半の課題F,G,H列を作らず直接I列を作りだすことに
トライし完成しました。たまにですがコードを入力しながらどの部分をdim定義しようか迷う場面がよくあるのですが、1つずつコードを作っていくと見えてくるもんですね。不思議です。ハナコステップの前段のダンゴをどう作ったらいいか、、、ダンゴを練っていくと見通しが立つものですね。これもこのわかりやすい講座のおかげ
です。早く発展編、フォーム編へ行きたいです。


10186 : 小川慶一の回答 (2018-07-01 10:47:10)

morimotoさん:

実は、マクロでよく使うパターンなり道具なりてのは、そんなにないです。
その中でも、Instr関数を使った解決のパターンは、頻出です。

ひきつづきお楽しみください☆


> ほんとinstr関数は最高強力です。クイックヒントでstartと出るので
> 意識して入力してます。/が2つありましたがすらすらできました。
> 久々&で挟む場面もあり復習になりました。今度は途中経過なく
> 一発でできるか検証したいです。ほんとわかりやすいです。


10170 : morimotoさんのコメント (2018-06-29 00:06:07)

ほんとinstr関数は最高強力です。クイックヒントでstartと出るので
意識して入力してます。/が2つありましたがすらすらできました。
久々&で挟む場面もあり復習になりました。今度は途中経過なく
一発でできるか検証したいです。ほんとわかりやすいです。


9346 : 小川慶一の回答 (2018-01-16 16:17:59)

吉川 裕子さん:

コメントありがとうございます。
instr関数で開始位置を指定するというのは、けっこう重要パターンです。

「条件分岐のパターンだけ徹底演習する」とかすればよいかもですね。
今、そういう教材を作ることを構想しています。

> 今回Instr関数はスタート位置が設定できるということを、新たに理解しました。
>
> 文字列を扱う関数はだいぶ慣れてきましたが、まだ頭をひねらないと答えに行きつかないので、繰り返し演習問題を解いていきたいと思います。
>


9344 : ガラパゴスタディー吉川の回答 (2018-01-15 16:49:25)

今回Instr関数はスタート位置が設定できるということを、新たに理解しました。

文字列を扱う関数はだいぶ慣れてきましたが、まだ頭をひねらないと答えに行きつかないので、繰り返し演習問題を解いていきたいと思います。


9337 : 小川慶一の回答 (2018-01-10 08:12:12)

受講生 さん:

変数を使う目的については、基礎編第1章で説明しています。
改めてこのタイミングで復習してみてください。
マインドマップを読み返すだけでOKです。

> この練習を数回するうちに変数の使い方が腑に落ち、便利さを実感しました。
>行を加えていく saki = saki + 1とともに実際に業務で使用して、成果を発揮、とても重宝しています。

エクセルマクロの習得は、つきつめて言うと、以下の4つについて学ぶということにすぎません。
[1] 調査対象を指定する
[2] 書き出し先を指定する
[3] 書き出しする条件を設定する
[4] 書き出す値を計算する

この練習は、主に、[1], [3], [4] にかかるものですね。
saki = saki + 1 は、[2]にかかる技術です。

ということで、極論を言うと、 saki = saki + 1 とこの問題を解けるようになれば最低限の学習は終わりです。
あとは、[1] - [4] のそれぞれについてバリエーションを増やすだけです。

演習問題は、そういう視点で学んでいただければ、また違って見えるものと思います。

ひきつづきお楽しみください☆


9334 : 受講生さんのコメント (2018-01-10 05:43:12)

この練習を数回するうちに変数の使い方が腑に落ち、便利さを実感しました。行を加えていく saki = saki + 1とともに実際に業務で使用して、成果を発揮、とても重宝しています。ありがとうございました。


8983 : 小川慶一の回答 (2017-10-02 14:54:14)

受講生 さん:

> Instr関数
> Left関数
> Mid関数の復習になったが、いかに自分が理解していないかがわかった。

そんなもんです (^^;

> 何度も見直すこと。

というか、問題みた瞬間身体が勝手に動いてサラサラ課題を解けるくらいまで練習してください。
でないと、また、「○○の復習になったが、いかに自分が理解していないかがわかった」と思われることなるかと思います...。

> 文字列を分割するときに、前のスラッシュと後のスラッシュをInstr関数であらわすが今回のポイント
> Instr関数で見つけよう”/”を見つける。

発展編2まで行くと、簡単にこういう分割をする方法を学べるんですけどね。
基礎編レベルの時期は知識より腕力をつけることが大切なので、ここではあえて Instr関数をくり返し使うベタな方法のみ教示しています。


8982 : 受講生さんのコメント (2017-10-02 12:38:39)

Instr関数
Left関数
Mid関数の復習になったが、いかに自分が理解していないかがわかった。
何度も見直すこと。

文字列を分割するときに、前のスラッシュと後のスラッシュをInstr関数であらわすが今回のポイント
Instr関数で見つけよう”/”を見つける。


8730 : 小川慶一の回答 (2017-08-15 19:35:37)

受講生 さん:

良いかと思います。


8712 : 受講生さんのコメント (2017-08-14 13:31:09)

【動画9】 文字列を加工してデータ転記する(その2)をヒントに
D列の文字列を3分割にする方法でマクロを書いてみました。
知識の再利用と文字列の切り出しが面白くなってきました。

Sub mondai()
    Dim mae
    Dim ato
    Dim kouzou
    Dim kouzoumae
    Dim kouzouato
    Dim gyou
    For gyou = 2 To 51
        kouzou = Range("D" & gyou).Value
        mae = InStr(kouzou, "/")
        kouzoumae = Left(kouzou, mae - 1)
        If kouzoumae = "RC" Then
            Range("F" & gyou).Value = "鉄筋コンクリート"
        Else
            Range("F" & gyou).Value = "鉄骨鉄筋コンクリート"
        End If
        kouzouato = Mid(kouzou, mae + 1)
        ato = InStr(kouzouato, "/")
        Range("G" & gyou).Value = Left(kouzouato, ato - 1)
        Range("H" & gyou).Value = Mid(kouzouato, ato + 1)
        Range("I" & gyou).Value = Range("F" & gyou).Value & Range("H" & gyou).Value & "建ての" & Range("G" & gyou).Value & "階部分"
    Next gyou
End Sub


6151 : 小川慶一の回答 (2016-03-27 20:12:02)

受講生 さん:

>"/"で区切られた中間文字列だけ取り出す方法を基礎編で最初に聞いたときは
>うへーなんて複雑なことするんだΣ( ̄ロ ̄lll)ガーン ちゃんと消化できるか自分?と
>感じたものですが、似たような問題を繰り返しこなすうち、気がついたら
>全然平気になりました。今はむしろそのことに驚いています。Σ( ̄ロ ̄lll)ガーン

演習しっかりやって、じっくり学ばれているからです。
ウチの教材でフツーに勉強してれば、めっさマクロ書けるようになりますよ。

>この場合のtekkinは「鉄筋コンクリート」、そうでないときは「鉄骨鉄筋コンクリート」を
>代入しなさいと命じて、分岐処理をしても同じ変数を使って1行で済んでしまうという
>スマートさあたりが理解不十分みたいです。
>私の記憶では、このような変数の使い方はこれで2回目です。

いやーこんなのも、慣れです。慣れ慣れ。
たいしたことないです。たぶん、明日見直したら、また違う感想持たれることでしょう。


6143 : 受講生さんのコメント (2016-03-27 01:59:20)

[1]問については、今まで何度も教わった内容なので、
じっくり小さなステップを積み上げていけばちゃんと解けました。
元データや区切り文字位置をどんどん変数に置き換えていけば、
式も分かりやすくなるし、ミスにも気がつきやすく、すっきりしますよね。

"/"で区切られた中間文字列だけ取り出す方法を基礎編で最初に聞いたときは
うへーなんて複雑なことするんだΣ( ̄ロ ̄lll)ガーン ちゃんと消化できるか自分?と
感じたものですが、似たような問題を繰り返しこなすうち、気がついたら
全然平気になりました。今はむしろそのことに驚いています。Σ( ̄ロ ̄lll)ガーン

なので今回は先生が[2]問をどのようにするのか楽しみでした。
つまり変数というのは、結局値を代入するだけなのですから、
コピペで簡単にできちゃうんですね・・・Σ( ̄ロ ̄lll)ガーン

ただF列のように、分岐処理をする場合の変数の扱いにはまだ慣れていません。
この場合のtekkinは「鉄筋コンクリート」、そうでないときは「鉄骨鉄筋コンクリート」を
代入しなさいと命じて、分岐処理をしても同じ変数を使って1行で済んでしまうという
スマートさあたりが理解不十分みたいです。
私の記憶では、このような変数の使い方はこれで2回目です。
ちゃんと理解して使いこなせたら便利なので、今後の課題にします(^▽^)
by gooska


5497 : 受講生さんのコメント (2015-12-23 19:33:48)

小川慶一 さん:

僕は、「デスクトップに戻る」という操作をほとんどしません。 [Alt] + [Tab] で開きたいウィンドウをいつでもアクティブにできるのであれば、その操作必要ないのでは?
→確かにそうでした。Wn+Dは使用しないような操作を心がけてみます。

気軽に質問できるのでモチベーションがあがります!
またよろしくお願いいたます。
ありがとうございました。

>受講生 さん:
>
>[Wn] + [D] のときの [Wn] は僕は小指ですね。
>もっとも、僕は、「デスクトップに戻る」という操作をほとんどしません。 [Alt] + [Tab] で開きたいウィンドウをいつでもアクティブにできるのであれば、その操作必要ないのでは?
>
>
>>小川慶一 さん:
>>
>>丁寧な説明ありがとうございます。
>>参考にいたします。
>>
>>もう一つ。。
>>私のキーボードは、WindowsマークがAltの隣にあるのですが、
>>Alt+Tabの作業のあとに、デスクトップに戻るためWindowsマーク+Dを押すことが多々あるのですが
>>Alt+Tab→ [Alt] は左手親指、 [Tab] は左手小指で押したあとに
>>Windowsマーク+Dを押すときに、どの指で押すかいつも迷ってます。。
>>先生のキーボードがもし同じ作りでしたらどのように対応されているか教えていただけますでしょうか。
>>
>>どうぞよろしくお願いいたます。
>>
>>>受講生 さん:
>>>
>>>> 先生はPgUp、PgDnが右上にある場合は小指で打っていますか?
>>>
>>>小指ですね。
>>>
>>>> Ctrl/やシフト、Altを押すときも、どの指で押せばいいかいつも迷ってしまいます。
>>>
>>>一般的に言うと、ホームポジションより外にあるキーは小指です。
>>>ですから、シフトキーは小指ですね。
>>>
>>>ホームポジションより内にあるキーは小指または親指です。
>>>
>>>
>>>Ctrl, Altキーについては、キーボードにもよるかとは思いますが、それらのキーがどのキーの下にあるかによります。
>>>僕が今このコメントを書いているとき使っていくのは ThinkPad X250 ですのでそれを例にして説明しますと:
>>>
>>>【1】 左 Ctrlキー: [Z] より外側にあるので左手小指
>>>【2】 右 Ctrlキー: [L], [>] のラインに並んでいます。[L], [>] と同様に右手小指。
>>>【3】 左 Alt キー: [S], [X] のラインに並んでいます。[S], [X] と同様に左手薬指か、親指。
>>>【4】 右 Alt キー: [J], [M] のラインに並んでいます。[J], [M] と同様に右手人差し指か、親指。
>>>
>>>【3】で親指を使う例を挙げれば、 [Alt] を押しながら [Tab] を押すときが僕の場合それですね。
>>>この操作のとき、僕は、 [Alt] は左手親指、 [Tab] は左手小指で押しています。
>>>
>>>
>>>>小川先生
>>>>タイピングについて質問させてください。文字のタイピングはだいぶ早くなったのですが、ショートカットキーの手の動かし方が遅くいつも間違ってしまいます。
>>>>キーボードにもよると思いますが、先生はPgUp、PgDnが右上にある場合は小指で打っていますか?またそのほかCtrl/やシフト、Altを押すときも、どの指で押せばいいかいつも迷ってしまいます。
>>>>アドバイスありましたらお願いいたします。
>>>
>>>
>>
>


5491 : 小川慶一の回答 (2015-12-22 09:20:54)

受講生 さん:

[Wn] + [D] のときの [Wn] は僕は小指ですね。
もっとも、僕は、「デスクトップに戻る」という操作をほとんどしません。 [Alt] + [Tab] で開きたいウィンドウをいつでもアクティブにできるのであれば、その操作必要ないのでは?


>小川慶一 さん:
>
>丁寧な説明ありがとうございます。
>参考にいたします。
>
>もう一つ。。
>私のキーボードは、WindowsマークがAltの隣にあるのですが、
>Alt+Tabの作業のあとに、デスクトップに戻るためWindowsマーク+Dを押すことが多々あるのですが
>Alt+Tab→ [Alt] は左手親指、 [Tab] は左手小指で押したあとに
>Windowsマーク+Dを押すときに、どの指で押すかいつも迷ってます。。
>先生のキーボードがもし同じ作りでしたらどのように対応されているか教えていただけますでしょうか。
>
>どうぞよろしくお願いいたます。
>
>>受講生 さん:
>>
>>> 先生はPgUp、PgDnが右上にある場合は小指で打っていますか?
>>
>>小指ですね。
>>
>>> Ctrl/やシフト、Altを押すときも、どの指で押せばいいかいつも迷ってしまいます。
>>
>>一般的に言うと、ホームポジションより外にあるキーは小指です。
>>ですから、シフトキーは小指ですね。
>>
>>ホームポジションより内にあるキーは小指または親指です。
>>
>>
>>Ctrl, Altキーについては、キーボードにもよるかとは思いますが、それらのキーがどのキーの下にあるかによります。
>>僕が今このコメントを書いているとき使っていくのは ThinkPad X250 ですのでそれを例にして説明しますと:
>>
>>【1】 左 Ctrlキー: [Z] より外側にあるので左手小指
>>【2】 右 Ctrlキー: [L], [>] のラインに並んでいます。[L], [>] と同様に右手小指。
>>【3】 左 Alt キー: [S], [X] のラインに並んでいます。[S], [X] と同様に左手薬指か、親指。
>>【4】 右 Alt キー: [J], [M] のラインに並んでいます。[J], [M] と同様に右手人差し指か、親指。
>>
>>【3】で親指を使う例を挙げれば、 [Alt] を押しながら [Tab] を押すときが僕の場合それですね。
>>この操作のとき、僕は、 [Alt] は左手親指、 [Tab] は左手小指で押しています。
>>
>>
>>>小川先生
>>>タイピングについて質問させてください。文字のタイピングはだいぶ早くなったのですが、ショートカットキーの手の動かし方が遅くいつも間違ってしまいます。
>>>キーボードにもよると思いますが、先生はPgUp、PgDnが右上にある場合は小指で打っていますか?またそのほかCtrl/やシフト、Altを押すときも、どの指で押せばいいかいつも迷ってしまいます。
>>>アドバイスありましたらお願いいたします。
>>
>>
>


5487 : 受講生さんのコメント (2015-12-21 16:59:39)

小川慶一 さん:

丁寧な説明ありがとうございます。
参考にいたします。

もう一つ。。
私のキーボードは、WindowsマークがAltの隣にあるのですが、
Alt+Tabの作業のあとに、デスクトップに戻るためWindowsマーク+Dを押すことが多々あるのですが
Alt+Tab→ [Alt] は左手親指、 [Tab] は左手小指で押したあとに
Windowsマーク+Dを押すときに、どの指で押すかいつも迷ってます。。
先生のキーボードがもし同じ作りでしたらどのように対応されているか教えていただけますでしょうか。

どうぞよろしくお願いいたます。

>受講生 さん:
>
>> 先生はPgUp、PgDnが右上にある場合は小指で打っていますか?
>
>小指ですね。
>
>> Ctrl/やシフト、Altを押すときも、どの指で押せばいいかいつも迷ってしまいます。
>
>一般的に言うと、ホームポジションより外にあるキーは小指です。
>ですから、シフトキーは小指ですね。
>
>ホームポジションより内にあるキーは小指または親指です。
>
>
>Ctrl, Altキーについては、キーボードにもよるかとは思いますが、それらのキーがどのキーの下にあるかによります。
>僕が今このコメントを書いているとき使っていくのは ThinkPad X250 ですのでそれを例にして説明しますと:
>
>【1】 左 Ctrlキー: [Z] より外側にあるので左手小指
>【2】 右 Ctrlキー: [L], [>] のラインに並んでいます。[L], [>] と同様に右手小指。
>【3】 左 Alt キー: [S], [X] のラインに並んでいます。[S], [X] と同様に左手薬指か、親指。
>【4】 右 Alt キー: [J], [M] のラインに並んでいます。[J], [M] と同様に右手人差し指か、親指。
>
>【3】で親指を使う例を挙げれば、 [Alt] を押しながら [Tab] を押すときが僕の場合それですね。
>この操作のとき、僕は、 [Alt] は左手親指、 [Tab] は左手小指で押しています。
>
>
>>小川先生
>>タイピングについて質問させてください。文字のタイピングはだいぶ早くなったのですが、ショートカットキーの手の動かし方が遅くいつも間違ってしまいます。
>>キーボードにもよると思いますが、先生はPgUp、PgDnが右上にある場合は小指で打っていますか?またそのほかCtrl/やシフト、Altを押すときも、どの指で押せばいいかいつも迷ってしまいます。
>>アドバイスありましたらお願いいたします。
>
>


5481 : 小川慶一の回答 (2015-12-20 13:02:28)

受講生 さん:

> 先生はPgUp、PgDnが右上にある場合は小指で打っていますか?

小指ですね。

> Ctrl/やシフト、Altを押すときも、どの指で押せばいいかいつも迷ってしまいます。

一般的に言うと、ホームポジションより外にあるキーは小指です。
ですから、シフトキーは小指ですね。

ホームポジションより内にあるキーは小指または親指です。


Ctrl, Altキーについては、キーボードにもよるかとは思いますが、それらのキーがどのキーの下にあるかによります。
僕が今このコメントを書いているとき使っていくのは ThinkPad X250 ですのでそれを例にして説明しますと:

【1】 左 Ctrlキー: [Z] より外側にあるので左手小指
【2】 右 Ctrlキー: [L], [>] のラインに並んでいます。[L], [>] と同様に右手小指。
【3】 左 Alt キー: [S], [X] のラインに並んでいます。[S], [X] と同様に左手薬指か、親指。
【4】 右 Alt キー: [J], [M] のラインに並んでいます。[J], [M] と同様に右手人差し指か、親指。

【3】で親指を使う例を挙げれば、 [Alt] を押しながら [Tab] を押すときが僕の場合それですね。
この操作のとき、僕は、 [Alt] は左手親指、 [Tab] は左手小指で押しています。


>小川先生
>タイピングについて質問させてください。文字のタイピングはだいぶ早くなったのですが、ショートカットキーの手の動かし方が遅くいつも間違ってしまいます。
>キーボードにもよると思いますが、先生はPgUp、PgDnが右上にある場合は小指で打っていますか?またそのほかCtrl/やシフト、Altを押すときも、どの指で押せばいいかいつも迷ってしまいます。
>アドバイスありましたらお願いいたします。


5477 : 受講生さんのコメント (2015-12-19 11:34:37)

小川先生
タイピングについて質問させてください。文字のタイピングはだいぶ早くなったのですが、ショートカットキーの手の動かし方が遅くいつも間違ってしまいます。
キーボードにもよると思いますが、先生はPgUp、PgDnが右上にある場合は小指で打っていますか?またそのほかCtrl/やシフト、Altを押すときも、どの指で押せばいいかいつも迷ってしまいます。
アドバイスありましたらお願いいたします。


5229 : 小川慶一の回答 (2015-11-08 07:03:36)

受講生 さん:

D列から値をとってきたら、途中経過の出力をいっさいせず、ただI列だけに結果を出力したい、ということです。
途中経過をいちいちF、G、H列に出力するのはダサいので。(出力の必要がないならしたくない)

最後のところで作ったマクロでは、上記の目標を達成しようとしました。

実務で考えても、マクロを実行する都度よけいな出力もするようなプログラムを作ってしまったら、実行後に手作業で不要な出力内容を消さなくてはなりません。
あるいは、不要な出力内容を消すマクロをさらに追加で書くとか。

上記の解説で理解いただけますでしょうか。




>小川先生
>お世話になります。
>この動画の最後のところで、Range("F" & gyo).Valueを 変数のtekkinにおきかえる場面がありますが、そこがにわかに理解しがたいです。
>変数のtekkinは、マクロを見る限り、 "鉄筋コンクリート" または "鉄筋鉄骨コンクリート" としか私には読めないからです。
>たしかにこれでも動きましたが、考え方や読み方のポイントを教えていただけますでしょうか。


5220 : 受講生さんのコメント (2015-11-08 05:47:14)

小川先生
お世話になります。
この動画の最後のところで、Range("F" & gyo).Valueを 変数のtekkinにおきかえる場面がありますが、そこがにわかに理解しがたいです。
変数のtekkinは、マクロを見る限り、 "鉄筋コンクリート" または "鉄筋鉄骨コンクリート" としか私には読めないからです。
たしかにこれでも動きましたが、考え方や読み方のポイントを教えていただけますでしょうか。


2628 : 小川慶一の回答 (2014-10-03 05:58:22)

匿名 さん:

はい。以下でよいかと (^^

Cells(i, "F").Resize(1, UBound(tmp) + 1) = tmp


↑華麗ですね (^^

>小川先生:
>
>小川先生のアドバイスを参考に、コードを修正してみました。
>修正する際に、動画の後半部分の解説が非常に参考になりました。
>
Sub Sample()    
    Dim i As Long, kouzou As String, tmp() As String
    For i = 2 To 51
        kouzou = Cells(i, 4).Value
        tmp = Split(kouzou, "/")
        If tmp(0) = "RC" Then
            tmp(0) = "鉄筋コンクリート"
        Else
            tmp(0) = "鉄骨鉄筋コンクリート"
        End If
        Cells(i, "F").Resize(1, UBound(tmp) + 1) = tmp
        Cells(i, "G").Value = Cells(i, "G").Value
        Cells(i, "I").Value = tmp(0) & tmp(2) & "建ての" & tmp(1) & "階部分"
    Next i
End Sub


2623 : 受講生さんのコメント (2014-10-02 20:28:34)

小川先生:

小川先生のアドバイスを参考に、コードを修正してみました。
修正する際に、動画の後半部分の解説が非常に参考になりました。

Sub Sample()
Dim i As Long, kouzou As String, tmp() As String
For i = 2 To 51
kouzou = Cells(i, 4).Value
tmp = Split(kouzou, "/")
If tmp(0) = "RC" Then
tmp(0) = "鉄筋コンクリート"
Else
tmp(0) = "鉄骨鉄筋コンクリート"
End If
Cells(i, "F").Resize(1, UBound(tmp) + 1) = tmp
Cells(i, "G").Value = Cells(i, "G").Value
Cells(i, "I").Value = tmp(0) & tmp(2) & "建ての" & tmp(1) & "階部分"
Next i
End Sub


>匿名 さん:
>
>配列は、ウチの講座では、発展編2で扱います。(なので、以下の議論は、基礎編レベルの方は安心してスルーしてください (^^; )
>
>区切り文字が前と後で異なる場合は、replace関数を使って変換してから split 関数、とかも考えられそうですね。
>「先に登場したスラッシュと後に登場したハイフン」のような法則だと「john-due/tokyo-japan」のようなデータで問題が起きそうでもありますが。
>
>僕なら、以下のコード、 tmp は文字列型の動的配列で宣言します。 tmp() as string です。
>
>あと、next の手前は、以下のように書くかな。
>
>

tmp(0) & tmp(2) & "建ての" & tmp(1) & "階部分"

>
>というのは、変数から値を拾ってくるほうが、オブジェクトへの参照をして所定のプロパティの値を取得するより高速なので。
>内部形式文字列型のvariantを取得して & でつなぐ、というのも高負荷かと。
>そういう意味でも、 tmp() as string で書いたほうが高速そうな予感です。体感できるほどの差にはならないでしょうが。
>
>>小川先生
>>今回は区切り文字が「/」しかなかったため、以下のように作ってみました。
>
>
Sub Sample()
>    Dim i As Long, kouzou As String, tmp As Variant
>    For i = 2 To 51
>        kouzou = Cells(i, 4).Value
>        tmp = Split(kouzou, "/")
>        If tmp(0) = "RC" Then
>            Cells(i, "F").Value = "鉄筋コンクリート"
>        Else
>            Cells(i, "F").Value = "鉄骨鉄筋コンクリート"
>        End If
>        Cells(i, "G").Value = tmp(1)
>        Cells(i, "H").Value = tmp(2)
>        Cells(i, "I").Value = Cells(i, "F").Value & tmp(2) & "建ての" & tmp(1) & "階部分"
>    Next i
>End Sub

>


2617 : 小川慶一の回答 (2014-10-02 08:30:14)

匿名 さん:

配列は、ウチの講座では、発展編2で扱います。(なので、以下の議論は、基礎編レベルの方は安心してスルーしてください (^^; )

区切り文字が前と後で異なる場合は、replace関数を使って変換してから split 関数、とかも考えられそうですね。
「先に登場したスラッシュと後に登場したハイフン」のような法則だと「john-due/tokyo-japan」のようなデータで問題が起きそうでもありますが。

僕なら、以下のコード、 tmp は文字列型の動的配列で宣言します。 tmp() as string です。

あと、next の手前は、以下のように書くかな。

tmp(0) & tmp(2) & "建ての" & tmp(1) & "階部分"


というのは、変数から値を拾ってくるほうが、オブジェクトへの参照をして所定のプロパティの値を取得するより高速なので。
内部形式文字列型のvariantを取得して & でつなぐ、というのも高負荷かと。
そういう意味でも、 tmp() as string で書いたほうが高速そうな予感です。体感できるほどの差にはならないでしょうが。

>小川先生
>今回は区切り文字が「/」しかなかったため、以下のように作ってみました。

Sub Sample()
    Dim i As Long, kouzou As String, tmp As Variant
    For i = 2 To 51
        kouzou = Cells(i, 4).Value
        tmp = Split(kouzou, "/")
        If tmp(0) = "RC" Then
            Cells(i, "F").Value = "鉄筋コンクリート"
        Else
            Cells(i, "F").Value = "鉄骨鉄筋コンクリート"
        End If
        Cells(i, "G").Value = tmp(1)
        Cells(i, "H").Value = tmp(2)
        Cells(i, "I").Value = Cells(i, "F").Value & tmp(2) & "建ての" & tmp(1) & "階部分"
    Next i
End Sub


2612 : 受講生さんのコメント (2014-10-01 21:13:32)

小川先生
今回は区切り文字が「/」しかなかったため、以下のように作ってみました。

Sub Sample()
Dim i As Long, kouzou As String, tmp As Variant
For i = 2 To 51
kouzou = Cells(i, 4).Value
tmp = Split(kouzou, "/")
If tmp(0) = "RC" Then
Cells(i, "F").Value = "鉄筋コンクリート"
Else
Cells(i, "F").Value = "鉄骨鉄筋コンクリート"
End If
Cells(i, "G").Value = tmp(1)
Cells(i, "H").Value = tmp(2)
Cells(i, "I").Value = Cells(i, "F").Value & tmp(2) & "建ての" & tmp(1) & "階部分"
Next i
End Sub


2582 : 小川慶一の回答 (2014-09-29 13:56:47)

匿名 さん:

確認しました。
何が言いたかったのかな。。すいません。僕も覚えていません。
今みると、(elseifはともかく)確かに例外への対応というところでは問題はありますが、僕が解説の中で作っているサンプルと程度は変わらないですね。


>小川先生
>
>すみません。2013-07-07付の小川先生のコメントですが、何が問題なのかが分かりません。
>(少なくともこのサンプルでは、問題は発生しないように思えるのですが・・・)。
>できましたら、ヒントを教えていただけませんでしょうか?
>蛇足ですが、ちなみに、私だったら、ElseIfは使いません。


2574 : 受講生さんのコメント (2014-09-28 14:14:37)

小川先生

すみません。2013-07-07付の小川先生のコメントですが、何が問題なのかが分かりません。
(少なくともこのサンプルでは、問題は発生しないように思えるのですが・・・)。
できましたら、ヒントを教えていただけませんでしょうか?
蛇足ですが、ちなみに、私だったら、ElseIfは使いません。


503 : ガラパゴスタディー事務局の回答 (2013-09-09 00:00:00)

小俣さん:

> セミナー参加依頼、職場でも毎日VBEを起動して何かしらやるようにしているのですが

おお、すばらしいですね☆

> 小川さんの動画解説はとても役に立ちますし、みなさんのコメント・質問を読むとさらに理解が深まったり発見があったりしますね。

ありがとうございます。あとから学ぶ人はそういう面でとても有利ですよね。


502 : 小俣卓生さんのコメント (2013-09-08 00:00:00)

1週間フォローアップの課題ができずにこの週末で一気にやったのですが、ようやく追いつくことができました。
セミナー参加依頼、職場でも毎日VBEを起動して何かしらやるようにしているのですがフォローアップの課題も一気にやるより毎日コツコツやったほうが断然、効果的ですね。

小川さんの動画解説はとても役に立ちますし、みなさんのコメント・質問を読むとさらに理解が深まったり発見があったりしますね。


501 : ガラパゴスタディー事務局の回答 (2013-07-07 00:01:00)

やまださん:

大変おもしろいアイデアです。。が、ざんねんながらちょっと問題。

逆に、このプログラムだとどういう問題が発生するか(どんなデータだとどんな問題が起こってしまうか)考えてみてください。
そういうのも、いいトレーニングになります


500 : やまださんのコメント (2013-07-07 00:00:00)

小川先生



下記のようなプログラムにしてみました。構いませんでしょうか?(ひねくれてるかも。もっと素直にかければいいと思うのですが)



・lenとrightを使用

・F列のところで「SRCの場合」と「RCの場合」で分岐



Sub mondai1woawasetemiruto()
 
 
 
Dim a
 
Dim b
 
Dim z
 
Dim v
 
Dim gyo
 
 
 
    For gyo = 2 To 51
 
 
 
            a = Range("d" & gyo)
 
            b = Len(a)
 
            z = InStr(a, "/")
 
            v = InStr(z + 1, a, "/")
 
 
 
                If InStr(a, "SRC") > 0 Then '列F
 
                    Range("F" & gyo) = "鉄骨鉄筋コンクリート"
 
                ElseIf InStr(a, "RC") > 0 Then
 
                    Range("F" & gyo) = "鉄筋コンクリート"
 
                End If
 
 
 
                Range("G" & gyo) = Mid(a, z + 1, v - z - 1) '列G
 
 
 
                Range("H" & gyo) = Right(a, b - v) '列H
 
 
 
    Next
 
 
 
End Sub


499 : ガラパゴスタディー事務局の回答 (2013-04-23 00:00:00)

池本さん:

極めて単純なところで。。

変数は値を何度も入れ直せるので、

for next 構文の中で何度も

再生成 → 値の投入

をするよりも

生成は一度で済ませたほうが効率よいからです。


498 : 池本利恵さんのコメント (2013-04-22 00:01:00)

こんにちは~☆

小川先生の宿題は・・

小人さんにすっきり仕事に専念してもらうため・・かな。
1回宣言しておけば、小人さんはわかるので、
小人さんの通り道に余計なものをおかないほうが小人さんに親切だからかな。

お団子は箱の中にいれたいんだけど、
変数宣言は箱にはってるシールみたいなものだから、
箱にシールをはっておけば
中のお団子に1個ずつシールをはらなくてもいいじゃんってこと・・・

かな?


497 : ガラパゴスタディー事務局の回答 (2013-04-22 00:00:00)

池本さん:

楽しんでいただけているようで、なにより (^^

お送りいただいたコードですが、 For Next 構文の中で変数宣言していますね。
For Next構文に入る前のほうが、タイミングとしてはよいです。

..と書けば池本さんならその理由はおわかりになるかと思いますが、どうしてだか、いちおう考えてみてください。

ではでは。


496 : 池本利恵さんのコメント (2013-04-20 00:00:00)

こんにちは~☆

2番目のスラッシュをどうやって小人さんにわかるように特定するのかが今回の学びどころでした。
instr関数で、■文字目以降のスラッシュの場所をひっぱってこられること、
そのためには、
まず何文字目以降なのかをきめて、
次にどこの何文字目以降なのか場所をいれて、
何文字目以降の何を探すかいれる、
の順で特定すること
と学習しました。

動画をみたあと先生がやっていたとおりにさら~っとマクロかけました(*^^*)♪
FGHの途中経過なしでいきなりIの情報をもってくるのもよくわかりました。
最後に自分でかいたマクロがとってもシンプルで短いのにびっくり感激しました~☆

私が動画をみる前に自力でかいたマクロの長いこと。スラッシュとスラッシュの間が2桁のときに対応できなくて四苦八苦したマクロです(^^;
でも自力でがんばった分、動画の説明がおもしろいほどすんなりと頭に入ります♪

Sub jugo()
    Dim gyo
    For gyo = 2 To 51
        Dim kozo
        kozo = InStr(Range("D" & gyo).Value, "RC")
        If kozo = 1 Then
        Range("F" & gyo).Value = "鉄筋コンクリート"
        Else
        Range("F" & gyo).Value = "鉄骨鉄筋コンクリート"
        End If
         
        Dim kai
        kai = InStr(Range("D" & gyo).Value, "/")
        Range("G" & gyo).Value = Mid(Range("D" & gyo).Value, kai + 1, 1)
         
        Dim takasa
        takasa = Mid(Range("D" & gyo).Value, kai + 3)
        Range("H" & gyo).Value = takasa
     
    Next
     
End Sub
 
Sub syosai()
    Dim gyo
    For gyo = 2 To 51
            Range("I" & gyo).Value = (Range("F" & gyo).Value & Range("H" & gyo).Value + "建ての" & Range("G" & gyo).Value + "階部分")
    Next
End Sub


495 : ガラパゴスタディー事務局の回答 (2013-03-07 00:00:00)

サエさん:

すいません。レス落ちていました。
この件は、もう解決というご様子でよかったです (^^;


494 : ガラパゴスタディー事務局の回答 (2013-03-05 00:01:00)

豊島さん:

それでも、まずは動けば万々歳です。
あとから直せばよいですから。

基礎編レベルとしては、むしろ、そこそこややこしいこともしっかりできる手元の技術がある、ということで、好ましいとも言えるかと ヾ(´ー`)ノ


493 : 豊島 久博さんのコメント (2013-03-05 00:00:00)

2番の問題で、RC、SRCの部分が条件分岐の部分に、変数を使えば、I列に表示するマクロがスムーズに書けるが、

        If Left(Range("d" & gyo).Value, n1 - 1) = "RC" Then
            Range("i" & gyo).Value = "鉄筋コンクリート" & Mid(Range("d" & gyo), n2 + 1) & "建ての" & Mid(Range("d" & gyo), n1 + 1, n2 - n1 - 1) & "階部分"
        ElseIf Left(Range("d" & gyo).Value, n1 - 1) = "SRC" Then
            Range("i" & gyo).Value = "鉄骨鉄筋コンクリート" & Mid(Range("d" & gyo), n2 + 1) & "建ての" & Mid(Range("d" & gyo), n1 + 1, n2 - n1 - 1) & "階部分"
        End If

としてしまいました。


492 : サエさんのコメント (2013-03-02 00:00:00)

あはは、、、 勘違いしていました。
小川せんせい のコメントの通り 出来ました。
Splitの引数に Replaceを、その引数にReplaceを、その引数に セルを指定 という具合で 文字型の変数にいれました。
ワークシート的な思考ですね。。
ありがとうございます。


491 : ガラパゴスタディー事務局の回答 (2013-03-01 00:00:00)

> 私には自分が定義する型は ややこしいです。
> 初心者としては 定義しなくてもよいオート機能を選んだ 結果 これです。

よく理解できなかったですが、オート機能というのは、 Variant 型のことですね。

ストイックに可読性や高速性を追求するのでなければ、まあ、動けばよいです。

option base 1 は、僕も使いません。インデックスが 0 からでなく 1 からになるのが IT 的に好きになれないです。


490 : サエさんのコメント (2013-02-28 00:00:00)

小川 せんせい。 私には自分が定義する型は ややこしいです。
初心者としては 定義しなくてもよいオート機能を選んだ 結果 これです。
option base 1 については 自分の中で統一をしたいので キット ずーと使わないかも しれません。 「箱入り娘」は後々 困る事になりそうですから、、、
でも、、、自分の定義が 自由に使えるようになったら 凄いですよね!!


489 : ガラパゴスタディー事務局の回答 (2013-02-27 00:00:00)

For Nextはひとつで済むはず。
そのとき、変数sbuは不要。
stmは文字列型の配列で。

VBの配列は、デフォルトの最小値 0 です。
1 からにしたいときは、 option base 1 にすること。


488 : 受講生さんのコメント (2013-02-26 00:00:00)

これも、一番多いパターン

Public Sub 記号データを文字列に()
    Dim i As Long
    Dim cut As Long
    Dim sbu() As String
    Dim stm As Variant
     
    cut = Range(Cells(2, 1), _
            Cells(Cells(Rows.Count, 1).End(xlUp).Row, 1)).Count
     
    ReDim sbu(cut) As String
 
    For i = 2 To cut + 1
        sbu(i - 1) = Replace(Cells(i, 4).Value, "RC", "鉄筋コンクリート")
    Next i
 
    For i = 2 To cut + 1
        stm = Split(sbu(i - 1), "/")
        Cells(i, 6) = Replace(stm(0), "S", "鉄骨")
        Cells(i, 7) = stm(1)
        Cells(i, 8) = stm(2)
        Cells(i, 9) = Replace(stm(0), "S", "鉄骨") & _
                        stm(2) & "建ての" & _
                        stm(1) & "階部分"
    Next i
End Sub

手直しお願いします。


487 : ガラパゴスタディー事務局の回答 (2013-02-04 00:00:00)

山根さん:

やりきれたのならば、すばらしいです ヾ(´ー`)ノ

コードは、かならずしも分量ではないです。
構造が分かりやすく冗長でないプログラムであれば、分量があってもぜんぜんかまわない(むしろ、可読性が増すならありがたい、ということも)ですよ。

以下、山根さんは違うと思いますが、今後このスレを見る方に向けて..。
何というか、初中級から中上級に向かうとき、抽象度を上げてコードの行数を短くすることに対して脅迫観念的な感覚を持つ人もいらっしゃいます。
基本は、「要は手順書だ」という意識です。手順書として考えたとき、どういう印象を抱くかを考えてみるとよいです。


486 : 山根信行さんのコメント (2013-02-03 00:00:00)

苦手な文字列操作なうえにInStr関数の引数を理解していなくて虫わきそうでえらい苦しみました。
後で動画見てびっくり。
こんなに記述多くなくてOKなんですね。

Sub Q1()
    Dim gyo As Long
    Dim Kozo As String
    Dim Maesura As Long
    For gyo = 2 To 51
        Maesura = InStr(Kozo, "/")
        Kozo = Range("D" & gyo).Value
        If InStr(Kozo, "SRC") <> 0 Then
            Range("F" & gyo).Value = "鉄骨鉄筋コンクリート"
        ElseIf InStr(Kozo, "SRC") = 0 Then
            Range("F" & gyo).Value = "鉄筋コンクリート"
        End If
        If InStr(Mid(Kozo, Maesura + 1), "/") = 2 Then
            Range("G" & gyo).Value = Left(Mid(Kozo, Maesura + 1), 1)
        ElseIf InStr(Mid(Kozo, Maesura + 1), "/") > 2 Then
            Range("G" & gyo).Value = Left(Mid(Kozo, Maesura + 1), 2)
        End If
        Range("H" & gyo).Value = Mid(Right(Kozo, 4), InStr(Right(Kozo, 4), "/") + 1)
        Range("I" & gyo).Value = Range("F" & gyo).Value & Range("H" & gyo).Value & _
            "建ての" & Range("G" & gyo).Value & "階部分"
    Next
End Sub


485 : ガラパゴスタディー事務局の回答 (2012-11-30 00:01:00)

佐藤さん:

> Instr関数、また出てきましたね。
> 開始場所を指定できるんですね~。って習ったはずなのに、またまた覚えてはいませんでした。

まー、なかなか一回では覚えられないです。
なので、このタイミングで出題しています。他の知識がそこそこ定着してきた今なら、覚えられるでしょ(w


> 他の方のコメントを読むと、自分が理解していないことに気付けたり、自分と同じように苦労している方がいたりするので刺激になります。

ですねー。その意気で!


484 : 佐藤 尚子さんのコメント (2012-11-30 00:00:00)

Instr関数、また出てきましたね。
開始場所を指定できるんですね~。って習ったはずなのに、またまた覚えてはいませんでした。
他の方のコメントを読むと、自分が理解していないことに気付けたり、自分と同じように苦労している方がいたりするので刺激になります。
繰り返し練習します。


483 : ガラパゴスタディー事務局の回答 (2012-11-05 00:02:00)

竹端さん、

> Instr関数で開始場所を指定出来ることを忘れていたため、少し苦労しました。

いきなりすぐお伝えしても残らないので、このタイミングで改めてお伝えしています (^^;


482 : ガラパゴスタディー事務局の回答 (2012-11-05 00:01:00)

加藤さん、

本当に、よくがんばっていらっしゃいますね。

昨日、セミナー当日にアシスタントをしてくれた小山さんとお話したのですが、
加藤さんのセミナー中~セミナーあとのがんばりのことが話題になっていました。

小山さん曰く。
「あの方(加藤さんのことです)は、声に出しながらひとつひとつの動作を確認したりとか、
本当にしっかり学んでおられて、すごいな、と思っていました」と。

受講生の鏡だと思います。ひきつづき、お楽しみください ヾ(´ー`)ノ


481 : 竹端博希さんのコメント (2012-11-05 00:00:00)

Instr関数で開始場所を指定出来ることを忘れていたため、少し苦労しました。Instr関数の機能をきちんと理解していること、またテキストを読んでいれば、スンナリと解けた問題なんですね。


480 : 加藤美智子さんのコメント (2012-11-04 00:00:00)

分割はフォローアップNo.08で苦しみましたので、今回はほどなく出来ました。
NO.08の駅名を出す時と同じように
変数「takasa」「tsura」を作って
takasa = Mid(kouzou, sura + 1)
tsura = InStr(takasa, "/")
でやりました。
Instr関数が開始場所を指定出来るなら、動画のようにもっとシンプルになると思いました。
動画のやり方でやってみま~す\(^o^)/


479 : 久武 美香さんのコメント (2012-10-25 00:00:00)

最初に書き始めたマクロは後が続かないと気づき途中でやめて、
以前にやった路線駅名を分割するマクロを参考にやり直しました。
もっと数をこなして、先まで見据えてできるようになれればいいのですが…


Sub mondai1() '←途中でG列以降が続かないと気づきやめました。
Dim kouzou
kouzou = Range("D2").Value
If InStr(kouzou, "SRC") > 0 Then
Range("F2").Value = "鉄骨鉄筋コンクリート"
Else
Range("F2").Value = "鉄筋コンクリート"
End If
End Sub


Sub mondai2()
Dim maesla
Dim atosla
Dim kouzou
Dim gyo
For gyo = 2 To 51
kouzou = Range("D" & gyo).Value
maesla = InStr(kouzou, "/")
atosla = InStr(maesla + 1, kouzou, "/")

If Left(kouzou, maesla - 1) = "RC" Then
Range("F" & gyo).Value = "鉄筋コンクリート"
Else
Range("F" & gyo).Value = "鉄骨鉄筋コンクリート"
End If
Range("G" & gyo).Value = Mid(kouzou, maesla + 1, atosla - maesla - 1)
Range("H" & gyo).Value = Mid(kouzou, atosla + 1)
Range("I" & gyo).Value = Range("F" & gyo).Value & Range("H" & gyo).Value & "建ての" & Range("G" & gyo).Value & "階部分"
Next
End Sub


478 : 有家 健司さんのコメント (2012-10-22 00:00:00)

>いいすね。まあ、有家さんなら、当然!いう感じですが (^^

いえ、滅相もございません。マクロを書く時の考え方取り組み方を教えて頂いて、問題演習の数をこなすまでは何も出来ませんでしたから。ありがとうございます。

>ひきつづき、お楽しみを!

はい。楽しみながら頑張ります。

Sub mondai1()
Dim kouzou
Dim mae
Dim ato
Dim gyo
For gyo = 2 To 51
kouzou = Range("D" & gyo).Value
mae = InStr(kouzou, "/")
ato = InStr(mae + 1, kouzou, "/")

Range("F" & gyo).Value = Left(kouzou, mae - 1)
If Range("F" & gyo).Value = "SRC" Then
Range("F" & gyo).Value = "鉄骨鉄筋コンクリート"
Else
Range("F" & gyo).Value = "鉄筋コンクリート"
End If

Range("G" & gyo).Value = Mid(kouzou, mae + 1, ato - mae - 1)
Range("H" & gyo).Value = Mid(kouzou, ato + 1)

Next
End Sub

Sub mondai2()
Dim gyo
For gyo = 2 To 51
Range("I" & gyo).Value = Range("F" & gyo).Value & Range("H" & gyo).Value & "建ての" & Range("G" & gyo).Value & "階部分"
Next
End Sub


1217 : 受講生さんのコメント (2012-09-11 10:46:00)

達人養成塾 小川です。

> 路線の問題で、駅と徒歩何分を分ける課題でやった時のマクロで組みました。
> midで切り抜いた文字列を次に利用するという点では同じなんですよね。

ですね。
というか、自分の得意な形(○○と同じと言える形)に持っていくまでの
プロセスに気づいて、それに持ち込めることが今回の狙いでした。

もっとも、前田さんならすぐに分かるようなことですが (^^


1216 : 受講生さんのコメント (2012-09-09 18:58:00)

今回も、書き方の違う部分が非常に勉強になりました。



Sub test()

Dim kai

Dim takasa

Dim kazu

Dim gyo

For gyo = 2 To 51

If InStr(Range("D" & gyo).Value, "SRC") > 0 Then

Range("F" & gyo).Value = "鉄骨鉄筋コンクリート"



Else

Range("F" & gyo).Value = "鉄筋コンクリート"

End If

kazu = InStr(Range("D" & gyo), "/")

kai = Mid(Range("D" & gyo), kazu + 1)

takasa = InStr(kai, "/")

Range("G" & gyo).Value = Left(kai, takasa - 1)

Range("H" & gyo).Value = Mid(kai, takasa + 1)

Next

End Sub



路線の問題で、駅と徒歩何分を分ける課題でやった時のマクロで組みました。midで切り抜いた文字列を次に利用するという点では同じなんですよね。


3日がかりのその仕事、3分で終わらせる方法教えます。ガラパゴスタディーオンライン講座 ユーザー登録

本講座の動画一覧

  1. 【動画1】 If文とForNext構文を組み合わせる
    【動画1】 If文とForNext構文を組み合わせる 未習得
  2. 【動画2】 複数条件を組み合わせた条件分岐
    【動画2】 複数条件を組み合わせた条件分岐 未習得
  3. 【動画3】 ElseIfを使った条件分岐
    【動画3】 ElseIfを使った条件分岐 未習得
  4. 【動画4】 出現回数を数える。CountIf関数がやっていることをマクロで書くと?
    【動画4】 出現回数を数える。CountIf関数がやっていることをマクロで書くと? 未習得
  5. 【動画5】 条件に一致するデータを別表に転記する。AutoFilterより便利な条件抽出マクロ。
    【動画5】 条件に一致するデータを別表に転記する。AutoFilterより便利な条件抽出マクロ。 未習得
  6. 【動画6】 条件に一致するデータを別シートに転記する
    【動画6】 条件に一致するデータを別シートに転記する 未習得
  7. 【動画7】 とびとびに存在するデータを拾って加工する
    【動画7】 とびとびに存在するデータを拾って加工する 未習得
  8. 【動画8】 文字列を加工してデータ転記する(その1)
    【動画8】 文字列を加工してデータ転記する(その1) 未習得
  9. 【動画9】 文字列を加工してデータ転記する(その2)
    【動画9】 文字列を加工してデータ転記する(その2) 未習得
  10. 【動画10】 文字列を加工してデータ転記する(その3)
    【動画10】 文字列を加工してデータ転記する(その3) 未習得
  11. 【動画11】 勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?
    【動画11】 勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと? 未習得
  12. 【動画12】 残業時間がいちばん多い従業員の情報を出力する。Max関数、Min関数より便利なマクロ
    【動画12】 残業時間がいちばん多い従業員の情報を出力する。Max関数、Min関数より便利なマクロ 未習得
  13. 【動画13】 複数の表の間でのマッチング。VLookUp関数がやっていることをマクロで書くと?
    【動画13】 複数の表の間でのマッチング。VLookUp関数がやっていることをマクロで書くと? 未習得
  14. 【動画14】 文字列を様々に解析して条件分岐
    【動画14】 文字列を様々に解析して条件分岐 未習得
  15. 【動画15】 複数の記号に挟まれた文字列を取り出す
    【動画15】 複数の記号に挟まれた文字列を取り出す 未習得
  16. 【動画16】 各資料ごとに1番からの番号を割り振る。AutoFill機能より便利なマクロ
    【動画16】 各資料ごとに1番からの番号を割り振る。AutoFill機能より便利なマクロ 未習得
  17. 【動画17】 表を解析して1行のリストを作る、1行のリストを解析して表にする(その1)
    【動画17】 表を解析して1行のリストを作る、1行のリストを解析して表にする(その1) 未習得
  18. 【動画18】 表を解析して1行のリストを作る、1行のリストを解析して表にする(その2)
    【動画18】 表を解析して1行のリストを作る、1行のリストを解析して表にする(その2) 未習得

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ