複数条件を組み合わせた条件分岐

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

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

解説

演習問題テーマ:複数条件を組み合わせた条件分岐

条件が2つあり、それが別の列にあるときの処理の仕方。まずはひとつの条件で動くマクロをつくり、それを使ってもうひとつの条件で動くマクロを1こ完成させるのが大事、For Next構文は最後です。ハナコのステップに忠実に従ってかいてください。

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

11468 : 小川慶一の回答 (2019-06-20 13:12:42)

矢口幸平さん:

応援しています。

基礎編第1章の手書きワークとか、とてもよいですよ。
ああいう、手を動かすワーク、とても大切です。実際にプログラムを書くということも同様です。

くり返しになりますが、他人がいい加減にやっている(が、大切なこと)にきっちり取り組むからこそ、他人が得られないスキルを得ることができるのです。
ここは、きっちり取り組まれることをおすすめします。


11467 : 矢口幸平さんのコメント (2019-06-20 12:21:50)

小川慶一さん:

早速の返信ありがとうございます。

そうですね。理解が著しく不足しているので、一から見直そうと思います。

夜分遅くの時間帯にご返信頂きありがとうございました。

今後とも何卒よろしくお願い致します。

矢口幸平

> 矢口幸平さん:
>
> そうですね。この回答内容だと、ベーシックでの練習がぜんぜん足りないと感じられます。
>
> いただいたコード、僕からお題として出したコードとも、以下のようにすればぜんぜん問題なかったわけです。
> それが分からず、「変数を用いた事自体がいけなかった」という結論になるのは、ひとえに、演習が足りないからです。
>
>

Sub danzyo_1()
>     Dim sei
>     Dim tensu
>     Dim gouhi
>      
>     sei = Range("c3").Value
>     tensu = Range("d3").Value
>      
>     gouhi = "合格"
>     
>     Range("h3").Value = gouhi '[追加]
> End Sub
> 
> Sub danzyo()
>     Dim sei
>     Dim tensu
>     Dim gouhi
>      
>     Dim gyo
>     For gyo = 2 To 11
>         sei = Range("c" & gyo).Value
>         tensu = Range("d" & gyo).Value
>         'gouhi = Range("h" & gyo).Value '[不要]
>          
>         If sei = "女性" Then
>             If tensu >= 70 Then
>                 gouhi = "合格"
>             Else
>                 gouhi = "不合格"
>             End If
>         Else
>             If tensu >= 80 Then
>                 gouhi = "合格"
>             Else
>                 gouhi = "不合格"
>             End If
>         End If
>         Range("h" & gyo).Value = gouhi '{追加]
>     Next
> End Sub

>
> あと、「プロパティの設定」とか「プロパティの取得」とか、「変数への値の格納の方法」、「変数からの値の取り出しの方法」ときった基本的なことについてもさっぱり理解されていないようです。
> 基礎編講座本編についても復習されることを強く推奨します。
>
> レジュメはすべて印刷して内容をチェックし、理解の漏れがないか?確認してください。
> それから、再度、動画を全部みなおされることをおすすめします。
>
> 他人がいい加減にやっている(が、大切なこと)にきっちり取り組むからこそ、他人が得られないスキルを得ることができるのです。
> ここは、きっちり取り組まれることをおすすめします。
>
>


11466 : 小川慶一の回答 (2019-06-19 23:23:29)

矢口幸平さん:

そうですね。この回答内容だと、ベーシックでの練習がぜんぜん足りないと感じられます。

いただいたコード、僕からお題として出したコードとも、以下のようにすればぜんぜん問題なかったわけです。
それが分からず、「変数を用いた事自体がいけなかった」という結論になるのは、ひとえに、演習が足りないからです。

Sub danzyo_1()
    Dim sei
    Dim tensu
    Dim gouhi
     
    sei = Range("c3").Value
    tensu = Range("d3").Value
     
    gouhi = "合格"
    
    Range("h3").Value = gouhi '[追加]
End Sub

Sub danzyo()
    Dim sei
    Dim tensu
    Dim gouhi
     
    Dim gyo
    For gyo = 2 To 11
        sei = Range("c" & gyo).Value
        tensu = Range("d" & gyo).Value
        'gouhi = Range("h" & gyo).Value '[不要]
         
        If sei = "女性" Then
            If tensu >= 70 Then
                gouhi = "合格"
            Else
                gouhi = "不合格"
            End If
        Else
            If tensu >= 80 Then
                gouhi = "合格"
            Else
                gouhi = "不合格"
            End If
        End If
        Range("h" & gyo).Value = gouhi '{追加]
    Next
End Sub


あと、「プロパティの設定」とか「プロパティの取得」とか、「変数への値の格納の方法」、「変数からの値の取り出しの方法」ときった基本的なことについてもさっぱり理解されていないようです。
基礎編講座本編についても復習されることを強く推奨します。

レジュメはすべて印刷して内容をチェックし、理解の漏れがないか?確認してください。
それから、再度、動画を全部みなおされることをおすすめします。

他人がいい加減にやっている(が、大切なこと)にきっちり取り組むからこそ、他人が得られないスキルを得ることができるのです。
ここは、きっちり取り組まれることをおすすめします。


11465 : 矢口幸平さんのコメント (2019-06-19 22:14:42)

小川慶一さん:

いつもお世話になります。

早速ご返信頂きありがとうございます。

問題は下記「'」で示した通りと考えました。
-----------------------------------
Sub danzyo01()
Dim sei
Dim tensu
Dim gouhi

sei = Range("c3").Value 'seiという変数をセルc3の値にする
tensu = Range("d3").Value 'tensuという変数をセルd3の値にする

gouhi = "合格" 'gouhiという変数を"合格"という値にする
End Sub

'Range("c3").Value=○○○ としないと、永久に値が出力されません
'そのため、変数を用いた事自体がいけなかったのかと考えます
-----------------------------------

この内容を踏まえた上でコードを修正すると、下記の通りになるかと思います。
-----------------------------------
Sub danzyo()
Dim gyo
For gyo = 2 To 11

If Range("c" & gyo).Value = "女性" Then
If Range("d" & gyo).Value >= 70 Then
Range("h" & gyo).Value = "合格"
Else
Range("h" & gyo).Value = "不合格"
End If
Else
If Range("d" & gyo).Value >= 80 Then
Range("h" & gyo).Value = "合格"
Else
Range("h" & gyo).Value = "不合格"
End If
End If
Next
End Sub
-----------------------------------

この問題をすらすら解けなかった事もあり、改めてベーシックをもう一度復習しようと考え直しました。
ベーシックの動画16くらいまでのお題は「見た瞬間解ける」というくらいになってから、アドバンスドに移行致します。

今後とも何卒宜しくお願い致します。

矢口 幸平

> 矢口幸平さん:
>
> 疑問が生じたら、そこだけだけ残してあとは極力省いたコードを書いてみるのが解決のコツです。
>
> 以下に、今回確認したいことと関係ない部分は極力省いたコードを用意しました。(もっと省けますが)
>
> これもやはり結果をエクセルシートに出力しないマクロです。
> どうしてだか、わかりますか。
>
>

Sub danzyo_1()
>     Dim sei
>     Dim tensu
>     Dim gouhi
>     
>     sei = Range("c3").Value
>     tensu = Range("d3").Value
>     
>     gouhi = "合格"
> End Sub

>
> > ベーシックを終了してアドバンスドに移行予定でしたが業務が繁忙であるため、6月末まではベーシックの復習中です。
>
> この問題を自力解決できない(というか、ひと目見て何が問題か分からない)ようですと、アドバンスドに進むには実力不足です。
>
> 6月末までと言わず、少なくとも全問もう一度解きなおすのが良いかと思います。
> アドバンスドを楽しんで&有意義に学ぶには、ベーシックの動画16くらいまでのお題は「見た瞬間解ける」というくらいになっておいたほうがよいです。
>
> アドバンスドに進まれても構いませんが、「しんどいな」と感じられたら、無理せずベーシックに戻って問題を解きなおしてください。
>


11456 : 小川慶一の回答 (2019-06-19 00:07:16)

矢口幸平さん:

疑問が生じたら、そこだけだけ残してあとは極力省いたコードを書いてみるのが解決のコツです。

以下に、今回確認したいことと関係ない部分は極力省いたコードを用意しました。(もっと省けますが)

これもやはり結果をエクセルシートに出力しないマクロです。
どうしてだか、わかりますか。

Sub danzyo_1()
    Dim sei
    Dim tensu
    Dim gouhi
    
    sei = Range("c3").Value
    tensu = Range("d3").Value
    
    gouhi = "合格"
End Sub


> ベーシックを終了してアドバンスドに移行予定でしたが業務が繁忙であるため、6月末まではベーシックの復習中です。

この問題を自力解決できない(というか、ひと目見て何が問題か分からない)ようですと、アドバンスドに進むには実力不足です。

6月末までと言わず、少なくとも全問もう一度解きなおすのが良いかと思います。
アドバンスドを楽しんで&有意義に学ぶには、ベーシックの動画16くらいまでのお題は「見た瞬間解ける」というくらいになっておいたほうがよいです。

アドバンスドに進まれても構いませんが、「しんどいな」と感じられたら、無理せずベーシックに戻って問題を解きなおしてください。


11455 : 矢口幸平さんのコメント (2019-06-18 22:45:03)

こんにちは。いつもお世話になっております。
ベーシックを終了してアドバンスドに移行予定でしたが
業務が繁忙であるため、6月末まではベーシックの復習中です。

本題にうつり、質問致します。

【質問】問題2について
下記コードを記入しても、合否結果が出力されません。
gouhi の変数に変換した途端出力されなくなりました。
そのため、この変数設定の仕方が良くないと推測されますが
何が悪いのかわからず、堂々巡りとなっております。

ご回答頂けると嬉しいです。
宜しくお願い致します。

ーーーーーーーーーーーーーー以下コードーーーーーーーーーーーー

Sub danzyo()
    Dim sei
    Dim tensu
    Dim gouhi
    
    Dim gyo
    For gyo = 2 To 11
        sei = Range("c" & gyo).Value
        tensu = Range("d" & gyo).Value
        gouhi = Range("h" & gyo).Value
        
        If sei = "女性" Then
            If tensu >= 70 Then
                gouhi = "合格"
            Else
                gouhi = "不合格"
            End If
        Else
            If tensu >= 80 Then
                gouhi = "合格"
            Else
                gouhi = "不合格"
            End If
        End If
    Next
End Sub


11244 : 小川慶一の回答 (2019-03-11 11:34:29)

藤村英夫さん:

マクロを書くときに複数の構造が出てきたら、「ハナコ」を連続で行うことです。
発展編1に進むと、 And, Or, Not という、また別の技が登場します。

が、そういう知識がなくても、そこそこのことはできますね。
ひきつづきお楽しみください☆



> これはスゴイ!! 脱帽です!! for next 構文のハナコのステップは想像が届きますが、このIF then 構文の組合せの作法は思いもつきません。
> 私、いままで二重仮定のIF then構文は、IF とend ifの組合せがよくわからなくなるのです。
> これは、非常に参考になりました。


11233 : 藤村英夫さんのコメント (2019-03-09 17:36:41)

これはスゴイ!! 脱帽です!! for next 構文のハナコのステップは想像が届きますが、このIF then 構文の組合せの作法は思いもつきません。私、いままで二重仮定のIF then構文は、IF とend ifの組合せがよくわからなくなるのです。これは、非常に参考になりました。


11161 : 小川慶一の回答 (2019-02-15 19:09:43)

jinoseさん:

作法は大切ですね。

> [感想]
> ハナコのステップの凄さを再認識しました。このマクロを上から書いたら訳わからなくなると思いました。


11156 : jinoseさんのコメント (2019-02-14 06:57:42)

[感想]
ハナコのステップの凄さを再認識しました。このマクロを上から書いたら訳わからなくなると思いました。


9179 : 小川慶一の回答 (2017-12-06 12:20:38)

吉川 裕子さん:

And, Or は基礎編では扱ってないので、本講座では、If文を複数作って解決しています。

>最終的にどんな結果が欲しいかをキーにして考えることですっきりとマクロが書けることが改めてわかりました。

内側から書くのが分かりやすくて簡単ですね (^^


9177 : ガラパゴスタディー吉川の回答 (2017-12-05 14:26:00)

複数条件の場合、大きな箱とその中に入れる小さな箱の内容を並行して考えるより、最終的にどんな結果が欲しいかをキーにして考えることですっきりとマクロが書けることが改めてわかりました。
ハナコ、本当に大事ですね。


8924 : 小川慶一の回答 (2017-09-25 16:02:36)

横山 知明さん:

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

まずは少ない道具だけでできるようになることも大切です。
発展編で or, and を学ぶとよりメリハリのあるコードを書けるようになります。

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

> if then
> else
> end if の箱をつくって、それをまた
> if then
> else
> end if の箱に入れると、とても便利で実務で役立てられそうです。


8916 : 横山 知明さんのコメント (2017-09-22 21:38:30)

if then
else
end if の箱をつくって、それをまた
if then
else
end if の箱に入れると、とても便利で実務で役立てられそうです。


8831 : 小川慶一の回答 (2017-09-06 00:06:44)

受講生 さん:

ベタな解き方ですが。。まずは、自分で考えて解決できる力をつけるところから!

> ・西暦に変更するには昭和なら+1925する
>           平成なら+1988する
>  と和暦を西暦に変更できる。(なるほど)
>
> ・男性女性を点数ごとに合否を分けるには
> If文の中にIf文を作る。
>  まずは何かしら動くマクロを求めたいところに書くところからスタート
>


8826 : 受講生さんのコメント (2017-09-04 06:13:57)

・西暦に変更するには昭和なら+1925する
          平成なら+1988する
 と和暦を西暦に変更できる。(なるほど)

・男性女性を点数ごとに合否を分けるには
If文の中にIf文を作る。
 まずは何かしら動くマクロを求めたいところに書くところからスタート


6089 : 小川慶一の回答 (2016-03-24 12:42:04)

受講生 さん:

このペースで学ばれていて、かつ、他の方とのコメントやりとりも読まれているのですね。。すごい!

別の動画へのコメント返信で書きましたが、プログラミングでは様々な別解があるのが当たり前です。
と同時に、人のプログラム読めるようになるのは楽しいですよ。その人の仕事観とか、頭の中での構造化のレベルとか、どこまで気を使って仕事をしているのか?といったことまで見えます。手順書、引き継ぎ書にそういうことを感じることあると思います。それと同じ感覚。

僕は、ソース見ただけで、「コイツとは絶対口ききたくないな」とか「この人には、ぜひ一度お会いしてみたい!」とか、いろいろな感想を持ちます。


6035 : 受講生さんのコメント (2016-03-22 01:57:55)

今回も受講してから自分で解きました。バッチリできました。
毎回、この欄の過去のコメントも読んで参考にしています。
玉谷さんの別解、ちょっと考えて理解できました。(瞬時には分かりませんでした)
男女別とはいえ比較パターンは同じだから、条件式はそのままにして、
70点以上と80点以上の数値を変数にしたのですね。
今後基準点が変更される可能性があるなら、変数にするメリットがあると思いました。
将来人が作ったマクロを修正するような業務を想定するなら、自分でもある程度書けるだけでなく、
他人が作ったマクロを読む能力も必要だと感じました。
まだ私はこんなマクロは書けないので、まずは足元を固める訓練に専念します。
gooska


3695 : 小川慶一の回答 (2015-01-28 14:23:04)

ゲスト さん:

表現はいろいろですね。
いずれにしても、ポイント抑えていただけているようでよかったです。

ひきつづきよろしくお願いいたします。



>小川先生:
>
>ソ連時代に、検閲に引っかかりそうな部分だけどどうしても検閲を通過させて世に出したい、というときは
>検閲に引っかかること確実な部分を故意に散りばめておくと、
>役人がそれに気を取られてその部分に関しては「訂正命令」がでるが、
>作成者が本当に検閲を通過させたかった部分は「訂正命令」が出されず無事通過できる、というやり方 (こんな賢さは大好きです(ノ≧▽≦)ノ) を読んだときに、
>重要であることがわかりやすい部分に気を取られると、目立たないけど重要な部分を見逃してしまう、ということを思ったんです。
>
>
>動画閲覧より先に自分で書いておくと、動画を見たときに自分と小川先生で違う部分がはっきり分かるので、
>「目立たないけど自分にとって重要な部分」が確実につかめますヽ(*^∇^*)ノ
>
>>ゲスト さん:
>>
>>>自分で完成させてからはじめて動画を見ると
>>
>>体験は大切ですよね。
>>「自分で書く」ということをした方とそうでない方とでは、やはり、学びの深さが違います。
>>
>>>結果から逆順にたどればいいんですよね(
>>
>>確実にエクセル上で事件が起こるコードを最初に書くこと。
>>あとは、それを入れ子構造に入れていくだけです。
>>
>>
>>
>


3691 : 佐藤 あゆむさんのコメント (2015-01-26 06:36:08)

小川先生:

ソ連時代に、検閲に引っかかりそうな部分だけどどうしても検閲を通過させて世に出したい、というときは
検閲に引っかかること確実な部分を故意に散りばめておくと、
役人がそれに気を取られてその部分に関しては「訂正命令」がでるが、
作成者が本当に検閲を通過させたかった部分は「訂正命令」が出されず無事通過できる、というやり方 (こんな賢さは大好きです(ノ≧▽≦)ノ) を読んだときに、
重要であることがわかりやすい部分に気を取られると、目立たないけど重要な部分を見逃してしまう、ということを思ったんです。


動画閲覧より先に自分で書いておくと、動画を見たときに自分と小川先生で違う部分がはっきり分かるので、
「目立たないけど自分にとって重要な部分」が確実につかめますヽ(*^∇^*)ノ

>ゲスト さん:
>
>>自分で完成させてからはじめて動画を見ると
>
>体験は大切ですよね。
>「自分で書く」ということをした方とそうでない方とでは、やはり、学びの深さが違います。
>
>>結果から逆順にたどればいいんですよね(
>
>確実にエクセル上で事件が起こるコードを最初に書くこと。
>あとは、それを入れ子構造に入れていくだけです。
>
>
>


3686 : 小川慶一の回答 (2015-01-24 20:20:07)

ゲスト さん:

>自分で完成させてからはじめて動画を見ると

体験は大切ですよね。
「自分で書く」ということをした方とそうでない方とでは、やはり、学びの深さが違います。

>結果から逆順にたどればいいんですよね(

確実にエクセル上で事件が起こるコードを最初に書くこと。
あとは、それを入れ子構造に入れていくだけです。



3685 : 小川慶一の回答 (2015-01-24 20:18:17)

ゲスト さん:

ほかには、Google日本語入力も無料だけど便利ですよ。
「平成2年」を年号に変換することは出来ませんが、「きょう」の変換対象に「2015年1月24日」のように今日の日付が出てきたりします。


>すみません。よくよく聞いてみたら「ATOK使ってますので...」って言ってましたねf(^^;)
私のPCには入っていませんでした。


3679 : 佐藤 あゆむさんのコメント (2015-01-24 06:47:45)

おはようございます、あゆむです。

自分で完成させてからはじめて動画を見ると、はなこを意識していても自分の動きに無駄があることに気づきます。
今回初めて、動画通りに手順書を作成し自分でもう一度その通りに書いてみました。

うまくいったのでこれからはまず自分で手順書を書いてからマクロを書き始めるようにします♪
結果から逆順にたどればいいんですよね(v´∀`) こうして見ると完全に美しい入れ子構造になってますね(人*´∀`)

手順書はこのような感じになりました↓

「[2] 男性の場合は80点以上、女性の場合は70点以上を合格」
01 [団子]. 「合格」と記入するお団子を作る。range.value
02 [は]. If文で合格条件を記述する箱を作るIf then else end if
03 [な]. 【01 [団子].】を【03 [は].】の中に入れる
04 [こ].加工する (⇒新しい団子Aとなる)

05 [は]. If文で性別条件を記述する箱を作るIf then else end if
06 [な].【04 [こ]. (新しい団子A)】を【05 [は].】の中に入れる
07 [こ]. 加工する (⇒新しい団子Bとなる)

08 [は]. 繰り返し用の箱を作る。For Next
09 [な]. 【07 [こ]. 新しい団子B】を【08 [は].】の中に入れる
10 [こ]. 加工する (⇒団子完成)


3678 : 佐藤 あゆむさんのコメント (2015-01-24 05:41:58)

すみません。よくよく聞いてみたら「ATOK使ってますので...」って言ってましたねf(^^;)
私のPCには入っていませんでした。


3677 : 佐藤 あゆむさんのコメント (2015-01-24 05:36:49)

01:20あたりの、vbeに直接「平成2年...」と書くと年号が出ることに驚きましたo┤*´Д`*├o
Excelって賢いですね。

でも私のvbeには出ません(*ノД`*) excel 2010では非対応の機能ですか?


2663 : 小川慶一の回答 (2014-10-06 09:09:37)

野村昭雄 さん:

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

>かなり慣れて来て、自分でマクロが作れるようになり、かなり嬉しいです。


2657 : 野村昭雄さんのコメント (2014-10-05 23:20:23)

かなり慣れて来て、自分でマクロが作れるようになり、かなり嬉しいです。


2601 : 小川慶一の回答 (2014-10-01 04:24:17)

浜口 智之 さん:

はい、ですね。実は for next構文作るとかはメチャクチャ簡単です。
差がつくのは、お団子を作るところです。

ひきつづきお楽しみを☆

>ハナコのステップ以前、団子を作る段階が難しいですね。
>西暦変換はググって計算式を見つけて、マクロに書き込みました。
>2問目はなんとなく、こんな感じかなと思って試したらできてしまった感じです。
>引き続き楽しんでいきたいと思います。


2597 : 浜口 智之さんのコメント (2014-09-30 15:28:00)

ハナコのステップ以前、団子を作る段階が難しいですね。
西暦変換はググって計算式を見つけて、マクロに書き込みました。
2問目はなんとなく、こんな感じかなと思って試したらできてしまった感じです。
引き続き楽しんでいきたいと思います。


1837 : 小川慶一の回答 (2014-07-31 05:35:46)

玉谷直紀 さん:

>最初に自分で考えて作ったとき、以下のように書きました。
> 変数はあまり多用しないほうがよいでしょうか?

むしろ、高度な手法です。
しょっぱなからこんな別解を受け取って、びっくりしています (@_@;

インデントだけ気をつけてください。以下を参考に。

ひきつづきお楽しみを☆

Sub gouhi()

    Dim x
    For x = 2 To 11
        Dim sei

        If Range("C" & x).Value = "女性" Then
            sei = 70
        Else
            sei = 80
        End If
        
        If Range("D" & x).Value >= sei Then
            Range("H" & x).Value = "合格"
        Else
            Range("H" & x).Value = "不合格"
        End If
        
    Next

End Sub


1835 : 玉谷直紀さんのコメント (2014-07-30 23:39:05)

最初に自分で考えて作ったとき、以下のように書きました。
変数はあまり多用しないほうがよいでしょうか?

Sub gouhi()

Dim x
For x = 2 To 11
Dim sei

If Range("C" & x).Value = "女性" Then
sei = 70
Else
sei = 80
End If

If Range("D" & x).Value >= sei Then
Range("H" & x).Value = "合格"
Else
Range("H" & x).Value = "不合格"
End If

Next

End Sub


1084 : 小川慶一の回答 (2014-03-19 10:52:18)

薄木洋祐 さん:

ですね。まさに!
ひきつづき、お楽しみを☆

>複雑そうに見えるマクロももとをたどれば基本が重なったものだとりかいできます。


1083 : 薄木洋祐さんのコメント (2014-03-19 02:13:11)

複雑そうに見えるマクロももとをたどれば基本が重なったものだとりかいできます。


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

小俣さん:

基礎編マインドマップ4枚目で書いたとおり、以下は思考・行動の基本です。

[*] まずは小さなものから。そしてだんだん大がかりに

> 小川さんのご指導の通り、急がば回れでCtrl+Zできちんと戻って直したのでなんてことなかったです。
> セミナー前だったら、その状態で直そうとしてパニックでした。

おお、センスいい!

そうそう。実は、そういう操作をしっかりマスターすることがよほど重要です。

基本操作をしっかりできれば、ハマりにくいし、ハマってもすぐに修正できますから。

ハマりにくくなり、ハマってもすぐに修正できるようになることの結果として、マクロを書き上げるまでのリスクが減ります。
リスクが減ることの結果として、書き上げられるマクロの数が増えます。
書き上げらるマクロの数が増える結果として、多くの成功体験を積めます。
多くの成功体験を積んだその結果として、早く上達します。


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

北嶋さん:

複数のことを同時に考えようとすると難しくなってしまいますね。

基礎編マインドマップ4枚目で書いたとおり、以下は思考・行動の基本です。

[*] まずは小さなものから。そしてだんだん大がかりに
[*] まずは書いてから考える
[*] まずは実行してから考える


197 : 小俣卓生さんのコメント (2013-08-26 00:01:00)

どこかの行で確実に動くコードをまず書いてみることの大切を改めて痛感。

それと、中に入れるときのHome shift ↓ ↓ ↓ で 最後のEnd Ifを選択し漏れていてエラーになってしまいドッキリ。
小川さんのご指導の通り、急がば回れでCtrl+Zできちんと戻って直したのでなんてことなかったです。

セミナー前だったら、その状態で直そうとしてパニックでした。

本当にセミナーの効果は絶大です。


196 : 北嶋浩行さんのコメント (2013-08-26 00:00:00)

問題を見たときはややこしいなぁと思いましたが、とりあえず簡単なお団子(セルに合格と入力するみたいな)を作ってから、少しずつお団子を大きくしていってみたら、あっさりできました。
はじめから難しく考えないで、手を動かしてみると案外なんとかなるもんですね。


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

市川さん:

どんどん、トライしてください。
ちなみに、発展編では [[条件式A]] And [[条件式B]] という構文で一文で済ませる方法も学びます。興味があれば、調べてみてください!


194 : 市川一紀さんのコメント (2013-07-01 00:00:00)

NO.1ができたので意気揚々とNo.2に。
問2のif構文の中にif構文を入れるという発想が出来ず、
あえなく撃沈、、、

動画見て、手を動かして、声にだし、覚えるまでは、反復練習!!

小川先生の解説は解りやすくてすごくいい!!


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

基礎編では、基本を徹底することでここまでできる!ということをお伝えしたく、そんな題材を選んでお題を出しています。

ひきつづき、お楽しみを☆


192 : 受講生さんのコメント (2013-06-13 00:00:00)

1回目は、動画を見ながら一緒に作成しました。
2回目は、問題だけを呼んで自分で作成したのですが・・・
甘かったです。
2箇所間違っていましたのでうまく作動しませんでした。
もう一度動画を見て間違いの箇所を確認。
作成の都度確認する基本を怠っていました・・・反省です。
段々と内容が、深くなてきてクリアー出来たときは、感想です。
すごく面白くなってきました。

まだまだですが、やります。


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

渋谷さん:

> 解説を確認して、1つずつ条件をつければいいのだということに気が付きました(当たり前かもしれませんが、楽しようと2つの条件を考えてしまったのが失敗でした)

ひとつひとつの課題を分解して考えることに慣れるとよいですね。

ちなみに、発展編では、2つの条件を一文で表現する方法も学びます。

いまの段階では、手元にある道具だけでやりきってもらいたので、このような解説をしています。


190 : 渋谷 文義さんのコメント (2013-06-01 00:00:00)

”男性”かつ”80点以上で合格”という二つの条件を満たす
条件設定を考えられずに、固まってしまいました。

解説を確認して、1つずつ条件をつければいいのだということに気が付きました(当たり前かもしれませんが、楽しようと2つの条件を考えてしまったのが失敗でした)


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

土田さん:

いろいろご自身で工夫されているようで、すばらしいです ヾ(´ー`)ノ


> 丁寧にお団子の準備です。(これが結構頭を使う^^;)

そうそう。実は、そっちのほうが数段大変 (^^;


> 今回はIf文の使い方で迷いましたが、元号が更に大正明治と増えた場合を考えると、修正し易いと考え上記の様にしました。

発展編で select case 文というのを扱います。
土田さんなら、使いこなせそうな気も。もし余裕があったら、調べて、トライしてみてください。うまく行っても失敗しても、財産になります。


188 : 土田 信行さんのコメント (2013-04-30 00:01:00)

引き続き…の前に先の投稿の修正です。
(2)のプログラムの数値1925は1988の間違いでした。

[問題2]
丁寧にお団子の準備です。(これが結構頭を使う^^;)
(1)G2に合格不合格を入力する

Range(h2).Value = 合格


Range(h2).Value = 不合格

(2)d2が80点以上(男性)の場合合格そうでない場合は不合格を入力する
If Range(d2).Value >= 80 Then
   Range(h2).Value = 合格
Else
   Range(h2).Value = 不合格
End If


同様に70点以上(女性)の場合は80は70に変えるだけなので省略します。

(3)If文でc2が男性の場合、80点以上で合格不合格をh2に入力する
If Range(c2).Value = 男性 Then
    If Range(d2).Value >= 80 Then
       Range(h2).Value = 合格
    Else
       Range(h & gouhi).Value = 不合格
    End If
End If


(4)If文でc2が女性の場合、70点以上で合格不合格をh2に入力する
これは(3)の男性かどうかを区別するIf文のElse以下に続くものなので以下のように(3)と結合しました。
If Range(c2).Value = 男性 Then
   If Range(d2).Value >= 80 Then
      Range(h2).Value = 合格
   Else
      Range(h2).Value = 不合格
   End If
Else
   If Range(d2).Value >= 70 Then
      Range(h2).Value = 合格
   Else
      Range(h2).Value = 不合格
   End If
End If



以上でお団子の出来上がりです。
If文を2個重ねて使うところが味噌で、ここでもお団子の準備を一つずつ丁寧にすることで整理できました。^^v
後は、お決まりのハナコで出来上がりです。

コメントの履歴を見るとIf文の使い方が載っていたので「こんな使い方もあるんだ~」と、勉強になりました。
(もっといろんなコメントがアップされるといいなぁ~)

今回は、更に合格の文字に赤色を付けて区別したり、問題[1]と[2]のプログラムをくっつけて同時に表に記入したりして遊んでみました。
次の問題が楽しみです。


187 : 土田 信行さんのコメント (2013-04-30 00:00:00)

今回は丁寧にお団子の準備ができました。
[問題1]
(1)G2に西暦を入力する(昭和の場合)

Range(g2).Value = 1925 + Range(f2).Value


(2)G2に西暦を入力する(平成の場合)
Range(g2).Value = 1925 + Range(f2).Value


(3)If文で昭和と平成を判別する。
If Range(e2).Value = 昭和 Then
Range(g2).Value = 1925 + Range(f2).Value
End If
If Range(e2).Value = 平成 Then
Range(g2).Value = 1988 + Range(f2).Value
End If


今回はIf文の使い方で迷いましたが、元号が更に大正明治と増えた場合を考えると、修正し易いと考え上記の様にしました。

以上でお団子の準備ができました。
後は、ハナコで出来上がりです。

Sub mondai1()
    Dim sei
    For sei = 2 To 11
        If Range(e & sei).Value = 昭和 Then
            Range(g & sei).Value = 1925 + Range(f & sei).Value
        End If
        If Range(e & sei).Value = 平成 Then
           Range(g & sei).Value = 1988 + Range(f & sei).Value
        End If
    Next
End Sub


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

池本さん:

順調そうで、なにより (^^

> 「男性」であれば、と「80点以上」であればの二つの仮定をいっぺんに両立させようとしていたからだとわかりました。

発展編で扱う内容ですが、

if 性別 = 男性 and score >= 80 then elseif 性別 = 女性 and score >= 70 then else end if


といった書き方もできます。ご興味あれば、研究してみて。


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

こんにちは~(*^^*)
今日は動画解説の前に自力で問題1が解けました♪
解説をみて、問題2が自力で解けなかった理由は、
3ステップ目で
「男性」であれば、と「80点以上」であればの
二つの仮定をいっぺんに両立させようとしていたから
だとわかりました。
(ステップ1はセルに合格をいれる。
ステップ2は80点以上なら合格、そうでなければ不合格。
そこまではOK.ステップ3でこけた。)
動画をみたあとは、簡単に問題2が解けました♪
お団子をつくって花子さん、これ鉄則。こけたら団子を見直す。花より団子。これが明日の課題。
昨日の課題は今日はなんなくクリアできました~☆


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

豊島さん:

そうですね。内側のものから作っていくようにしてください。


183 : 豊島 久博さんのコメント (2013-02-13 00:00:00)

今回は、前回に比べてif~end ifが2つ出てきたので、戸惑って、はなこのステップを順序良く踏めずに、時間がかかりました。
if文が複数出てくれば、まず,一番中の箱がどれになるかが分かれば、はなこのステップをスムーズに踏めると思いました。


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

高橋さん:

ポイントは、数を数えるときの基本は、

kazu = kazu + 1

だ、ということ。
それが分かれば、あとは、条件を満たすたびに

kazu = kazu + 1

という行に来るようにするだけです (^^


181 : 高橋由佳さんのコメント (2013-02-01 00:00:00)

まだ、問題見ただけでは解けないです。
解説がわかりやすいです。


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

> ちなみにNo.4でも置換を試しにやってみたのですが、
> 意図しない動きをしたのが面白かったです。
> 小人ちゃんはコード通りに動いてくれて、かつアウトプットを直ぐに出してくれるので、やりがいがあるなーと感じています。

ですねー。最初、思うように動いてくれていもどかしさを感じることもありますが、
その段階をすぎれば、あとはこっちのものです☆


179 : 安永 洋平さんのコメント (2012-11-21 00:01:00)

回答有難うございます。

初期段階では[1]~[6]の基本動作を身に付けさせることに専念させた、ということと理解しました。また、他の人に何かを教える際は、幹と枝葉とを意識して説明したいと思います。

ちなみにNo.4でも置換を試しにやってみたのですが、
意図しない動きをしたのが面白かったです。
小人ちゃんはコード通りに動いてくれて、かつアウトプットを直ぐに出してくれるので、やりがいがあるなーと感じています。


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

安永さん:

> for構文内の行番号を置き換えていく際に、
> 手作業で一つずつ行っていますが、
> Ctrl + hで置換するのはお勧めではないですか?

おもしろい質問ですね (^^


安永さんはともかく、まだ慣れていない初心者の方の多くにとっては、
初期の段階では、「ハナコ」の「加工する」の部分で、
どこがどう変わるのかを過不足なく指摘することすら
簡単ではありません。

しかし、その域を超えないと、先にいけません。

ですから、初期の段階では、たとえ面倒でも、

[1] 変更すべき箇所をひとつひとつ指さして
[2] どう変更したいかを声に出して宣言して
[3] 修正作業を行い
[4] 修正箇所を指さして
[5] 修正後の内容読み上げて
[6] 狙い通りに修正が完了したことを確認する

という過程を踏んでもらう必要があります。

一括変換で処理してしまうと、こういう検証の過程を踏めなくなるので、
どうしても、学びがなおざりで甘いものになりがちです。


一括変換の操作を教えること自体面倒ですし。
(2 → & gyo ) という変換自体、手作業である程度この作業を
したことがある人に伝えるのは簡単でも、いきなり理解させるのは面倒です。
すでにギリギリな人は、こんな操作を見せられただけで頭がパンクするかもしれません。


あと、予告しますが、no.4は、単純な一括変換では解決できません ヾ(´ー`)ノ

安永さんならそこで一括変換の限界を知り、「また新たな学びを得られた」と感じることでしょう。

しかし、「no.2で頭がパンクしそうになりながらもせっかく一括変換をマスターした」という方にとっては、
明後日になると、苦労して得たはずの技術が通用しない場面にさっそく出くわすことになります。
[1] ~ [6] で示した基本のプロセスを体験してしないままそんな場面に遭遇したら、
より混乱すると同時に、自信を失ってしまうことでしょう (^^;


177 : 安永 洋平さんのコメント (2012-11-20 00:00:00)

一つ、質問させて下さい。

for構文内の行番号を置き換えていく際に、
手作業で一つずつ行っていますが、
Ctrl + hで置換するのはお勧めではないですか?


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

> 「まずどこかの行で動くマクロを作ってみる」こう考えると、マクロも怖くないですね。

そうそう。それそれ。
お団子を作る→ハナコのステップ

です。これがすべて (^^


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

NO.01の時よりも早く書けるようになりました。
「まずどこかの行で動くマクロを作ってみる」こう考えると、マクロも怖くないですね。


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

お返事、遅れました。
二週目ですか!いいですね。どんどん復習してください!


173 : 屋代 有俊さんのコメント (2012-11-11 00:00:00)

2週目です。1問目はすんなり解けたのですが、2問目がNGでした。やはり復習しないとだめですね。


172 : 長江秀展さんのコメント (2012-10-24 00:00:00)

動画見る前だとやはりまだ解けないです。
一つ一つ覚えていきたいと思います。


171 : 加藤美智子さんのコメント (2012-10-22 00:01:00)

問題を見た時は難しそうでドキッとしましたが、動画を2回続けて見てからすぐマクロを書きましたら、なんと、エラーなく出来ました。本当にこの動画は分かりやすいです!!


170 : 竹端博希さんのコメント (2012-10-22 00:00:00)

今回は、通勤の帰りにスマホで2回、動画を見て予習してから、自宅にて宿題のマクロの問題を解いてみました。それ程迷うことなく、30分程で解くことができました。動画の”力”は凄いですね。見れば見るほど、身に付く感じがします。余談ですが小川先生のキータッチの音は個人的に全然気にならないですね。かえって音があった方がわたしは良いかなと感じます。


1199 : 受講生さんのコメント (2012-10-10 20:18:00)

小川さん

あ、なるほど!
else → 記入なし をあえて設定すればいいんですね。
納得です。

ありがとうございました!


1198 : 小川慶一の回答 (2012-10-10 10:55:00)

> 冒頭、元号→西暦への説明が丁寧ですね。「僕はこうしてみた」という感じで好感がUPするように思います。

けっこう、テキトーに書いているんだ、ということを訴求したいんですよね。。
完成品はアートぽくみえますが、その家庭は試行錯誤です。


> 今回の式の場合、
> たとえば、性別を空白にすると
> "男性"以外とみなされて、"女性"という条件に
> なってしまいますよね。
>
> きっと、今後の課題で出てくるとは思うのですが、
> あえて"女性"の場合の式を追加して複雑にするより、性別が未入力ならアラートを出す、ということになるのではないかと予測しています。

if "男性" then
男性でした
elseif "女性" then
女性でした
else
記入なし
end if


て感じですね。


1197 : 受講生さんのコメント (2012-10-09 13:44:00)

冒頭、元号→西暦への説明が丁寧ですね。「僕はこうしてみた」という感じで好感がUPするように思います。

今回のマクロは、問題を見たときに「IFにIF入れるんやろ」と気が付いたので、比較的簡単でした。





ひとつ、疑問というかもやもやとした点があります。



今回の式の場合、

たとえば、性別を空白にすると

"男性"以外とみなされて、"女性"という条件に

なってしまいますよね。



きっと、今後の課題で出てくるとは思うのですが、

あえて"女性"の場合の式を追加して複雑にするより、性別が未入力ならアラートを出す、ということになるのではないかと予測しています。


1211 : 小川慶一の回答 (2012-10-08 11:20:00)

こんにちは。

いただいたメールにあるマクロは文法的にはおかしいですが。。
勉強はとりあえず順調のようですね (^^



> 別のモジュールを作って
>
> Range("G" & cnt).HorizontalAlignment = xlCenter
>
> を入れてセルの文字を中央に揃えるマクロも挿入してみました(うまくいきました)

いいすね!いろいろ工夫して楽しんでください!!


1210 : 受講生さんのコメント (2010-10-08 11:18:00)

わざわざ

Dim henkan = Range("E" & cnt).Value

Dim seinen = Range("F" & cnt).Value

のように余計に変数を作ってしまいましたが、結果は合ってました。



別のモジュールを作って

Range("G" & cnt).HorizontalAlignment = xlCenter

を入れてセルの文字を中央に揃えるマクロも挿入してみました(うまくいきました)


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) 未習得

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ