エクセルマクロ・VBA基礎編フォローアップ ベーシック

この講座は定額コースで利用可能です。
この講座は購入可能です。
エクセルマクロ・VBA基礎編フォローアップ ベーシック

講座の概要

エクセルマクロ基礎編に対応した演習問題と動画解説です。

この講座の難易度:
この講座の教材ページ数: 18
この講座の動画の総時間数: 03時間28分34秒
この講座の投稿/コメント数: 876

受講を検討されているあなたへ

基礎編でお伝えした道具はシンプルなものばかりです。しかし、基礎編レベルの知識だけでもかなりのことができます。基礎編フォローアップ ベーシックは、基礎編で学んだ内容を定着させるための演習問題とその解説動画で構成しています。
もっと詳しく知りたい方≫≫この講座が含まれたセット講座紹介ページ

この講座の利用方法

講座を利用するには、以下の2つの方法があります。

  • この講座を含む定額コースに参加する
  • この講座を購入する

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

この講座は、以下の定額コースに含まれています。

この講座のページリストを表示する/非表示にする(18ページ)

If文とForNext構文を組み合わせる

理解度: 

【やや音声不具合あり】
演習問題テーマ:If文とForNext構文を組み合わせる

基礎編講義本編で登場した、 If 文です。
今回紹介した
 If 条件 Then
 Else
 End IF
の形は、丸暗記してください。

Visual Basic上、エクセル上で僕が字を書いたりしているときのショートカットキー操作は、しっかりマスターしてくだざい。「ハナコのステップ」等の基本パターンについても、ここで、しっかり慣れてください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

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

理解度: 

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

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

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

ElseIfを使った条件分岐

理解度: 

演習問題テーマ:ElseIfを使った条件分岐
 If 条件 then
 Elseif 条件 then
 Else
 End if
の形を使ったパターン。条件の数にあわせて、Endif条件thenを増やします。何度も出てくる同じフレーズは1個ずつ打たないでコピーペーストする習慣をつけてください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

出現回数を数える。CountIf関数がやっていることをマクロで書くと?

理解度: 

演習問題テーマ:出現回数を数える。CountIf関数がやっていることをマクロで書くと?

変数の値を初期化(値を0にする)してからループを繰り返すパターン。
[1]出現回数をあらわす変数をたてて出現するたびに1つ増やす仕組み
[2]For Next構文で調べ終わったあとに最後の合計を表示する仕組み
[3]最後の合計を表示したらその変数の値を一度0に戻してから次のループに入る仕組みをよくみてください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

条件に一致するデータを別表に転記する。AutoFilterより便利な条件抽出マクロ。

理解度: 

演習問題テーマ:条件に一致するデータを別表に転記する。AutoFilterより便利な条件抽出マクロ

2つの表がある場合は変数を2つつくるパターン。

2つの変数とは、[1]左の表のどこを調べているか、[2]右の表のどこにかくか、をそれぞれ指定する変数です。ハナコのステップ3「カコウする」とき、左右どちらの変数の加工をしているかに注意して、関係するところだけを加工します。書き出す表のデータ間の行をつめて書き出すためには、1行かきおえて次にII何行目にかくかを指定する仕組みをつくることがポイント。

migi=migi+1の仕組みがどう動くかをよくみてください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

条件に一致するデータを別シートに転記する

理解度: 

演習問題テーマ:条件に一致するデータを別シートに転記する

2つの表がそれぞれ別のシートにあるパターン。

調べているシート、書き出し先のシートが異なります。このような複数シートのときはシートを指定するのがポイント。調べているシートに限らず書き出し先のシートも含めすべての値のシートを指定する習慣をつけてください。マクロを実行するときにどこのシートを開いていてもきちんと動くマクロをかけるように。また、シート間の移動はtrl+PageUP,Ctrl+PageDownでスムーズに。2つの表がある場合に変数を2つつくるパターンは前回と同じ。変数をつくるときは、どんな目的で作った変数かがわかる変数をつくると便利です。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

とびとびに存在するデータを拾って加工する

理解度: 

演習問題テーマ:とびとびに存在するデータを拾って加工する

とびとびのデータをどう扱うかをみてください。

とびとびの間隔に法則をみつけることが大事。法則をみつけたら、1、4、7、12のようにとびとびのデータを、Range("列名" & 変数×3−2).Valueと表現できるというのがポイント。すぐに法則がみつけられなくても実際にかいているうちにわかることがあるのでまずは動くマクロを1個ずつかいてみることが大事です。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

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

理解度: 

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

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

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

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

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

理解度: 

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

問題3で変数の使い方に慣れてください。

第7回の路線駅名を線と駅名以下にわける方法と基本的には同じことが変数を使えば実現できるというのがわかるかがポイント。基本的には1個を2つにわけるの繰り返し。1個を2つにわけ、わけたうちの1個を2つにわける。このときわけたうちの1個を戻り値とする変数をたてるのがポイントです。あとはInstr関数をつかって区切りの字が何文字目にあるかを調べる変数をたてれば、区切りの字の前か後かは変数-1、変数+1であらわせるというのは第7回と同じ。

問題4、5はInstr関数によって区切りの字の有無もわかるというのがポイント。

Instr関数をつかって区切りの字が何文字目にあるかを調べられると同時に、その字がない場合は値が0となることを利用して、If文を使って区切りの字が1つだけではない場合の処理ができます。またInstr関数はあくまでも区切りの字が何文字目にあるかがわかるだけなので「モノレール」の場合はどうするかよくみて学んでください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

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

理解度: 

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

Instr関数をつかって「" "」で、区切りの「スペース」が何文字目にあるのかも調べられるというのがポイント。

[1]Instr関数をつかって区切りの字(ここではスラッシュや半角スペース)が何文字目にあるかを調べる変数を使う
[2]区切りの字の前か後かを変数-1、変数+1であらわす
[3]区切りの字が複数ある場合はInstr関数が区切りの字の有無を判別することを利用してIf文を使う
の3点をしっかり復習してください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

理解度: 

演習問題テーマ:勘定項目ごとに合計額を算出する。SumIf関数がやっていることをマクロで書くと?

項目が出現したらその回数ではなく隣の列の金額を加算する仕組みをつくります。

合計額をあらわす変数をたてること、For Next構文で調べ終わったら合計額を表示する仕組み、複数の項目がある場合に初期化してから次の項目の金額を新たに加算しはじめる仕組みは第10回と同じ。今月支払額合計を、初期化する前の各項目の合計額を利用して加算していく仕組みは、よくみると出現するたびに加算する仕組みと同じだということに気づいてください。

途中ででてくるGoukeiという変数をkobetsuに一気にかえるやり方もここで覚えてください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

残業時間がいちばん多い従業員の情報を出力する。Max関数、Min関数より便利なマクロ

理解度: 

演習問題テーマ:残業時間がいちばん多い従業員の情報を出力する。Max関数、Min関数より便利なマクロ

勝ち抜き戦の基本パターン。

勝ち抜き戦勝者をあらわす変数をたてること、暫定勝者の値をきめること、暫定勝者と対戦相手の値を比較して値の大きいほうが勝者になり、次の対戦相手の値と比較するということを繰り返し、最後まで勝ち抜いた勝者が最も大きい値を示す仕組みを学んでください。

勝ち抜き戦の対戦相手が同じ列にいるか、複数の列にいるかによって、暫定勝者の値が列名と数字か、数字だけになるという仕組みもよくみてください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

複数の表の間でのマッチング。VLookUp関数がやっていることをマクロで書くと?

理解度: 

演習問題テーマ:複数の表の間でのマッチング。VLookUp関数がやっていることをマクロで書くと?

マッチングの基本パターン。

2つの表があるのでそれぞれの表に対応する変数をつくることが基本です。ひとつひとつていねいに、まず左の表のIDとマッチするところに右の情報をもってくる仕組み、次に右の表の情報を順番に全部調べる仕組みをつくります。

Ctrl+Zでマクロの状態を戻す習慣をつけてください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

文字列を様々に解析して条件分岐

理解度: 

演習問題テーマ:文字列を様々に解析して条件分岐

Len関数とInstr関数の復習。
1.Len関数の戻り値が文字列の長さ=文字数をあらわすことを利用したIf文。
2.Instr関数は戻り値が0かそれ以上の数字かによって、ある文字列の有無を示すことを利用したIf文。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

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

理解度: 

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

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

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]と同様の処理を行うマクロを作れ

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

各資料ごとに1番からの番号を割り振る。AutoFill機能より便利なマクロ

理解度: 

演習問題テーマ:各資料ごとに1番からの番号を割り振る。AutoFill機能より便利なマクロ

1つ上の行と比べて同じか違うかによってわりふる数字が変わるというのがポイント。

2番目の問題は、同じカテゴリーの中では順番に番号を1個ずつ増やしてわりふる仕組み、違うカテゴリーになったら先頭番号を1に戻してからまた順番に番号を1個ずつ増やしてわりふる仕組み、をよくみてください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

表を解析して1行のリストを作る、1行のリストを解析して表にする(その1)

理解度: 

演習問題テーマ:表を解析して1行のリストを作る、1行のリストを解析して表にする(その1)

For Next構文のはじまりに条件をかくパターンと、For Next構文がおわったあとに処理するパターンを学んでください。

複数のセルの情報を1つのセルにまとめてかく際に重複をさける方法として、前回学習した1つ上の行と比べて同じか違うかによって戻り値がかわる仕組みを使います。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

表を解析して1行のリストを作る、1行のリストを解析して表にする(その2)

理解度: 

演習問題テーマ:表を解析して1行のリストを作る、1行のリストを解析して表にする(その2)

理解してから書くよりも、まず書いてみる。その結果をみてから考えて書きなおすという繰り返しが大事です。

並べ替え済みのリストから重複しないリストをつくる仕組みと、For Next構文の始まった直後と終わった後に特別な仕掛けをつくる仕組みをよくみて何度もマクロを書いてみてください。

このページのメモはまだありません。
学んでいて気になったこと、気づいたことなどをメモしましょう。
メモでは、このページでの学習内容に対するあなたの理解度、あなたにとってのこのページの内容の重要度を記録することもできます。

このページのメモフォームへ

この講座での投稿を表示する/非表示にする(876件)

投稿ID: 5267 HYATOさんの投稿
こんにちは。

カンマが先頭に残ってしまったので、どのように処理するのか悩みましたが、
今回のMid関数やLeft関数を用いた、カンマの処理の仕方がよくわかりました。

何回も動画を見て、実践でも使えるようにします。

ありがとうございました。
引き続きよろしくお願いします。
この投稿には、1件の返信があります。  投稿日時: 2022年05月01日 09時41分05秒
投稿ID: 5266 HYATOさんの投稿
おはようございます。先生がどのようにマクロを作成しているのか、作成の過程が観られるので、理解がより深まります。引き続きよろしくお願いします。

今回のマクロの作成に当たって、まずは何も見ないで作成し、動画を確認しました。"モノレール"の部分でかなり時間が掛かりましたが、なんとか完成しました。

'[5]
'シート「Sheet2」で、E列にある路線駅名の「路線」情報をH列に、駅名以降の情報をI列に書き込むマクロを作れ
Sub test5()
    Dim gyo
    
    For gyo = 2 To 51
        If InStr(Range("E" & gyo).Value, "駅") <> 0 Then '駅という文字が存在する場合
            If InStr(Range("E" & gyo).Value, "モノレール") = 0 Then 'モノレールという文字が存在しない場合
                Range("H" & gyo).Value = Left(Range("E" & gyo).Value, InStr(Range("E" & gyo).Value, "線"))
                Range("I" & gyo).Value = Mid(Range("E" & gyo).Value, InStr(Range("E" & gyo).Value, "線") + 1)
            Else 'モノレールという文字が存在する場合
                Range("H" & gyo).Value = Left(Range("E" & gyo).Value, InStr(Range("E" & gyo).Value, "ル"))
                Range("I" & gyo).Value = Mid(Range("E" & gyo).Value, InStr(Range("E" & gyo).Value, "ル") + 1)
            End If
        End If
    Next
End Sub
この投稿には、2件の返信があります。  投稿日時: 2022年04月20日 06時26分21秒
投稿ID: 5263 ケイジさんの投稿
小川様

小川先生こんにちは。

毎朝、30分程度、動画を見ながらマクロの勉強を継続しています。
6回繰り返し練習して、ようやく答えを見ずにマクロを完成させることができました。
少しずつですが、マクロを書くことに慣れてきました。

ここで質問があります。
シート「Sheet2」の課題で、「担当区域」列に、tiku = ""と書くと、業者別に担当区域ごとに記載されるとのことですが、tiku=""というマクロを書くと、なぜこのような現象が起こるのか仕組みがどうしても理解できません。
算数に苦手意識があるためかもしれません。

つきましては、このような現象が起こる仕組みをご教示いただきますようお願いします。
この投稿には、4件の返信があります。  投稿日時: 2022年04月13日 05時21分21秒
投稿ID: 5261 gooskaさんの投稿
数年ぶりにこの問題を解いてみました。
以前は相当理解に苦労した問題でしたが、
今回は完璧に理解できていました。
実務でもカウンタ変数を回して結果を書き出すマクロを作って役立ており、
苦労してマスターしたおかげだと思っています。

ポイントは、F8・ステップインで、1行ずつVBAの動きを確認し、
変数がどこで値を取得し、変化し、クリアされるかを丁寧に追っていく、
これを繰り返すことが、理解の早道だと思いました。
この投稿には、1件の返信があります。  投稿日時: 2022年04月07日 14時41分34秒
投稿ID: 5258 ikuko.nakanoさんの投稿
マクロは何度もトライしましたが挫折、ここの講座でマスターできて良かったです。
この章に関しての質問です。
このように連続したセルを転記する際に、Next構文使いたいのですが、どのように書けばいいでしょうか?

Sub ren()
    Dim gyo
    For gyo = 1 To 4
        Range("A1:D1").Value = Range("G1:J1").Value
    
    Next
        
End Sub
この投稿には、1件の返信があります。  投稿日時: 2022年03月30日 09時39分27秒
投稿ID: 5255 eitarouさんの投稿
やばいなぁ・・・
書けるようになっちゃった。
この投稿には、1件の返信があります。  投稿日時: 2022年03月03日 06時50分57秒
投稿ID: 5251 樋口 敦郎さんの投稿
いつもお世話になっております。

5分50秒ぐらいで動画が止まってしまうようです。

ご確認お願い致します。
この投稿には、1件の返信があります。  投稿日時: 2022年02月03日 21時20分46秒
投稿ID: 5243 えりりんさんの投稿
仕事で非常によく使うコードだと思います。
ひたすら繰り返し入力して、指が覚えるほどにしなければならないと感じました。
この投稿には、1件の返信があります。  投稿日時: 2022年01月15日 15時11分27秒
投稿ID: 5209 受講生さんの投稿
小川先生 こんにちは

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

よろしくお願い致します。
この投稿には、3件の返信があります。  投稿日時: 2021年11月10日 12時35分03秒
投稿ID: 5206 Mさんの投稿
2:40のところで動画がストップしてしまいます。何度か試しましたが同様の現象で、それより先にカーソルを当てた場合は動画の最初に戻ってしまう状態です。
この投稿には、2件の返信があります。  投稿日時: 2021年11月04日 14時11分14秒
投稿ID: 5171 受講生さんの投稿
いつもお世話になります。

こちらの回のみ、この動画は、再生できませんとなり
再生が出来ません。

ご確認いただけますでしょうか?
宜しくお願い致します。
この投稿には、1件の返信があります。  投稿日時: 2021年07月30日 04時08分02秒
投稿ID: 5155 受講生さんの投稿
問題[2]に関して、自分で考えて作成したプログラムが解説動画とは別のものになりました。
結果は正しく出力されています。
以下プログラムです。

 Sub mondai2()
    Dim gyo
    Dim tenki
    Dim kuiki
    tenki = 2
    For gyo = 2 To 27
        If Range("A" & gyo).Value <> Range("A" & gyo - 1).Value Then
            Range("E" & tenki).Value = Range("A" & gyo).Value
            Range("F" & tenki).Value = Range("B" & gyo).Value
            kuiki = Range("C" & gyo).Value & "地区"
            tenki = tenki + 1
        Else
            kuiki = kuiki & "," & Range("C" & gyo).Value & "地区"
        End If
        Range("G" & tenki - 1).Value = kuiki
    Next
End Sub 

完成した時、自分では上手く出来たと思ったんですが、
小川先生のマクロと比較するとパッと見はすっきり見えるものの、
A列を1行進むごとにG列に担当区域を書き込んでいくのは
データ量が増えると処理が重くなったりするのだろうかと思ったりもしています。
小川先生からみてどうでしょうか?
この投稿には、3件の返信があります。  投稿日時: 2021年07月08日 15時07分00秒
投稿ID: 5152 受講生さんの投稿
今回の問題だと結果の出力先が「F2」、「F3」と確定しているので変数を使用せず、直接該当セルに書き込んでも同じ結果になると思うのですが、解答で変数を使用しているのは、今後の応用の事を考えるとひとまず変数に格納してから結果を書き込む習慣をつけたほうが良いということでしょうか?
この投稿には、2件の返信があります。  投稿日時: 2021年07月05日 11時31分54秒
投稿ID: 5150 受講生さんの投稿
動画内での問題[2]以降の解説についてですが、if関数の条件設定が「結婚祝い」のまま、かつ変数kazuの値を初期化していないので答えとしては間違いではないでしょうか?
この投稿には、1件の返信があります。  投稿日時: 2021年06月30日 14時33分47秒
投稿ID: 5149 受講生さんの投稿
質問です。
動画の1分前後あたりからおっしゃられている、「合計点数が100点以上の人だけを抽出して転記する方法」について
どの講座で紹介されていましたでしょうか?
現在、「エクセルマクロ・VBA導入編」「エクセルマクロ・VBA基礎編」を受講し終わった状態です。
この投稿には、4件の返信があります。  投稿日時: 2021年06月25日 17時13分19秒
投稿ID: 5133 たかちゃんさんの投稿
3か月ぶりに戻ってきました。
ここに戻ってくると、そもそもVBAを勉強し始めたのは、何の目的だったのか等、原点に戻れる気がします。「アバウト過ぎて、びっくりする人がいる」けど、マクロ書く時はこんなものです。という言葉に、ハッとしました。(^^)
こうして、また戻って復習できるのは本当に良いですね。
この投稿には、4件の返信があります。  投稿日時: 2021年05月13日 14時49分38秒
投稿ID: 5128 受講生さんの投稿
1.勤怠の元データをシステムに入力し、
  システムからエクエルにデータを落とします。
2.この元データと入力済データを比較し異なっていたら
  データを赤くする。

この2の段階をVBAで作りたいと思っています。
問題なのはこの中のtaikin1 とtaikin2 を比較する部分です。

単純に半日勤務課か一日勤務かなら問題はないのですが、
出勤時間が午前中で退勤時間が午後になる場合、
システムの仕様で退勤時間が12:00 になり
備考欄に文字列で退勤時間を入力するようになっています。

この午前・午後にわたる半日勤務のとき、
データが赤くなるときとならないと気が合って困っています。

この部分に★で印をつけてありますので
原因の説明と対処方法を教えてください。
この投稿には、12件の返信があります。  投稿日時: 2021年05月07日 07時20分11秒
投稿ID: 5117 受講生さんの投稿
小川慶一 様
この度はご返信ありがとうございます。
早速ですが、エクセルマクロ・VBA基礎編フォローアップ ベーシックの問題に取り掛かりました。
しかし、何度解いてもよくわからない点があります。

★【動画6】 条件に一致するデータを別シートに転記する で例えますと、
Sub ichi()

Dim i As Long
Dim k As Long
k = 9
For i = 4 To 13
If Worksheets("元データ").Cells(i, 9) > 100 Then
Worksheets("要注意リスト").Cells(k, 3) = Worksheets("元データ").Cells(i, 1) 'ID
Worksheets("要注意リスト").Cells(k, 4) = Worksheets("元データ").Cells(i, 2) '名前
Worksheets("要注意リスト").Cells(k, 5) = Worksheets("元データ").Cells(i, 9) '合計
k = k + 1
End If
Next

End Sub
このような状態です。
解けてはいますし、回答を見ても正しいようなのですが、
k = k + 1の位置にいつも戸惑ってしまうのです。

Dim i As Long
Dim k As Long
k = 9
For i = 4 To 13
If Worksheets("元データ").Cells(i, 9) > 100 Then
Worksheets("要注意リスト").Cells(k, 3) = Worksheets("元データ").Cells(i, 1) 'ID
Worksheets("要注意リスト").Cells(k, 4) = Worksheets("元データ").Cells(i, 2) '名前
Worksheets("要注意リスト").Cells(k, 5) = Worksheets("元データ").Cells(i, 9) '合計
①k = k + 1
End If
     ②k = k + 1
Next

End Sub

①の状態が正しいというのはif endの中に入れておくというルールのような形で覚えてしまっている状態です。
最初に書いた時点では②の位置に書いてしまうのです。
そしてエラーが出て①の位置に戻しています。
ハナコステップで書いているのですが…何度書いても分かりません。

原因と致しましては、以下のように考えているからだと思うのですが、
そもそも文の読み方が正しくないのでしょうか…
ご教示頂けますと幸いです。

Dim i As Long 'iを宣言します
Dim k As Long 'kを宣言します
k = 9 'kは9です。
For i = 4 To 13 'iは4です(1周目時点)
If Worksheets("元データ").Cells(i, 9) > 100 Then 'もしも元データのi4(1周目時点)が100を超えていたら
Worksheets("要注意リスト").Cells(k, 3) = Worksheets("元データ").Cells(i, 1) 'IDをコピー
Worksheets("要注意リスト").Cells(k, 4) = Worksheets("元データ").Cells(i, 2) '名前コピー
Worksheets("要注意リスト").Cells(k, 5) = Worksheets("元データ").Cells(i, 9) '合計コピー
End If 'K9の値に入れるi4が調べ終わりました
     ②k = k + 1 'では次(i=5)に進む前にコピー先のセルも動かします
Next '(i=5)に進みます(forに戻ります)

End Sub
この投稿には、3件の返信があります。  投稿日時: 2021年04月15日 22時47分15秒
投稿ID: 5094 受講生さんの投稿
動画名の内容に合ってない質問で申し訳ありません。
今まではrange("a1").va と書けばvalue がヒントで出ていたんですけど
worksheets("元データ").range(”a1").va と書いてもvalue がヒントが出てきません。

それからこれは元からそうでしたが
マクロを1行書いて上の行にカーソルを移動させたときRange("a1").Valueとなり、小文字から大文字に変わるべきところのうち""で挟まれた部分だけ小文字のままです。どうしてなのでしょうか?
この投稿には、1件の返信があります。  投稿日時: 2021年03月11日 08時17分20秒
投稿ID: 4971 受講生さんの投稿
とても難しいです。動画4・動画5はマクロコードの構成を暗記する勉強方法で大丈夫でしょうか。正直分解してもすんなり頭に入ってきません。
この投稿には、1件の返信があります。  投稿日時: 2021年01月04日 02時10分05秒
投稿ID: 4969 ゲストさんの投稿
小川様

お世話になっております。こちらの動画の後半で解説されていた路線駅名の処理について質問がございます。私はこのようにプログラムを書いて処理し、設問で指示された回答は出せたので問題ないと思うのですが、小川さんがこの方法を動画で取り上げなかった理由を教えてもらえないでしょうか?

 If ku = 0 Then
            ku = InStr(roseneki, "ル")
        End If

過去のコメントでは、「「手順書としてどうか?」という問いですね。」という回答が小川さんから出されてました。他の人がプログラムをメンテナンスする時に分かりにくいから、という理解でよろしいでしょうか。ご回答宜しくお願い致します。
この投稿には、24件の返信があります。  投稿日時: 2021年01月03日 14時12分06秒
投稿ID: 4894 たかちゃんさんの投稿
発展編1が一通り終了したので、次へ進む前に復習がてら基本編に戻って見ました。最初は、For each と.Offset(c,cyoko)の様な感じで書こうかと思ったのですが、For eachではcやcyokoなどの変数を使ってピンポイントで指定して書くことはできないのだと気付きました。(コレクションのプロパティを指定する時に使うものだから。) 
for構文とOffsetを使って書いてみましたので投稿します。他の方のコメントにあったランキングにも挑戦してみました。
繰り返せば繰り返すほど、新たな学びがあって本当に良い講座です。

Sub rensyu()
    Dim c As Long
    Dim cyoko As Long
    Dim mx As Long
    Dim cMX As Long
    Dim cyokoMX As Long
    
    mx = Range("H1048576").End(xlUp).Row - 6
    With Range("C6")
    cMX = 0
    cyokoMX = 0
    For c = 0 To mx
        For cyoko = 0 To 5
            If .Offset(c, cyoko).Value > .Offset(cMX, cyokoMX).Value Then
                cMX = c
                cyokoMX = cyoko
            End If
        Next
    Next
    Range("K4").Value = .Offset(cMX, -1).Value
    Range("L4").Value = .Offset(-1, cyokoMX).Value
    Range("M4").Value = .Offset(cMX, cyokoMX).Value
    End With
    
End Sub

この投稿には、3件の返信があります。  投稿日時: 2020年10月13日 15時24分43秒
投稿ID: 4839 たかちゃんさんの投稿
【感想】
昨日基礎編ベーシックを一度終えたのですが、理解に不安があったので、動画8から2週目を行いました。
問題11、12、16(一瞬悩んだ)、18(2)が、少し悩みながらの回答でしたが、初回のような頭から煙が出そうという状態にはならずに済みました。

昨日の時点では、18(2)は手を動かしても自力回答できる気がしなかったのですが。。。
本日再挑戦して見たところ、悩みつつも手を動かしていたらいつの間にか解けててびっくりしました。( ゚д゚)

こちらの4問は引き続き、時間を置いてから再挑戦しつつ、アドバンスドに進みたいと思います。

昨日は初めて、マクロを書いている夢を見ました。(⌒_⌒;
この投稿には、5件の返信があります。  投稿日時: 2020年09月01日 11時03分27秒
投稿ID: 4838 W800CEDさんの投稿
初めて感想を書かせていただきます。

この動画までは、かなり順調にきたのですが、ここで思いっきり躓きました(^_^;)。

同じ条件の「For~Next」と「If~End If」構文で、それぞれの列に異なった加算をするなんて。。。

まるで、左手でマルを書きながら、右手で三角を書かされているような(@_@;)。。。

この項に取り組んで、悩んで、解答を見て納得して、書いてみて、後日また取り組むと前回と同じことを繰り返す・・・みたいなことを何度か繰り返しても理解ができませんでした。

が、本日、同時に違うことを実行するのではなく、個々に考えてみようと思い取り組んだところ、時間も掛かりましたが以下のマクロを自力で書くことができました。

'   【資料番号】のみのマクロ

'    こっちは、比較対象の上下の値が違ったら「変数」の値を「+1」するだけなので問題なし

Sub siryoubangou()

    Dim siryoubangou
    
    Dim gyo
    For gyo = 4 To 19
        If Range("D" & gyo).Value <> Range("D" & gyo - 1).Value Then
            siryoubangou = siryoubangou + 1
        End If
        Range("B" & gyo).Value = siryoubangou
    Next
    
End Sub

'   【資料ごとの番号】のみのマクロ
'
'  こっちは、最初の「1」をどのタイミングで「変数」に代入するか。。。

'   「変数」を「2」「3」と増やすのは、どこのタイミングなのか。。。
'
'   「変数」をどこのタイミングで「0」の状態にリセットすればよいのか。。。

Sub siryousuuryou()

    Dim siryousuuryou
    
    Dim gyo
    For gyo = 4 To 19
        If Range("D" & gyo).Value <> Range("D" & gyo - 1).Value Then
            siryousuuryou = 0
        End If
        Range("C" & gyo).Value = siryousuuryou + 1
        siryousuuryou = siryousuuryou + 1
    Next

End Sub

特に、資料ごとの番号のマクロは、「変数」をあっちこっちに移動したりしながら、実行の結果を見て悩んで、最終的には納得して「ここだ!」てとこに「変数」を書くことが出来たので、なんとなくですが長いトンネルの出口が見えてきたような気がしています。

あっ!「変数(「gyo」以外)」が長いのは、今回に限りです。

コロナウイルスのおかげで休日に家にいることが多くなったのと、以前から興味があったのと懐事情のタイミングが見事に合致したので習い始めたのですが、半世紀生きてからの手習いです。。。老化防止のため、まだまだ先は長そうですが、脳みそフル稼働させてやります(^o^)v。
この投稿には、1件の返信があります。  投稿日時: 2020年08月31日 05時16分59秒
投稿ID: 4836 たかちゃんさんの投稿
【感想】
今の所ヒント無しで正解はできるのですが、回答と見比べると余計な動きだったり見づらいプログラムとなってしまいます。

今までは変数をあまり使用しなかった為、変数に纏めることを意識したら、今回は余計な変数を作りすぎていました。(苦笑)

Goukeiという変数を、何故か途中で名前変更している。
kongetsu = goukei

画面左側にある値に、migi という名前の変数をつけている。(苦笑) など。

でも、VBAの勉強初めて1週間で、ここまでかけるようになってとても嬉しいです。講義に何回か出てきた可愛らしいスライド(ハナコのステップ)で一気に理解度が上がりました。
この投稿には、3件の返信があります。  投稿日時: 2020年08月29日 10時09分23秒
投稿ID: 4814 ひらさんの投稿
elseif(elseとifをひとつにまとめて記載)と、elseとifを改行して用いる場合、endifの数が違ったりしますか?

先ほど問題を解いたところ、回答エクセルに比べendifの数が1つ少なかったのですが、問題なく動きました。

【自分の書いたマクロ】
Sub gouhi()

Dim gyo
For gyo = 2 To 11

If Range("C" & gyo).Value = "男性" Then
If Range("D" & gyo).Value >= 80 Then
Range("H" & gyo).Value = "合格"
Else
Range("H" & gyo).Value = "不合格"
End If
ElseIf Range("D" & gyo).Value >= 70 Then
Range("H" & gyo).Value = "合格"
Else
Range("H" & gyo).Value = "不合格"
End If

Next
End Sub

【答えのエクセルのマクロ】
Sub GogakuFugokaku()
Dim gyobangou
For gyobangou = 2 To 11
If Range("C" & gyobangou).Value = "男性" Then
If Range("D" & gyobangou).Value >= 80 Then
Range("H" & gyobangou).Value = "合格"
Else
Range("H" & gyobangou).Value = "不合格"
End If
Else
If Range("D" & gyobangou).Value >= 70 Then
Range("H" & gyobangou).Value = "合格"
Else
Range("H" & gyobangou).Value = "不合格"
End If
End If
Next
End Sub

elseif(改行せず使用)はあまり使用しない方がよいのでしょうか。
もしすでに過去この件がお話しされていたら申し訳ございませんが、
ご教示いただけますと幸いです。
この投稿には、1件の返信があります。  投稿日時: 2020年08月05日 18時08分43秒
投稿ID: 4754 さざなみさんの投稿
質問です。同じシート内のG列にある氏名と同じ氏名をA列から探し、一致した氏名を別シートに転記、B列(郵便番号)、C列(住所)も転記するものを考えています。しかし、1行目しか転記できず、次を検索して同様に転記するマクロがうまくできません。どのように作成したらいいでしょうか?
'シート2のG列の値がA列と一致した氏名と郵便番号B列・住所C列をシート5へ転記
Sub tenki()
Dim hida
Dim migi
migi = 3
For hida = 2 To 20
If Worksheets("Sheet2").Range("A" & hida).Value = Worksheets("Sheet2").Range("G" & hida).Value Then
Worksheets("Sheet5").Range("B" & migi).Value = Worksheets("Sheet2").Range("A" & hida).Value
Worksheets("Sheet5").Range("C" & migi).Value = Worksheets("Sheet2").Range("B" & hida).Value
Worksheets("Sheet5").Range("D" & migi).Value=Worksheets("Sheet2").Range("C" & hida).Value
migi = migi + 1
End If
Next
End Sub

この投稿には、5件の返信があります。  投稿日時: 2020年06月08日 06時59分49秒
投稿ID: 4751 受講生さんの投稿
お世話になっております。
変数が重なると、難しいです。変数の値を設定する行を間違えてばかりです。

疑問に思った点があるので、質問をします。
「gyo=6 To 33」と指定しているのに、中断モードで確認しているときに、最後の「Next」にきて「gyo」にカーソルを合わせると、「gyo=34」となります。
指定している33以上は、いかないかと思ったのですが、実際は、34まで進んでいます。
gyoの値を指定しているのに不思議です。

上手く説明できず申し訳ございません。
どうぞよろしくお願いいたします。
この投稿には、3件の返信があります。  投稿日時: 2020年06月02日 01時08分52秒
投稿ID: 4735 受講生さんの投稿
お世話になっております。
動画を見る前に、まず自分でやってみて、答え合わせに動画を見ています。
問題[1]は、出来たのですが、問題[2]でif文を重ねることが思いつかず、下記コードになりました。(>と>=も間違っています)
何度「構文エラー」が出て、修正してやっと出来た!と思い動かしてみたところ、すべて"不合格"となってしまいました。
ギブアップして、動画を見てif文を重ねるのだと納得しました。

時間がかかりますが、何度も演習問題を解くことが、自分の力になると信じて頑張ります。

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



Sub gouhi()
Dim gyo
For gyo = 2 To 11
If Range("C" & gyo).Value = "男性" & Range("D" & gyo).Value > 80 Then
Range("H" & gyo).Value = "合格"
ElseIf Range("C" & gyo).Value = "女性" & Range("D" & gyo).Value > 70 Then
Range("H" & gyo).Value = "合格"
Else
Range("H" & gyo).Value = "不合格"
End If
Next



End Sub

この投稿には、4件の返信があります。  投稿日時: 2020年05月23日 19時49分27秒
投稿ID: 4731 受講生さんの投稿
いつもお世話になっております。この問題はできたのですが、多少自分のコードは無駄が多いですね汗。

「ElseIf Range("E" & gyo).Value = "平成" Then」ここはelse使えば、よかったんですね。

あと質問なんですが、"昭和"の箇所はRange("E2").Valueにも置き換えられると思うのですが、直接文字列を入力したほうが動作的には軽くなるのでしょうか?

Sub shouwheisei()
    Dim gyo
    For gyo = 2 To 11
        If Range("E" & gyo).Value = "昭和" Then
            Range("G" & gyo).Value = Range("F" & gyo).Value + 25 + 1900
        ElseIf Range("E" & gyo).Value = "平成" Then
            Range("G" & gyo).Value = Range("F" & gyo).Value - 12 + 2000
        End If
    Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2020年05月20日 08時02分17秒
投稿ID: 4727 受講生さんの投稿
小川さんいつもお世話になっております。

下記のようなコードでもsheet2の解答と同じ結果になりました。解説をみましたが、本当に色々パターンありますね。

Sub hyou()
Dim gyo
Dim gyoshya
Dim furigana

    For gyo = 2 To 27
        If InStr(gyoshya, Range("A" & gyo).Value) > 0 Then
        
        Else
            gyoshya = gyoshya & "," & Range("A" & gyo).Value
            furigana = furigana & "," & Range("B" & gyo).Value
        End If
        Range("F2").Value = Mid(gyoshya, 2)
        Range("F3").Value = Mid(furigana, 2)
        
    Next   
End Sub
この投稿には、3件の返信があります。  投稿日時: 2020年05月18日 03時17分47秒
投稿ID: 4725 受講生さんの投稿
お疲れ様です。

小川さんのコードはシンプルで読みやすいです。私が書いたコードだとだいぶ無駄がありますね。汗 

下記がコードです。

Sub banngou()
Dim siryou
Dim gyo

    For gyo = 4 To 19
        siryou = Range("C" & gyo).Value

    If InStr(siryou, "A") > 0 Then
        Range("B" & gyo).Value = Replace(Mid(siryou, 3), "A", 1)
    
    ElseIf InStr(siryou, "B") > 0 Then
        Range("B" & gyo).Value = Replace(Mid(siryou, 3), "B", 2)
    
    ElseIf InStr(siryou, "C") > 0 Then
        Range("B" & gyo).Value = Replace(Mid(siryou, 3), "C", 3)
        
    End If

    Next
End Sub

このコードでやってしまうと、仮にA~Zまでを求める場合、パターンが増えるので大変だなぁと思いました。もう少し効率よく書きたいもんです。
この投稿には、1件の返信があります。  投稿日時: 2020年05月18日 02時52分19秒
投稿ID: 4718 Kenさんの投稿
以下のようなプログラムを作ってみたところうまく動きませんでした。
調べてみたところ
motogyo = kai * 3 - 2​ ’★

kai=1
なのに
motogyo=-2
になっています。
これは何故なのでしょうか?

--------------------------------------------
Sub kaitou1()
Dim kai​
Dim motogyo​
Dim listgyo​
motogyo = kai * 3 - 2​ ’★
listgyo = 1​
For kai = 1 To 10​
Range("C" & listgyo).Value = Range("A" & motogyo).Value & Range("A" & motogyo).Value​
listgyo = listgyo + 1​
Next​
End Sub
この投稿には、3件の返信があります。  投稿日時: 2020年05月12日 19時10分46秒
投稿ID: 4707 ゲストさんの投稿
こんにちは。こんな時期なので、仕事にVBAすごく活用して評価されてます。ありがとうございます。

動画と同じような型の転記処理をしているのですが、
転記元は動画と同じ行数程あり、
転記先は10行の表が横にいくつも並んでる状態です。
10行目を終えるとまたすぐ隣の列の1行目から始めたいのですが、どのようにかけばうまくいくでしょうか?
ご教授頂くと幸いです。



この投稿には、3件の返信があります。  投稿日時: 2020年05月06日 17時57分19秒
投稿ID: 4678 受講生さんの投稿
プログラムの印刷を行う場合に、左端一ぱいのところから印刷されて、大変見にくし、ファイルリングに穴をあけると、左端が見えなくなります。
このため、エディタの書式タブで、左右の間隔や上限の間隔を調整しようとしても、入力できません。プログラムは書式の設定ができないのでしょうか。

この投稿には、1件の返信があります。  投稿日時: 2020年04月24日 01時28分48秒
投稿ID: 4674 nobashiさんの投稿
VBAのプログラミングは自分でも解説を聞く前に解答できました。操作の件で教えてほしいのですが、HOME+Shift+↓↓↓+Ctr+Xできりとり、貼り付けする場所で、TABを操作し、Ctr+Vで張り付けると、一番上の行だけしか、TABが効きません。他の行はタブが効かないのですが。。。(他の問題でも同じです。どこがいけないのでしょうか。
この投稿には、3件の返信があります。  投稿日時: 2020年04月22日 01時41分58秒
投稿ID: 4670 受講生さんの投稿
vlookup関数を使わずにVBAで書くとこのようなことになることは理解できます。このVBAで書くと、一つずつ、はじめから検索することになると思いますが、検索したいデータが膨大(例えば1万件)になるとかなり時間がかかることになると思います。発展編を受講すれば、別のプログラムを使ってもっと速度を上げるような方法を学ぶことができますか。
この投稿には、1件の返信があります。  投稿日時: 2020年04月20日 03時49分22秒
投稿ID: 4633 受講生さんの投稿
条件分岐構文(If_ Then_Elseif_ End if とFor_ Nextの組み合わせ)で1点質問です。
早速実務でも使ってみました。
在庫回転率(売上原価÷期末在庫)
3以上=”A”
2以上="B"
1以上="C"
1未満="D"
#DIV/0!="在庫ゼロ"
と表示させたいと思いました。
数値になっている部分は、条件分岐しても問題なく動くのですが、
#DIV/0!は「実行値エラー"13" 型が一致しません」の通知がきて、
動きがそこで止まってしまいます。
(#DIV/0!は” ”で囲っています。囲わない場合赤字になりました。)
エラー値の場合、何か特別の処理をしなくてはならないのでしょうか?
(急ぎではないので、以降の講座で出てくるのであれば、その際に学習します。)
この投稿には、7件の返信があります。  投稿日時: 2020年02月22日 02時01分41秒
投稿ID: 4545 田中 宏明さんの投稿
ショートカットキーによるやり直し
 Alt→E→R
無意識に使えるよう練習します。
この投稿には、1件の返信があります。  投稿日時: 2019年08月18日 04時07分53秒
投稿ID: 4533 ほとさんの投稿
フォローアップアドバンスドでつっかかったので、ベーシックが本当にすらすらできるか不安になり、再復習しました。
結果、3度復習したことになりましたが、マクロが思ったような動きにならない場合でも慌てずに修正できるようになり、ベーシックレベルの変数の考え方・使い方は完全に整理できたと思います。最初のころを考えると信じられません。
また3度目の復習ではなんとかベーシックのマクロを2時間程度で組めるようになりました。再度、アドバンスドにチャレンジします。
この投稿には、2件の返信があります。  投稿日時: 2019年07月28日 02時11分23秒
投稿ID: 4519 ほとさんの投稿
小川先生

こんにちわ
先生の講義はわかりやくすてすらすら頭に入ってきます。
この調子で進めていきたいと思います。

[2]の回答を復習したとき、最後のfor next構文でお団子のとる範囲を間違えて最後の行を取りこぼしてしまいました。
間違いだということはすぐ理解できたのですが、
その時のマクロの実行結果が私の推測と違っていたので、質問させていただきました。私の推測では、F6に6が表示されると思ったのですが、実際はF7に表示されました。理由をお教えいただけますでしょうか。

復習で書いたマクロは以下のものとなります。
Sub countif_3()
Dim goukei

Dim gyo2
For gyo2 = 4 To 6
goukei = 0
Dim gyo
For gyo = 4 To 18
If Range("c" & gyo).Value = Range("e" & gyo2).Value Then
goukei = goukei + 1
End If
Next


Next
Range("f" & gyo2) = goukei

End Sub
この投稿には、2件の返信があります。  投稿日時: 2019年07月07日 23時26分00秒
投稿ID: 4507 矢口幸平さんの投稿
こんにちは。いつもお世話になっております。
ベーシックを終了してアドバンスドに移行予定でしたが
業務が繁忙であるため、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
この投稿には、5件の返信があります。  投稿日時: 2019年06月19日 07時45分03秒
投稿ID: 4503 矢口幸平さんの投稿
ベーシック終わりました!次はアドバンスを頑張りたい!
投稿日時: 2019年06月14日 06時26分18秒
投稿ID: 4481 藤村英夫さんの投稿
なるほど。リンクの説明を読んで納得しました。ドットバリューも将来の為に入力するようにします。
投稿日時: 2019年05月13日 04時39分42秒
投稿ID: 4479 受講生さんの投稿
小川先生、
お世話になっております。カンマの使い方で1つ確認させてください。解説を見る前に自分で解いた時に、カンマを表示する時にコードとしてRange("F2").Value = Range("A2" & ",").Value としたのですが、実行時エラー1004となり、動きませんでした。
Range("F2").Value = Range("A2").Value & ","としたら可動しました。別の会の授業の中でのコロンを使用したRange("C2" & ":" & "E2").Value = 8のコードを参考に上記のようなコードとしたのですが、エラーがでました。確認したいのですが、これはどこがエラーの原因なのでしょうか。よろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2019年05月10日 14時52分12秒
投稿ID: 4477 藤村英夫さんの投稿
一回目に見たときに感動したのですが、土日だけ復習しているとすぐに忘れてしますので、思い切ってスマホを大型に買い替えて、ゴールデンウィーク明けからは、電車のなかでこの動画を通勤中に見るようにします。

ところで、質問ですが、ドットバリュー(.value)は入力しなくても、
今のところ支障なく作動するようですが、この先 発展編にすすむとまずいことはでてきますか? 書店で購入した本が、range("A1").value等の
入力の場合、ドットバリュー(.value)は打たなくても問題がないという記述があったので、今まで入力していません。
この投稿には、1件の返信があります。  投稿日時: 2019年05月05日 19時01分47秒
投稿ID: 4458 受講生さんの投稿
お世話になります。ご無沙汰しております。
For Nextステートメントについて質問があるのですが、For NextステートメントはRange("A" & i )のように書いてはいけないと今日言われました。
Cells( 1 , i ) のように書きなさいと。
理由としてはRangeでかくと
① 処理が遅い
② そんなコードを書いていると笑われる
との事です。

私は小川先生の講座で1年以上VBAについて勉強してきましたのでこの書き方に違和感はありませんでした。
ちなみにCellsの書き方も知っています。
そこで、小川先生がこの書き方でやってきているのは初心者に理解しやすいようにですか?上級者向けの講座ではCellsを使っているのでしょうか?
Rangeの書き方でも行の処理ならできるので良いかなと思っていたのですが今日、思いっきりその書き方はダメだよと言われました。
と、言うのも現在、東京都が行っている職業訓練というものでExcel VBA実践コースというのを受講しています。
2月から3ヶ月間のコースでまもなく終わりを迎えます。
その講師の先生から言われました。
その先生の教え方はものすごくわかりにくく、受講者のほとんどが授業を聞かずに自分たちでテキストを読み込んだり、ネットで調べながら勉強していたほどお世辞にも優秀な講師とは言えないです。
どこがダメか具体的に教えて欲しいといっても処理速度が遅いのと田中先生(Office田中)が言っていたからとしか説明してもらえませんでした。
私の中では信頼の置けない講師の方なので腑に落ちなくて・・・。
小川先生に直接質問させて頂きました。
今後もっと複雑なコードを書くようになったらRangeでの書き方はしなくなっていくのでしょうか?
ご教授、お願いいたします。
この投稿には、4件の返信があります。  投稿日時: 2019年04月11日 23時45分18秒
投稿ID: 4435 jinoseさんの投稿
[感想]
これは、、、難しい!初期化、変数を増やすタイミング、for next構文の最初と最後の処理、条件分岐等。。。まだ身についていないところの総復習が必要と感じた。

まずはフォローアップ ベーシックを1周できました。わかりやすい講義をありがとうございました!!!
この投稿には、1件の返信があります。  投稿日時: 2019年03月14日 21時54分42秒
投稿ID: 4424 藤村英夫さんの投稿
これはスゴイ!! 脱帽です!! for next 構文のハナコのステップは想像が届きますが、このIF then 構文の組合せの作法は思いもつきません。私、いままで二重仮定のIF then構文は、IF とend ifの組合せがよくわからなくなるのです。これは、非常に参考になりました。

この投稿には、1件の返信があります。  投稿日時: 2019年03月10日 02時36分41秒
投稿ID: 4419 山浦 一理さんの投稿
マクロの実行に伴って変数の値が推移する。
講義中で行われていたように、変数の値を丁寧に追いかけることで理解につながりました。
この投稿には、1件の返信があります。  投稿日時: 2019年03月08日 04時37分18秒
投稿ID: 4409 jinoseさんの投稿
[感想]
「勝ち抜き戦・暫定王者・挑戦者」という用語を用いた説明が大変わかりやすく、すんなりと理解出来ました!
この投稿には、1件の返信があります。  投稿日時: 2019年02月26日 07時17分22秒
投稿ID: 4395 jinoseさんの投稿
[感想]
最初は理解できなかった(for next構文の中にfor next構文)が、復習するにつれだんだんとわかってきた。リアルでの例えがわかりやすくて納得できました!

[質問]
countif関数で=COUNTIF(C$4:C$18,"=" & E4)をなっておりますが、第2引数に"=" & をつけるのはなぜでしょうか(E4だけで動くと思うのですが)?
この投稿には、1件の返信があります。  投稿日時: 2019年02月18日 06時36分21秒
投稿ID: 4388 jinoseさんの投稿
[感想]
ハナコのステップの凄さを再認識しました。このマクロを上から書いたら訳わからなくなると思いました。
この投稿には、1件の返信があります。  投稿日時: 2019年02月14日 15時57分42秒
投稿ID: 4387 jinoseさんの投稿
よい復習になりました!
この投稿には、1件の返信があります。  投稿日時: 2019年02月14日 03時49分03秒
投稿ID: 4344 受講生さんの投稿
お世話になります。問題3について質問させてください。
下記のようにコードを書きました。小川先生と同じように書いたつもりですが、動きません。実行時エラー5と表示されます。そこで試しにRange("C" & gyo).Value = Left(name, slush - 1)をRange("C" & gyo).Value = Left(name, slush )としたところ、動くようになりました(/は入ってしまいますが)。今回のコードにはもう1つ問題があります。半角空欄を認識していません。なぜダメなのかお手数ですが、ご回答お願いいたします。

sub renshu2()
Dim slush
Dim name

Dim gyo
For gyo = 2 To 11
name = Range("b" & gyo).Value
slush = InStr(name, "/")
If name = 0 Then
slush = InStr(name, " ")
End If
Range("C" & gyo).Value = Left(name, slush-1)
Range("D" & gyo).Value = Mid(name, slush + 1)

Next
End Sub

この投稿には、3件の返信があります。  投稿日時: 2019年01月30日 14時59分29秒
投稿ID: 4343 jammin2さんの投稿
解答のgyosha = gyosha & "," & Range("A" & gyo).Valueの意味がいまいちわかりません。最初のgyoshaの変数を定義するのに、gyosya=gyosya…とそれまでにgyosyaが出てこないのに、どういう意味でしょうか。
xを宣言するのにx=x+yだとしたら、x-x=y、0=yのようにならないのでしょうか。どうも頭硬いようです。
ちなみに私は下記でやってみました。あまり格好良くないでしょうか。

Sub kaisya()
Dim gyosh
Dim gyo
gyosh = Range("a" & 2).Value
For gyo = 2 To 11
gyosh = gyosh & "," & Range("a" & gyo).Value
Next
Range("f2").Value = gyosh

End Sub
この投稿には、1件の返信があります。  投稿日時: 2019年01月30日 06時17分41秒
投稿ID: 4341 jammin2さんの投稿
Replace 関数?
過去に習いましたでしょうか?
この投稿には、1件の返信があります。  投稿日時: 2019年01月29日 16時10分40秒
投稿ID: 4295 受講生さんの投稿
お世話になります。この正月にだいぶ進捗できました。1つ確認させてください。
Range("C1").Value = Range("A1" ).Value & Range("A2" ).Value ですが、これをまとめてRange("C1").Value = Range("A1" & "A2").Value 左記のように書いたのですが、実行時エラー1004と出ました。これは何故動かないのでしょうか。宜しくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2019年01月09日 15時40分34秒
投稿ID: 4280 受講生さんの投稿
sumif関数の方法は理解できました。sumifs関数もマクロで実現可能ですか?
この投稿には、1件の返信があります。  投稿日時: 2018年12月29日 23時45分20秒
投稿ID: 4270 受講生さんの投稿
Worksheets(“元データ”)やWorksheet(“要注意リスト”)の元データや要注意リストの部分も変数にして当てはめることは可能ですか?シート名が変わったりしても書き変えなくてすむように、motosheet=range(“A1”).valueみたいにできますか?
この投稿には、1件の返信があります。  投稿日時: 2018年12月26日 08時06分06秒
投稿ID: 4264 ゲストさんの投稿
小川先生
こんにちわ
[2]の回答を作ったのですが、このような形でもいいのでしょうか?
Sub mondai2()
Dim siso
Dim kanpyo
Dim nomimono
Dim gyo
For gyo = 4 To 18
If Range("C" & gyo).Value = "しそ巻き無料" Then
siso = siso + 1
ElseIf Range("C" & gyo).Value = "飲みもの無料" Then
nomimono = nomimono + 1
ElseIf Range("C" & gyo).Value = "かんぴょう巻き無料" Then
kanpyo = kanpyo + 1
End If
Next
Range("F4").Value = siso
Range("F5").Value = nomimono
Range("F6").Value = kanpyo
End Sub
この投稿には、3件の返信があります。  投稿日時: 2018年12月23日 00時32分30秒
投稿ID: 4201 シドニーさんの投稿
小川先生 
お世話になっております。解説見る前に過去の動画を見ながら作成していますが、模範解答のようにきれいにならないこともあります泣
問題4で下記のように作成しましたが、無駄が多いように感じています。(マクロ自体は、問題無く動きましたが…)
マクロを書くときに、シンプルに考える工夫などありますか。よく物事を複雑に考えすぎると言われてしまうので…

Sub mondai4()
    Dim jusyo
    Dim ku
    Dim si
    Dim gyo
    
    For gyo = 2 To 11
        jusyo = Range("C" & gyo).Value
        ku = InStr(jusyo, "区")
        si = InStr(jusyo, "市")
        If ku > 0 Then
            Range("F" & gyo).Value = Left(jusyo, ku)
            Range("G" & gyo).Value = Mid(jusyo, ku + 1)
        Else
            Range("F" & gyo).Value = Left(jusyo, si)
            Range("G" & gyo).Value = Mid(jusyo, si + 1)
        End If
    Next       
End Sub
この投稿には、1件の返信があります。  投稿日時: 2018年10月06日 21時20分47秒
投稿ID: 4197 ゲストさんの投稿
小川先生

以下の件かなり参考になりました。
仕事上、ばれてしまうことがあるので朝、名前変数等急いで加工してしまいました。(まあそれだけではないですがまだまだ勉強の足りなさを感じております。)

もう一度書かれていた件は振り返り学習をしようと思います。
まだまだ発展まで行きませんが、確実に勉強していきたいと思っております。

丁寧な対応ありがとうございました。
この投稿には、1件の返信があります。  投稿日時: 2018年10月04日 06時26分22秒
投稿ID: 4193 ゲストさんの投稿
エラーが出たのでもう一度送ります。
投稿日時: 2018年10月03日 15時38分15秒
投稿ID: 4190 シドニーさんの投稿
自分でマクロが書けるようになり成長を実感しています!
前回の問題で勉強したので、今回の問題は何とか解けました!
ただ、小川先生が言っていた、やってはいけない書き方(worksheetsの記述を片方省く)を見事にやってしまい、マクロが思うように実行されず、修正に時間がかかりました(笑)
マクロを書くときにやってしまいがちなミスも学べるので、非常に勉強になります。
この投稿には、1件の返信があります。  投稿日時: 2018年10月02日 06時04分01秒
投稿ID: 4183 受講生さんの投稿
この講座を作っていただいてありがとうございます!っていうぐらいわかりやすく、何回も見直してます。

今回の質問は、文字が入った数値ex(13l)(じゅうさんパイプ)を数値のみの(13)にしたい場合うまくinstr関数left関数にしてもうまくできません。

なにが原因かそして改善策をどうしたらいいのかおしえてください。
ちなみにQRコードを読んだときに区切りとして出てくる”l”です。
もしかしたら”パイプ”と読まないのかもしれませんがこの区切りをなくし数値のみにしたいと思ってます。
よろしくお願いいたします。




この投稿には、4件の返信があります。  投稿日時: 2018年09月29日 07時54分42秒
投稿ID: 4167 受講生さんの投稿
返信が遅くなってしまい申し訳ありません。
トンチンカンな質問に対して丁寧に指導いただき、ありがとうございます。

[a]の基礎講座第1章8と9を見直したところ、自分の間違いに気がつきました。格納された変数は右辺で利用される。左辺に変数を持ってくるということは、変数を格納するということであり、私がIF構文ないでやっていたことは、一度格納したBANGOという変数の内容を変更していただけだと、ハッとしました。よくよく冷静になって自分のマクロを見れば明白な間違いなのに、基礎フォローアップベーシックも最終にさしかかるにつれて、少しずつできるようになってきた楽しさと自信から、一度学んだ基礎の知識を置き去りにして、練習問題を解いていたように思います。基礎を再確認するためにも、自分の間違えたマクロを元に小人ちゃんシートに反映もさせていきました。小人ちゃんシートを使うと自分の書いたマクロをキチンと一つずつ理解しながら、反映ができるので、とても良かったです。基礎ができていないことを先生にご指摘いただき、ここで改めて基礎の大切さに気づけて本当に良かったです。ありがとうございました。

----------------------------
>コメント番号10378で投稿したマクロのRange("B" & GYO).Valueの箇所をコメント番号10443で投稿したマクロのように関数(BANGO)に置き換えるとエクセルに反映されなくなります。
>このような関数の使い方は出来ないということなのでしょうか。という質問になります。

そういうご質問でしたか。

>関数(BANGO)に置き換えると

ここで、用語を間違えています。これは関数ではありません。

>このような関数の使い方は出来ないということなのでしょうか。

上記のとおり、BANGOは関数ではありません。
なので、「このような関数の使い方は出来ないということなのでしょうか」という質問には、回答不能です。

用語を間違えていて、機能への理解もできてない...ということなので。
このタイミングで、以下の動画を復習し、用語とその機能について、ご自身の知識を修正してください。

○基礎講座第1章8 - 変数を使ったプログラム、変数を使う意義
https://forum.pc5bai.com/lesson/page/104/

[a] まずは動画をひととおり見て、用語とその意味を確認してください。

[b] 次に、動画にあわせて、「こびとちゃんシート」を使って、こびとちゃんになったつもりで、一行一行、マクロのコードの内容をシートに反映させていってください。

[c] 上記のワークをしっかりやったあと、さらに、コメント番号10443のマクロを見直してください。

[d] それでもどこがどう問題なのか?が分からなければ、「こびとちゃんシート」を使って(*)、こびとちゃんになったつもりで、一行一行、コメント番号10443のマクロのコードの内容をシートに反映させていってください。

(*)こびとちゃんシートは19行目まではないですが、4行目から9行目まではFor Next構文に従っで実際に作業してください。10行目以降はやらなくてOKです。

[a]-[d] までのどこかで、何をどう勘違いしていたのか?ということについて、すっきり整理して理解できるかと思います。
無事に理解できましたら、[a]-[d] までのどこで問題解決できたか?お知らせください。

[e] もしここまでやっても分からなかった場合は、上記[d]のワークをやった結果のこびとちゃんシート、手書きワークをやりおえた状態のものをお送りください。
PDFファイルでもJPGファイルでもかまいません。スキャンまたは携帯で撮影した画像。どちらでも構いません。
ファイルをお送りいただけたなら、そのファイル、コメント番号10443のマクロを使って解説します。


[a]-[d]のワークは、とても面倒に感じられるかもしれません。

でも、なぜ、講座本編でもわざわざこういうワークをやる時間を取っているのか?というと、それは、こういう手書きワークはとても重要だからです。

それに、多少手書きワークをしたとしても、基礎編フォローの演習問題にチャレンジするのにかかる総時間と比べたら微々たるものですので、ここは面倒でもやってみてください。

漫然とマクロを実行しているだけのときとは比べようのない大きな学びを得ることができるでしょう。
この投稿には、1件の返信があります。  投稿日時: 2018年09月12日 00時37分50秒
投稿ID: 4166 受講生さんの投稿
-----------------------
Sub XXX()
Dim kuiki
Dim gyosha
gyosha = 1
Dim gyo
For gyo = 2 To 27
If Range("A" & gyo - 1).Value <> Range("A" & gyo).Value Then
gyosha = gyosha + 1
Range("E" & gyosha).Value = Range("A" & gyo).Value
Range("F" & gyosha).Value = Range("B" & gyo).Value
kuiki = Range("C" & gyo).Value & "地区"
Else
kuiki = kuiki & "," & Range("C" & gyo).Value & "地区"
End If
If Range("A" & gyo).Value <> Range("A" & gyo + 1).Value Then
Range("G" & gyosha).Value = kuiki
End If
Next
End Sub
-------------------------
今回の2つ目の問題を↑のように解いてから動画を見ました。
このマクロであれば最初と最後の処理を必要としないので良いような気もするのですが、なんとなく格好が悪い気もします。
最初と最後の処理をするマクロを自分で導くのは正直自分には難しそうと尻込みしてしまいますが、自分で導くためのプロセスを順を追って動画で紹介して下さっているので、とても勉強になりました。何回もこの動画を見直して練習したいと思います。
この投稿には、1件の返信があります。  投稿日時: 2018年09月11日 21時19分04秒
投稿ID: 4163 Matsumotoさんの投稿
[9]で何度も練習してからすぐに解いたので、スラスラと回答できました。
復習問題は、きちんと理解できたか確認できるので、
解いていて楽しいです。

次々新しい道具を欲しがる前に
少ない道具を使いこなす(考えずに体が動く)ことを目指します。
この投稿には、1件の返信があります。  投稿日時: 2018年09月09日 20時43分05秒
投稿ID: 4162 Matsumotoさんの投稿
住所分割のマクロ久々です。
本編で学習から約2週間たっていたので
記憶も朧でしたが、回答できました。

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

ただ、絶対的な練習量が少ないので、
何度も復習=マクロを書いて、
問題を見た瞬間に体が動くようにしたいです。
(九九のようにですよね)
この投稿には、1件の返信があります。  投稿日時: 2018年09月09日 02時04分44秒
投稿ID: 4161 Matsumotoさんの投稿
[1]の回答を聞いてからは[2]は途中まで解けましたが、案の定184回までしか転記できず、特集記事は見逃しました。

そこで質問です。
今回は見本回答がE列にあること、転記データが「第●回」で始まるので、不足分があることにすぐ気が付きますが、実務でデータ総数が多い、小川先生はどうしますか?

まずマクロの実行確認として最終行まで転記されているかを確認し、最終行と違ったら⇒for bangou =1 to ●の「●」の範囲が足りないことを推測し、例えば適当に10足したりしますか?
この投稿には、1件の返信があります。  投稿日時: 2018年09月08日 16時01分29秒
投稿ID: 4160 Matsumotoさんの投稿
問題5を何度か練習してからヒントを見てチャレンジしたところ、
動画を見る前に回答できました!!
うれしいです!

ただ、タイプが遅い&ミスが多いため時間がかかります。
小川先生のお話にある「体が動かせる」はとても重要ですね。
この投稿には、1件の返信があります。  投稿日時: 2018年09月07日 08時36分34秒
投稿ID: 4155 Matsumotoさんの投稿
答えを見るまで自力では解くことができませんでした。
一気に難易度が上がった感覚があるのですが、
おそらく基礎編の理解が不十分だからなのだと思います。

先生の言葉にあったように、回答を鵜呑みにしてとにかく練習を繰り返そうと思います。フォローアップ講座を進めながら、同時並行で本編の復習を開始します。
この投稿には、1件の返信があります。  投稿日時: 2018年09月02日 23時38分52秒
投稿ID: 4110 受講生さんの投稿
初めの投稿での質問が下記になります。

「下のマクロを書いた際に、Range("B" & GYO).Valueも繰り返されるので
初め関数を使っていたのですが、資料番号が表に記入されませんでした。
スッテプインで一つずつ確認しても
問題なく実行出来ているように見えるのですが、
どうしてエクセルに反映されないのでしょうか。」

つまり、コメント番号10378で投稿したマクロのRange("B" & GYO).Valueの箇所をコメント番号10443で投稿したマクロのように関数(BANGO)に置き換えるとエクセルに反映されなくなります。このような関数の使い方は出来ないということなのでしょうか。という質問になります。

紛らわしい書き方をしてすいません。
よろしくお願いします。

ーーーーーーーーーーーーーーーーーーーーー
>受講生 さん:

コメント番号10378で投稿されたマクロは以下。
Sub AAA()
Dim GYO
For GYO = 4 To 19
Dim NAME
NAME = Range("D" & GYO).Value
If NAME = "資料A" Then
Range("B" & GYO).Value = 1
ElseIf NAME = "資料B" Then
Range("B" & GYO).Value = 2
ElseIf NAME = "資料C" Then
Range("B" & GYO).Value = 3
End If
Range("C" & GYO).Value = Mid(Range("F" & GYO).Value, 2, 1)
Next
End Sub


そして、今回お送りいただいたファイルのモジュール「Module1」にあったマクロは以下です。

Sub AAA()
Dim NAMAE
Dim BANGO
Dim GYO
For GYO = 4 To 19
NAMAE = Range("D" & GYO).Value
BANGO = Range("B" & GYO).Value
If NAMAE = "資料A" Then
BANGO = 1
ElseIf NAMAE = "資料B" Then
BANGO = 2
ElseIf NAMAE = "資料C" Then
BANGO = 3
End If
Range("C" & GYO).Value = Mid(Range("F" & GYO).Value, 2, 1)
Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2018年08月18日 20時30分53秒
投稿ID: 4109 受講生さんの投稿
はい、二つ目の問題です。
自分で気づかないうちに間違った操作をしてるのかもしれないです。
お手数おかけしますが、添付ファイルの確認お願いします。

---------------------------
>受講生 さん:

動画の5分あたりから扱っている、2つ目の問題ですよね。
ちゃんと動きますね...。

ファイルごと送付いただけますか。
よろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2018年08月18日 12時05分06秒
投稿ID: 4082 受講生さんの投稿
返信ありがとうございます。

>今、僕の環境で試しました。
>が、きちんと動作しますね。。
>これとは別のマクロのことでしょうか。
>でしたら、添削して欲しいマクロを別送してください。

いえ、下記のマクロのことで間違いないです。
きちんと動作しましたか、、、
先生に質問する前にも、エクセル、パソコン自体の再起動をかけて
試して見たのですが、きちんと動作せず、
先ほど、もう一度、先生にご指摘頂いた点を修正して
実行しましたが、やはりB列への反映がされませんでした。

>[1] Dim NAME は、 For 文より前に持っていく

for文の中にいつもDIM XXXを入れていました。
説明を頂いて初めて、よく考えてみればそうだなと気づきました。
ありがとうございます。

>[2] 変数名は NAME でなく他の言葉推奨

もう一度、変数を活用するときの注意点を復習してみます。
ありがとうございます。

ーーーーーーーーーーーーーーーーーーーーー
> 下のマクロを書いた際に、Range("B" & GYO).Valueも繰り返されるので
> 初め関数を使っていたのですが、資料番号が表に記入されませんでした。
> スッテプインで一つずつ確認しても
> 問題なく実行出来ているように見えるのですが、
> どうしてエクセルに反映されないのでしょうか。


今、僕の環境で試しました。
が、きちんと動作しますね。。

これとは別のマクロのことでしょうか。
でしたら、添削して欲しいマクロを別送してください。

いただいたマクロについては、以下の2点修正したいですね。
[1] Dim NAME は、 For 文より前に持っていく
[2] 変数名は NAME でなく他の言葉推奨

[1] は、いただいたマクロのような書き方だと、くり返しの回数だけ変数を作り直すことになります。僕の提案の方法なら、一度作った変数の中身を差し替えていくだけ。
というか、「同じ名前の変数を何度も生成し直す」ということ自体、プログラミングでは推奨されません。

[2] については、基礎編本編第1章「基礎講座第1章9 - 変数を活用するときの注意点」をまずは参照。
https://forum.pc5bai.com/lesson/page/105/

英単語一語の変数名だと、実在するプロパティ等とかぶる危険性が高いです。(そして、実際、かぶってます)
この投稿には、1件の返信があります。  投稿日時: 2018年08月12日 16時52分42秒
投稿ID: 4078 受講生さんの投稿
資料名が1、2、3と順番に並ばないことがある可能性を考えたため
<>という発想がなく、先生の解説を見て目から鱗でした!
下記マクロを書いて、自分では出来た!と思っていたので、
問題の意図が掴めていなかったことに少しショックでした。笑

教材で<>を見た時、この比較演算子はどんな時に使うんだろうと
思っていましたが、こういう使い方ができるんですね。
マクロがよりシンプルになるので、
このパターンをきちんと体得できるように
繰り返し練習したいと思います。

質問
下のマクロを書いた際に、Range("B" & GYO).Valueも繰り返されるので
初め関数を使っていたのですが、資料番号が表に記入されませんでした。
スッテプインで一つずつ確認しても
問題なく実行出来ているように見えるのですが、
どうしてエクセルに反映されないのでしょうか。

Sub AAA()
Dim GYO
For GYO = 4 To 19
Dim NAME
NAME = Range("D" & GYO).Value
If NAME = "資料A" Then
Range("B" & GYO).Value = 1
ElseIf NAME = "資料B" Then
Range("B" & GYO).Value = 2
ElseIf NAME = "資料C" Then
Range("B" & GYO).Value = 3
End If
Range("C" & GYO).Value = Mid(Range("F" & GYO).Value, 2, 1)
Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2018年08月11日 14時08分33秒
投稿ID: 4037 受講生さんの投稿
知っていることを応用しながら、問題を解くのがパズルみたいで楽しいです。

下記のマクロは、私が書いたマクロなのですが、解説動画を見て、
GOKEI=GOKEI+1の位置をRange〜の後に持ってくれば、
GOKEI=4にしなくて良かったんだと気づきました。

また、先生のマクロでは、if文のお団子部分のRangeを各列ごとに分けてマクロを書かれているのに対し
私はA8:C8という風に複数範囲をしてしたマクロを書きました。
今回は問題なく実行できたのですが、このような書き方が問題になることはありますか。
先生のように各列ごとに分けてマクロを書く方が良い理由など教えて頂きたいです。

※マックを使っていて、マクロをタイプする時、全て大文字入力になります。
基本、次の行に移った時に自動的に小文字大文字の調節がされるのですが、自分でつける変数名などは大文字のままです。
特に問題はないのですが、若干の見にくさを感じています。
もしこの設定の仕方をご存知でしたら、併せてお答え頂けると嬉しいです。
ーーーーーーー
Sub ZANGYO()

Dim GOKEI
GOKEI = 4

Dim GYO
For GYO = 8 To 17

If Range("C" & GYO).Value > 100 Then
GOKEI = GOKEI + 1
Range("F" & GOKEI & ":" & "H" & GOKEI).Value = Range("A" & GYO & ":" & "C" & GYO).Value
End If

Next

End Sub
ーーーーーーー
この投稿には、1件の返信があります。  投稿日時: 2018年08月01日 05時38分31秒
投稿ID: 4016 morimotoさんの投稿
やっとやっと基礎フォローアップも前半が終わりました。予定より
時間がかかっちゃいました。別にさぼってたわけでないのですが、歴史の勉強のようにざっと一通りしてみてというのがイヤで時間がかかってもじっくりしたいので予定より大幅に遅れましたが、後半もこだわってこだわってやっていきたいです。変なvbaスクールにいってた時期があり、いまさらですがほんとお金を含め無駄でした。はやくこのサイトを探しだせればよかったんですが。。。
ボヤいても仕方ないのでまたつづきがんばります。
この投稿には、1件の返信があります。  投稿日時: 2018年07月13日 10時53分12秒
投稿ID: 4015 morimotoさんの投稿
何とか自分の今までの知識と浅い経験(あまり共通なコードを変数に置き換えが苦手)でたどり着きました。(tiku=,,,と置き換えするのがつい「なぜ置き換えたんだろう???そのまま長がったらしくコードかけば行けるはずだ??!!と深みに落ちてしまって)。ともあれ自分が次回似たようなケースでコードを作り上げれたらいいなってところです。何度も紙に書きました。f8で動きも見ました。道中過程ほんとにイヤになるものですが、解消したらまずはホッとするもんですね。
この投稿には、1件の返信があります。  投稿日時: 2018年07月13日 10時42分40秒
投稿ID: 4012 morimotoさんの投稿
2日考えましたが解決に至りませんでした。できそうでできないという感じでした。tiku="" やif migi>2 と例外が生じたとき例外処理をするという考えは大切にしたいと思います。実務ではおそらく教科書的なきれいに収まるコードになることはむしろ少ないかもしれませんので、おかしなときは例外処理と頭の隅に置きながた、他のコメント等みさせてもらい、もう一回コード書こうと思います。でも、、、使っている知識は高級なものでなく基礎編の範囲ですからね。ここは地道なランニングと思いがんばります。
この投稿には、1件の返信があります。  投稿日時: 2018年07月11日 09時09分18秒
投稿ID: 4008 morimotoさんの投稿
midで2つ目から表示させる発想はでませんでした。どちらかといえばnantoka_betuの解法が思いつきました。このようなケースは実務で出そうなので上下の比較gyo-1, gyoとmidで消すといった手法は吸収しておきたいです。っと問題はどれも取り組み応えあるのですが使っている知識は基礎編の内容のものなので、驚きです。
この投稿には、1件の返信があります。  投稿日時: 2018年07月09日 08時30分17秒
投稿ID: 4005 morimotoさんの投稿
方法が出てこず非常にむずかしかったです。上下の比較gyo-1とgyoの手法はかなりびっくりしました。これはこれでこの手法を覚えておきます。
それからgt=gt+1, id=id+1 ほんと重要だとわかりました。しそまき問題で出てきましたが、いろんなコードでよく見る場面ですので困ったら使えないか考えるようにします。ほんと勉強になります。
この投稿には、1件の返信があります。  投稿日時: 2018年07月08日 08時53分32秒
投稿ID: 4001 あおちゃんさんの投稿
小川先生、何度も質問すみません。setステートメントと言うのは、どこの講座で出てきますか?ご紹介頂いたところまでまず勉強してから、質問すべきだなと思いました。しかし、時々setの変数が出てくるので、読んで理解したいのです。小川先生の講座のお陰で本当に仕事が捗り、仕事が楽しくなりました。ありがとうございます。
この投稿には、1件の返信があります。  投稿日時: 2018年07月05日 08時28分10秒
投稿ID: 3998 大ちゃんさんの投稿
馬鹿正直に入力してたらダメなんですね。こういうちょっとしたところが本当に勉強になります。プログラミング以外のことにも通じますね。
この投稿には、1件の返信があります。  投稿日時: 2018年07月04日 00時39分30秒
投稿ID: 3997 大ちゃんさんの投稿
自分はVBAに限らず、物事をいっぺんにやってしまう癖があるので、小さいことから広げていくということだけでも目からうろこでした。こういう思考の癖を自分にしっかり染み込ませれば、VBAに限らず人生のなかで達成したいと思っている目標も達成できるのではと、意図せず人生について考えるきっかけになりました(笑)
この投稿には、1件の返信があります。  投稿日時: 2018年07月03日 21時50分58秒
投稿ID: 3995 あおちゃんさんの投稿
小川先生、こんにちは。
2月に基礎編を申し込んで、やっと基礎編フォローアップになりました。奥が深く大変為になります。すみません、教えて頂きたいのですが、出勤簿の精査をしていますが、人数が5.60にんいて、それを毎回一覧表に転記してから、画面と見比べてチェックしています。それぞれのブックを開いて、一覧表に転記すると言うマクロの講座はありますか?このブックを開く関数や変数の使い方が難しくて、さっぱりわかりません。
この投稿には、1件の返信があります。  投稿日時: 2018年07月03日 04時47分15秒
投稿ID: 3994 あおちゃんさんの投稿
投稿日時: 2018年07月03日 04時42分04秒
投稿ID: 3991 morimotoさんの投稿
動画後半の課題F,G,H列を作らず直接I列を作りだすことに
トライし完成しました。たまにですがコードを入力しながらどの部分をdim定義しようか迷う場面がよくあるのですが、1つずつコードを作っていくと見えてくるもんですね。不思議です。ハナコステップの前段のダンゴをどう作ったらいいか、、、ダンゴを練っていくと見通しが立つものですね。これもこのわかりやすい講座のおかげ
です。早く発展編、フォーム編へ行きたいです。
この投稿には、1件の返信があります。  投稿日時: 2018年07月02日 07時08分44秒
投稿ID: 3978 morimotoさんの投稿
ほんとinstr関数は最高強力です。クイックヒントでstartと出るので
意識して入力してます。/が2つありましたがすらすらできました。
久々&で挟む場面もあり復習になりました。今度は途中経過なく
一発でできるか検証したいです。ほんとわかりやすいです。
この投稿には、1件の返信があります。  投稿日時: 2018年06月29日 09時06分07秒
投稿ID: 3970 garuruさんの投稿
ご返信ありがとうございます。

>演習には、パターンをしっかり学ぶということを意識して取り組んでください。
⇒上記アドバイス、ありがとうございます。フォローアップはアウトプットのみのイメージでいたのですが、「パターンを覚える」というインプットの要素もあることを意識します。
今後ともよろしくお願いします。
この投稿には、1件の返信があります。  投稿日時: 2018年06月24日 09時07分36秒
投稿ID: 3969 garuruさんの投稿
初投稿となります。よろしくお願いします。問2で、下記の様なプログラムを書いてしましまた。一応やりたいことはできたのですが、「項目の分だけ変数を作ってelseifで処理する」という考えが真っ先に思いつき、しそ巻き無料の問題でも同じ構文でかいていました。

先生の正解に近づくにはロジカルシンキングの様なものが欠如しちるように思えるのですが、何かアドバイス頂けないでしょうか?

 Sub enari()
Dim kek
Dim omi
Dim syu
Dim gre
Dim omihuku

Dim gyo

kek = 0
omi = 0
syu = 0
gre = 0
omihuku = 0

For gyo = 4 To 10
    If Range("I" & gyo).Value = "?????j??" Then
    kek = kek + Range("J" & gyo).Value
    
    ElseIf Range("I" & gyo).Value = "??????????" Then
    omihuku = omihuku + Range("J" & gyo).Value
    
    ElseIf Range("I" & gyo).Value = "?o?Y?j??" Then
    syu = syu + Range("J" & gyo).Value
    
    ElseIf Range("I" & gyo).Value = "???O" Then
    gre = gre + Range("J" & gyo).Value
    
    ElseIf Range("I" & gyo).Value = "????????" Then
    omi = omi + Range("J" & gyo).Value
    
    End If
Next

Range("D4").Value = kek
Range("D5").Value = syu
Range("D6").Value = Range("C6").Value
Range("D7").Value = gre
Range("D8").Value = omi
Range("D9").Value = omihuku

Range("E4").Value = Range("C4").Value + kek
Range("E5").Value = Range("C5").Value + syu
Range("E6").Value = Range("C6").Value
Range("E7").Value = Range("C7").Value + gre
Range("E8").Value = Range("C8").Value + omi
Range("E9").Value = Range("C9").Value + omihuku

End Sub
この投稿には、1件の返信があります。  投稿日時: 2018年06月23日 10時56分50秒
投稿ID: 3968 morimotoさんの投稿
もうこうなったらいつもの紙とブレークポイント、F8,
msgboxを作り値の検証をしてやっとわかりました。
C列の暫定勝者とD列の暫定勝者を比較し、D列が勝ったら
RETSU="D"を設けないとだめですよね。。。
地道にやって理解できまずはほっとしてます。
実務でも同じような場面がありそうでほんとに役立つ講座です。
この投稿には、1件の返信があります。  投稿日時: 2018年06月23日 01時26分34秒
投稿ID: 3967 morimotoさんの投稿
3つ目の問題は4-5日考えましたがわかりませんでした。
解説講義を見て、「なんとなくわかったつもり」では
いけないので見た後に復習をしましたが、できませんで
した。やることは単に各列の勝者を比べるだけなのですが
、retsuを変数にしretsu="c",,,ということがつかみきれず
投稿日時: 2018年06月23日 01時22分05秒
投稿ID: 3960 morimotoさんの投稿
会社で時間があればフォロアップの演習してます。エディッタ画面を当然開いてやりますから、周りから「何してんねん」と声がかかり始めてまあ変なことしてるな~と見られ始めました。どこかの講座でこのようなことになるよってあったような、、、ほんとですね。
この投稿には、1件の返信があります。  投稿日時: 2018年06月17日 11時20分43秒
投稿ID: 3958 morimotoさんの投稿
疑問が解けました。いろんはVBA本を見てても
worksheets(1)range("a1"),,,,,て書いていたりrange("a1"),,,,,とあったりどうちがうのかわかりませんでした。同じ意味なのか違う意味なのか。当たり前かもしれませんがどのシートを実行させるのか
ってことですね。こんな初歩的なことでもぼくにとっては重要です。ほんといい講座です。

この投稿には、1件の返信があります。  投稿日時: 2018年06月17日 11時08分55秒
投稿ID: 3957 morimotoさんの投稿
for nextが2段階あることでわかんなくなるんですが、紙に書けば
ほんとわかりました。2つのfor nextを頭の中で同時に動かすから
混乱するようです。1つのfor nextを止めてもう1つのfor nextを動か
していけば見通しがたちました。あとはカウンターをどこで0に
リセットするかですよね。現場の第一線のプログラマーもやはり
紙に書きだしたりすることあるのでしょうか?
この投稿には、1件の返信があります。  投稿日時: 2018年06月17日 10時53分17秒
投稿ID: 3956 morimotoさんの投稿
Sumifで余裕、、、まさかマクロ塾ではそんなシンプルでは終わら
ないと思いきやその通りでした。しそ巻き問題といいこの問題と
いいほんととっつきにくいものでした。が画面ばかり見ても仕方
ないのでいつもあるように「紙に書いて」みればよく流れが見えました。わからないときこと紙に書き出せば見えるものですね。
この投稿には、1件の返信があります。  投稿日時: 2018年06月17日 10時46分51秒
投稿ID: 3924 マメコトさんの投稿
今回の問題はこのように書いてから動画を見ました。
Sub mondai2()
    Dim hida
    Dim migi
    Dim Kuiki
    migi = 2
    
    For hida = 2 To 27
        If Range("A" & hida).Value <> Range("A" & hida - 1) Then
            Range("E" & migi).Value = Range("A" & hida).Value
            Range("F" & migi).Value = Range("B" & hida).Value
            Kuiki = Range("C" & hida).Value & "地区"
            Range("G" & migi).Value = Kuiki
            migi = migi + 1
        Else
            Kuiki = Kuiki & "," & Range("C" & hida) & "地区"
            Range("G" & migi - 1).Value = Kuiki
        End If
    Next

End Sub
重複した業者名が続くと『区域』を毎回書き直すのがカッコワルイと感じてはいますが、最初と最後の特殊な制御は不要になるので、メンテナンスはしやすく、これはこれでアリなのではと思っています。
一方、処理が重くなったり遅くなったりするというデメリットもあるかも知れないのですが・・・どうでしょうか。
この投稿には、1件の返信があります。  投稿日時: 2018年05月28日 10時11分24秒
投稿ID: 3922 マメコトさんの投稿
『行をループさせて最大値を取り、その後列をループさせて表の最大値を獲得する』というアイデア(設計図)を思いついたものの、列をループさせる手法が思いつかず、結局何度も似たようなForループをコピペして「とりあえず動く」マクロを書いたものの、エレガントとは言えない方法だなぁと思っていました。解決策をネットで検索して、手法として使えそうなcellsを知りました。
四苦八苦しながらcellsで動くマクロを作成(過去に投稿された方のコードと全く同じ)し、それから動画を見ました。
ところが、そのエレガントとは言えない方法(ベタな方法)が解説されている動画を見て、自分の考え方に根本的な誤りがあることに気づきました。
つまり『まだ白帯の私が高度な技を憶えようとするのは早すぎる。学んだことを徹底して反復練習することが先決』ということです。
実際、ベタな方法でコードを書くのには、15分もかかっていないのに、慣れないcellsを検索して試行錯誤するのに3日もかかってしまいました。
cellsという手法もどうやらベストではないらしく、for each構文その他、将来学ぶべきことはまだあるらしいということも知りました。
もう、ネットで検索するのに時間を費やして演習時間を減らすという迂遠な方法は止めます。
たぶん、この講座のカリキュラムに沿って学ぶ方が、最速でマクラー(マクロを自在に操れる人。そんな言い方するのか不明)になれる気が本当にするからです。
今後もよろしくお願いします。
この投稿には、1件の返信があります。  投稿日時: 2018年05月27日 00時45分24秒
投稿ID: 3916 soulire.yo27さんの投稿
ありがとうございます!
コードの意味は深く考えず、最終行なのでROWで下からぶつかったところ・・・?と想像しつつ、とりあえず活用させていただきます。

ここまでの動画の練習問題も日々の業務に本当に役に立っていて、毎日進化中の自分、数週間前の私とは明らかに違って、魔法にかかっているみたいです。
発展編へ向けて頑張ります☆
この投稿には、1件の返信があります。  投稿日時: 2018年05月23日 06時17分29秒
投稿ID: 3912 マメコトさんの投稿
なぜ同じ感想を3通も送信されてしまったのか、わかりません。お手数ですが、削除してください。
以前解説があったかも知れませんが、ピリオドを打った後(Range("A1").⇐これ)の候補リストが、今回のマクロを記述する際に表示されないのは、vbeの仕様なのでしょうか。
この投稿には、1件の返信があります。  投稿日時: 2018年05月21日 11時57分15秒
投稿ID: 3911 マメコトさんの投稿
全ての問題について、動画解説を見る前に「先ずは自力でやってみよう」と思って取り組んでいます。
今回の問題は、動画5で学んだことが直接活かせる問題でした。
途中で考え込むこともなく、サラサラとコードを書いている自分にびっくりですw
今までのマクロはシートが別だと全く用をなさなかったですが、マクロの中でシートを指定すれば、どのシートからでも動かせるんですね。
面白いなぁ~
この投稿には、2件の返信があります。  投稿日時: 2018年05月21日 11時40分32秒
投稿ID: 3906 soulire.yo27さんの投稿
マクロを学んでみようと思ったきっかけの一つがこれでした。
元データを一つ一つ検索ソフトに打ち込んで、半日くらいかけて行うこともしばしばあって何とかならないかと思い始めて数か月になります。

先日、職場でプログラムを書き上げて一気に終わった仕事を見て、あまりの気分の良さに定時でさっさと帰ってきました♪

毎日の業務なので、検索値の最終行を自動で判断してくれるようなマクロを書けるようになると、さらに楽になるのに。。。と淡い期待を抱いています。

一週間先の自分が楽しみな毎日です。
この投稿には、1件の返信があります。  投稿日時: 2018年05月19日 06時50分54秒
投稿ID: 3897 morimotoさんの投稿
ふれあい広場の例えはほんとわかりやすい。初期値goukei=0と
goukei=goukei+1 どこにコードを書くかゆっくり考えればできそうです。
だめならどこかに入れてf9で1つ1つどうなるか検証ですね。
この投稿には、1件の返信があります。  投稿日時: 2018年05月16日 11時05分06秒
投稿ID: 3896 morimotoさんの投稿
きたないコードになりましたができてやり応えありました。ヒントがあったので助かりました。動画4にあったgoukei=goukei+1 の記憶が行かせました。しばしばたとえばcnt=cnt+1といったコードを見かけますが
何か数えるときはこの式がでるように記憶します。
この投稿には、1件の返信があります。  投稿日時: 2018年05月16日 11時02分47秒
投稿ID: 3894 ゲストさんの投稿
小川 様

質問に対するご指導、
ありがとうございました。

[a] Dim ... , Dim ... という変数宣言を、
Subプロシージャ先頭のほうで固めた方が良さそうな気がするけど、
[c] 変数が登場する順序と、それらの変数を使う順序は
一致していた方が良いのかな?

と思っていましたが、正確に表現できていませんでした。

宣言してから、値を格納するという点、
動画を復習します。

今後ともよろしくお願い致します。
この投稿には、1件の返信があります。  投稿日時: 2018年05月15日 08時40分39秒
投稿ID: 3890 ゲストさんの投稿
変数が複数出てくると途中で混乱してしまい、なかなかついていくのが難しいですが、ひとつづつ説明いただいているので構造的には理解できそうです!落ち着いて、構造を把握してひとつずつ検証するのと、トライアンドエラーの繰り返しが必要そうです
この投稿には、1件の返信があります。  投稿日時: 2018年05月14日 02時07分05秒
投稿ID: 3887 ゲストさんの投稿
'dim で変数を宣言する記述と、
実際に変数を記述した式の順番、
これについて教えて頂けますでしょうか。

変数を、「必要だ」と自分が気付いた順番で記載すると、
'dim jusho
'jusho=range("C2").value
'dim ku
'ku = instr(range("C2").value,"区")
'dim gyo
'for gyo = 2 to 11

の順番になりました。

その後、'jusho=range("C2").value の("C2")の箇所を
'"(C & gyo)"に変更すると、
添付のようなエラーが出てしまいました。

これはおそらく、
「gyoという変数を宣言する前の行の記述にさかのぼって
"C2"の箇所にgyoを当てはめて使ってはダメだよ」
という意味だと思うのですが、

変数を宣言する(dim)記述と、
変数を定義する記述は、どの順番で書くのが正しいのでしょうか。

2つ以上の変数が必要になった場合、
必要だと判明した順番で書くと、
上から順に、'dim ばかりにはならず、きれいに揃いません。
それを整理しようとした時に、
どういう順番で整理するのが正しいのかをご指導願います。
この投稿には、1件の返信があります。  投稿日時: 2018年05月13日 09時14分14秒
投稿ID: 3875 ゲストさんの投稿
お世話になります。

講義は有難いのに、私が吸収できません。
申し訳ございません。

講義動画、4分26秒の箇所で質問です。

C4から18までの「しそ巻き無料」の回数を数えたかったので
添付ファイルのような式を書きました。

すると、
エクセルシート名:キャンペーン名簿1のセルF4に
「1」という答えが出て、間違えました。

小川先生の回答は、

' If Range("C4").Value = "しそ巻き無料" Then の後が、
'goukei = goukei + 1

になっています。

私が書いた式だと、
どういう意味になってしまうのでしょうか??

もしかして、
goukei = goukei + 1 の部分で、
「しそ巻き無料」の回数を累計させているのでしょうか??

ご指導、お願い致します。
この投稿には、1件の返信があります。  投稿日時: 2018年05月07日 06時38分56秒
投稿ID: 3780 わかやまさんの投稿
小川様

ありがとうございます。
はじめに見ていただいたマクロと比較するとInstr関数の引数の指定のない部分がちがっていますね、、、。
惜しかったと思わずに、しっかり復習してできるだけたくさんのマクロをかいてスキルアップしていきたいと思います。
これからもよろしくお願いします。
この投稿には、1件の返信があります。  投稿日時: 2018年04月11日 03時34分06秒
投稿ID: 3764 わかやまさんの投稿
小川様

問題3を以下のように解きましたが、どうでしょうか?

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

アドバイスお願いいたします。
この投稿には、7件の返信があります。  投稿日時: 2018年04月05日 15時04分05秒
投稿ID: 3688 近藤さんの投稿
右のリストの変数・左のリストの変数よくわかりました。
練習してみて気づいたのが、
例えば(実務で使っているデータ)、
右のリスト(元となる表データ)の変数
左のリスト(合計の算出先)の変数をつくり、
動画と同じようにハナコでくくってもなぜかうまく動かないなと悪戦苦闘していたところ、
右のリスト(元となる表データ)の箱を先につくり、
左のリスト(合計の算出先)でくくらないとうまくいかないのですね。
順番を逆にしていたのでうまくいかず、うんうん唸っていました笑
うまくいったときはとてつもない快感でした!
この投稿には、1件の返信があります。  投稿日時: 2018年02月28日 08時06分39秒
投稿ID: 3624 ガラパゴスタディー吉川さんの投稿
条件分岐については前回の復習ということもあり、理解度が増しました。

頭がこんがらがるときは、「こういうときはこうする」と一旦日本語で
口に出すと整理できました。
ちょっぴり恥ずかしい方法ですが、マクロとにらめっこしても答えは出ないと思うので、こういうことでも繰り返し行うことで、日本語を書くように深く考えなくてもマクロが書けるようになるのではないかなぁと思っています。
引き続き学習いたします。
この投稿には、1件の返信があります。  投稿日時: 2018年01月18日 00時40分32秒
投稿ID: 3623 ガラパゴスタディー吉川さんの投稿
どのタイミングで変数+1とするか、少し苦戦しました。
演習問題は、ある程度ゴールがわかっている状態からのスタートですが、たどり着くのにまだ試行錯誤が必要なレベルです。
実務でここまですぐにマクロが書けるようになるまでは、まだまだ訓練が必要だと思うので、引き続き学習していこうと思います。
この投稿には、1件の返信があります。  投稿日時: 2018年01月17日 01時23分36秒
投稿ID: 3622 ガラパゴスタディー吉川さんの投稿
今回Instr関数はスタート位置が設定できるということを、新たに理解しました。

文字列を扱う関数はだいぶ慣れてきましたが、まだ頭をひねらないと答えに行きつかないので、繰り返し演習問題を解いていきたいと思います。
この投稿には、1件の返信があります。  投稿日時: 2018年01月16日 01時49分25秒
投稿ID: 3619 受講生さんの投稿
この練習を数回するうちに変数の使い方が腑に落ち、便利さを実感しました。行を加えていく saki = saki + 1とともに実際に業務で使用して、成果を発揮、とても重宝しています。ありがとうございました。
この投稿には、1件の返信があります。  投稿日時: 2018年01月10日 14時43分12秒
投稿ID: 3617 ガラパゴスタディー吉川さんの投稿
Instr関数の理解があいまいだったことが今回の問題でわかりました。
⇒該当の文字列が何文字目にあるかだけでなく有無も判断ができるという部分

段階的に理解ができるようになっているので、改めて素晴らしい教材だと思いました。
引き続きよろしくお願いします。
この投稿には、1件の返信があります。  投稿日時: 2018年01月05日 23時11分27秒
投稿ID: 3611 受講生さんの投稿
今回はさくっと解けました。
(昔の私も、さくっと解いていたようですが・・・(;´・ω・))
2つのForNextとif文を使いこなす点で
しそ巻きカウントの手法をマスターしたという実感が湧きました。

一つ気がついたのは、
ある目的値の該当が見つかったら、もう比較を続ける必要がないので
そのIF文を終わらせて、次の比較値に進むようにすれば
処理は速くなるだろうなということです。
今回は加算していく比較ではなく、ただ1つの該当値を見つけるための比較だからです。
(IF文を抜ける文法自体は忘れましたが、手法として思いつきましたので
書いてみました)
gooska
この投稿には、1件の返信があります。  投稿日時: 2017年12月29日 00時03分21秒
投稿ID: 3610 受講生さんの投稿
小川先生、こんにちは。

勝ち抜き戦マクロ、以前この仕組みを考えるときに
冬季五輪のジャンプ等の競技をイメージしたことを
思い出しました。
変数に初期値を与えて、1行ずつ変数値と比較していき
値が上回ったら変数を書き換える仕組みですね。
正解をみて、無駄なステップを多少修正しましたが、
今回も順調に解けました(*´▽`*)

おかげさまで、基礎編で学んだ素材だけでマクロを作る手法には
だいぶ自信がついてきました。

今後もフォローアップの問題を進めながら、
そろそろ発展編に取り組もうと思います。
年明けからの職場では、他人が作ったマクロを実務で運用することになるので
一般的な基礎知識を広げておく必要を感じるからです。

まだまだだと思いますが、引き続きよろしくお願いいたします。
gooska
この投稿には、1件の返信があります。  投稿日時: 2017年12月28日 22時54分44秒
投稿ID: 3606 ガラパゴスタディー吉川さんの投稿
今回のマクロは考えるより先にスムーズに書けました。
ForNext文については元々よく利用していましたが、
当時と違うことは、それほど頭で考えなくても書けることだと思います。
だいぶ体に染み込んできてくれているようです。
この投稿には、1件の返信があります。  投稿日時: 2017年12月27日 02時11分29秒
投稿ID: 3602 受講生さんの投稿
馴染みのある懐かしい住所分割問題です。
Left関数や、Instr関数を扱うのも久しぶりなので、
一つずつ動作の確認をとる1行マクロを試しながら、
自力で回答できました。
(知っている関数だけれど、引数などをはっきり覚えていない時にどうするか?の練習にもなりました)

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

私が考えたのは、
変数*3+1で、その代わりに変数の範囲を
0 to 9 にするというものでした。
同じ結果が得られたので、悪くはないと思いますが、項目の数が10個でしたから、
やはり1 to 10 にして得られる法則にするべきだなと感じました。可読性という点で、
後で時間が経ってからプログラムを読んだときに、なぜ 0-9なのか?をいったん考えないといけなくなるからです。

先生の[1]の回答を見てからは、[2]はすぐできました。

今レベルの私が楽しいと感じる部分は、
この規則性をいかに見つけるかの作業ですね。
マクロは規則的な処理が得意なので、こびとちゃんには得意なことをさせてあげればいいわけです。
gooska
この投稿には、1件の返信があります。  投稿日時: 2017年12月25日 02時48分10秒
投稿ID: 3598 ガラパゴスタディー吉川さんの投稿
基礎編ということなので、コメントは最小限にいたしますが、Max、Minなどは実務ではワークシート関数として使っていたので、今回のようなマクロの書き方もできるんだというところがおもしろかったです。
実はこういう基礎の基礎みたいな部分が抜けているので、多分応用がきかないのかもしれない、なんてちょっと思っております。
引き続きよろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2017年12月23日 01時49分58秒
投稿ID: 3597 受講生さんの投稿
小川先生、こんにちは。
前回のしそ巻きカウントで十分に復習を積みましたので
今回の問題は、どちらも完璧でした(≧▽≦)
条件を満たす時だけカウント変数に1が加算される
という仕組みが、解いていて心地よく楽しいです。

ちょっと脇道なのですが、
職場に、MS officeの元セミナー講師だった人がいて、VBAにも詳しいというので、
「今、COUNTIF関数をVBAで書く演習を解いていて
なかなか楽しい」話をしたんですね。
解き方として、gokei=gokei+1のように条件を満たしたときに
加算していく方法だと説明したところ、
関数をそのままVBAに書く方法があるよ、と
話をさえぎられてしまいました(;´・ω・)
ワークシート関数を、そのままVBAに書く方法があることは
私も少し見聞きしたことはありますし、
発展編など先の講座へ行けば学べるのかもしれませんが、
今のところ、私が知りたいのは
ワークシート関数をそのままVBAで実行する方法と
今回のように、別の手法で同じ結果を得る方法と
処理速度としては、どうなのか?
ということです。

小川先生の見解をざっくりお話いただけましたら
幸いです。
gooska
この投稿には、3件の返信があります。  投稿日時: 2017年12月22日 06時34分28秒
投稿ID: 3595 ガラパゴスタディー吉川さんの投稿
実務ではsumif関数を使っていたので、マクロにするとどうなるか興味深く学習いたしました。
実務だととにかく動けばよいという感じだったので、マクロにしようと思っていなかったというのもあります・・・
内容的には以前の講座の応用でしたが、変数を0に戻すか戻さないかがどう影響するのかを復習できました。
引き続き学習を進めていきますので、よろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2017年12月22日 01時22分17秒
投稿ID: 3593 受講生さんの投稿
しそ巻きカウントの問題に、1年半ぶりに取り組みました。フォローアップで一番悩み、記憶に刻まれていたのがこの問題です。本当に、先生にも大変お世話になりました。今回私が書いたプログラムは以下のとおりです。

Sub rensyu1219_001()
'しそ巻きカウント

Dim gokei   'カウント数
Dim migi    ' カウント数を記入する場所の行位置の値
Dim hidari  ' 項目が書かれているリストの行位置の値
For migi = 4 To 6   'カウント数を記入する行位置範囲の指定
    gokei = 0       '一つループが終わったらgokeiを初期化する

    For hidari = 4 To 18        '一つの項目について該当したらgokeiに加算する
        If Range("c" & hidari).Value = Range("E" & migi).Value Then
            gokei = gokei + 1
        End If
        Range("F" & migi).Value = gokei  'この時点での加算結果を書き込む
    Next
Next
End Sub

正解と異なる点は、1項目のカウントが終了した時点で
合計値を書き込むタイミングです。
endIfで個別の行の判別を終えた後、nextで次の行へ移る前に
カウント値を書き込んでいます。
こうすると、1行ごとのカウント値が「見える化」し、
上書きを繰り返すことによって、最終的には正しいカウントが
書き込まれますね。

これは確信犯的にそうしたわけではなく、
「どこでカウント値を書き出すか」のタイミングにまだ迷いがあったため
nextで戻る前に置いてみただけなのです。
どこでgokeiを初期化するかで迷うのと似ていますね。

入れ子のnextから抜けるときにgokeiを記入し、初期化し、
それから次の行の項目に移動する、が正しい流れですね。

でも、1行ごとの結果をそのたびに書き出し、上書きする仕組みは
それ自体面白いし、使える局面があるかもと思ったので、
ご紹介しました。

gooska


この投稿には、2件の返信があります。  投稿日時: 2017年12月20日 08時04分53秒
投稿ID: 3592 ガラパゴスタディー吉川さんの投稿
前回動画の復習となりました。
反復して書くことで、わからない⇒理解できた⇒当たり前のことのように、どんどん自分の中に積みあがっていくことを感じております。
ひとまずどんなマクロもまずは書いてみるというのが自然とできるようになってきました。引き続きよろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2017年12月20日 01時11分12秒
投稿ID: 3588 ガラパゴスタディー吉川さんの投稿
「instr関数:該当しない場合は、0を返す」
ここがとても勉強になりました。
この投稿には、1件の返信があります。  投稿日時: 2017年12月19日 02時18分28秒
投稿ID: 3584 ガラパゴスタディー吉川さんの投稿
文字列を扱う関数は、マクロで利用することがあまりなかったので、とても勉強になりました。
動画を拝見し、特に勉強になるのはマクロを書いていく道順です。
普通の参考書では答えがばーんとあるだけで、そこにたどり着くまでの道順が難しくてあきらめてしまうということもあるかと思います。
「まずはとりあえず書いてみる」というように簡単なところからとにかく書いてみようと思いました。
この投稿には、1件の返信があります。  投稿日時: 2017年12月15日 01時03分28秒
投稿ID: 3582 ガラパゴスタディー吉川さんの投稿
いきなり問題を解いているので、私の場合以下のようなまどろっこしいマクロを書いてしまいました。

Sub mondai6_1()
Dim moto1
Dim moto2
Dim saki
moto1 = 1
moto2 = 2
For saki = 1 To 10
Range("c" & saki).Value = Range("a" & moto1).Value & Range("a" & moto2).Value
moto1 = moto1 + 3
moto2 = moto2 + 3
Next

End Sub

結果は同じですが、変数が多いとメンテナンスもしにくいので、
確かに数列で記述する方がスマートだと思いました。
学生の頃は数学不得意だったので、今回改めて勉強になりました。
この投稿には、1件の返信があります。  投稿日時: 2017年12月14日 01時52分37秒
投稿ID: 3577 ガラパゴスタディー吉川さんの投稿
worksheets自体を変数に格納するという方法はこの先にでて来ると思いますが、実はオブジェクトの型の宣言が複雑なマクロになってくるとややこしくて苦手だったりします。
この先の講義が楽しみです。
この投稿には、1件の返信があります。  投稿日時: 2017年12月13日 00時18分53秒
投稿ID: 3571 ガラパゴスタディー吉川さんの投稿
migi=migi+1を記述する場所を最初間違えてしまいました。(endifの後)
マクロ実行してすぐに気づきましたが・・・
ケアレスミスですが、こういう小さいミスが後々大変になるので、
ハコをきちんと意識したいと思いました。
この投稿には、1件の返信があります。  投稿日時: 2017年12月12日 02時12分35秒
投稿ID: 3566 ガラパゴスタディー吉川さんの投稿
変数が増えると、何を入れたいのかがわかりづらくなってくるので、
今回の問題のようなステップで、一旦”しそ巻き無料”のように文字をいれてある程度形にしてからのセルを指定した方が間違いにくいと思いました。


この投稿には、1件の返信があります。  投稿日時: 2017年12月08日 01時41分34秒
投稿ID: 3563 ガラパゴスタディー吉川さんの投稿
実際の書き方まで動画で解説しているので、
そちらがとても参考になりました。(マウスを使わないなど)
確かにもっと長いマクロを書くときは、この小さな作業の差が後々
大きな差になるので、とても大事だと思いました。
この投稿には、1件の返信があります。  投稿日時: 2017年12月07日 01時40分26秒
投稿ID: 3561 ガラパゴスタディー吉川さんの投稿
複数条件の場合、大きな箱とその中に入れる小さな箱の内容を並行して考えるより、最終的にどんな結果が欲しいかをキーにして考えることですっきりとマクロが書けることが改めてわかりました。
ハナコ、本当に大事ですね。
この投稿には、1件の返信があります。  投稿日時: 2017年12月05日 23時26分00秒
投稿ID: 3559 ガラパゴスタディー吉川さんの投稿
マクロから離れていたので、最初はちょっと思い出すのに時間がかかりましたが、手を動かすとすっと記述できました。
また演習問題の後に動画も視聴しました。
ハナコのステップは、なんとなくはそのステップでやっていましたが、
しっかりとそのステップを踏むことを意識することで、
頭の中で考えてから記述するより整理できると思いました。
投稿日時: 2017年12月05日 00時08分35秒
投稿ID: 3558 ガラパゴスタディー吉川さんの投稿
マクロから離れていたので、最初はちょっと思い出すのに時間がかかりましたが、手を動かすとすっと記述できました。
また演習問題の後に動画も視聴しました。
ハナコのステップは、なんとなくはそのステップでやっていましたが、
しっかりとそのステップを踏むことを意識することで、
頭の中で考えてから記述するより整理できると思いました。
この投稿には、1件の返信があります。  投稿日時: 2017年12月04日 22時43分41秒
投稿ID: 3531 受講生さんの投稿
一通りフォローアップを学んでみたあと、また動画1の課題から解説を見ないで取り組んでいます。

今回は「担当区域」を先に考えてやりました。以前に動画を見たときに、確か、migi=2 とか使ってたな、と思って進めていくと、途中で、自分の書き方だとmigi=1でないとうまくいかないと思ったり、あとから「業者名」「フリガナ」を入れたので、『"e" & migi』には1を足さないとダメだな、など、動かしながらやってると、特に意図もなく、1を足してみたり引いてみたりして、結果的に答えにはたどりついています。

例えば、E~G列は、2行目から始まるので、migi=2とするのが通常かなと思います。しかし、意図せず1を足したり引いたりして結果に結び付けばよいのでしょうか?自分が書いたあと、もう一度動画を見ると、自分のはなんだか不格好だなと思います。

初心者のうちは、このような形でもよいのでしょうか?

Sub ren()
Dim hida
Dim tiku
Dim migi
migi = 1
For hida = 2 To 27

If Range("a" & hida).Value <> Range("a" & hida - 1).Value Then
    Range("e" & migi + 1) = Range("a" & hida).Value
    Range("f" & migi + 1) = Range("b" & hida).Value
     tiku = Range("c" & hida) & "地区"
     migi = migi + 1
Else
   tiku = tiku & "," & Range("c" & hida).Value & "地区"
End If
Range("g" & migi).Value = tiku

Next

End Sub
この投稿には、1件の返信があります。  投稿日時: 2017年11月10日 09時08分55秒
投稿ID: 3528 受講生さんの投稿
その前の問題もそうですが、先生の動画を見る前に一度自分で書いてみると以下のようになってしまい、変数を効果的に使っていないことに気付きます。

書いたあとだと、Instr(range(~)など、同じようなものが出てくるし、変数を使った方がすっきりするな、と思うんですが、書いている途中だと変数の使い方がピンときませんでした。

慣れるしかないのかなと思いますが、最初のうちは、以下のように書いてしまってから、あとから、ここはこういう風に変数を使った方がいいな、とか考えていってもいいのでしょうか?よろしくお願いします。

「問題4」シート「Sheet2」で、C列にある住所の「区」または「市」までをF列に、それ以降をG列に書き込むマクロを作れ

Sub ren()

Dim gyo
For gyo = 2 To 11
If InStr(Range("c" & gyo).Value, "区") = 0 Then
    Range("f" & gyo).Value = Left(Range("c" & gyo).Value, InStr(Range("c" & gyo).Value, "市"))
Else
    Range("f" & gyo).Value = Left(Range("c" & gyo).Value, InStr(Range("c" & gyo).Value, "区"))
End If

Next

End Sub
この投稿には、1件の返信があります。  投稿日時: 2017年11月04日 20時47分02秒
投稿ID: 3514 受講生さんの投稿
解説の前半で、goukei=0 ・・・ goukei=goukei+1 とありますが、前半だけの話で完結した場合、最初の「goukei=0」は必要でしょうか?
たとえば、goukei=0 を書かなくても、goukei=0+1 ということになり、結果的には同じことにはなると思いますが。

後半では、goukeiを0にしておかないと一旦クリアにならないので必要だというのは分かりました。

よろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2017年10月18日 09時35分52秒
投稿ID: 3501 受講生さんの投稿
これまでの複合技!
・for next 構文で気をつけることは、データのはじめと終わりに
 自分の求める処理がされているか。
・失敗しながら何度もやってみる。
 成功者ほどたくさん失敗している!byドラッカー
この投稿には、1件の返信があります。  投稿日時: 2017年10月12日 07時02分55秒
投稿ID: 3500 受講生さんの投稿
1行にリストアップするポイントは
gyosha = gyosha & ","& Range("A"&gyo).value
のようにすると”A"&gyo の値が","で区切られたリストとなる。
投稿日時: 2017年10月12日 07時00分48秒
投稿ID: 3487 受講生さんの投稿
・上の行と下の行の値を比べることで番号を割り振ることができる。
この投稿には、1件の返信があります。  投稿日時: 2017年10月07日 04時01分04秒
投稿ID: 3477 受講生さんの投稿
いま仕事でこの機能をつかってデータ加工してます 全部はマクロ化するのは先になりますが部分的でも仕事の効率が違います ありがとうございました
この投稿には、1件の返信があります。  投稿日時: 2017年10月03日 21時39分09秒
投稿ID: 3476 受講生さんの投稿
投稿日時: 2017年10月03日 21時35分46秒
投稿ID: 3473 受講生さんの投稿
Instr関数
Left関数
Mid関数の復習になったが、いかに自分が理解していないかがわかった。
何度も見直すこと。

文字列を分割するときに、前のスラッシュと後のスラッシュをInstr関数であらわすが今回のポイント
Instr関数で見つけよう”/”を見つける。
この投稿には、1件の返信があります。  投稿日時: 2017年10月02日 21時38分39秒
投稿ID: 3471 横山 知明さんの投稿
発想がすごいです。マスターするのが必死で、質問できるところまでのレベルに
行っていないような気がします。それでも、仕事で使うときに、何も見ないで書けるものも出てきているので、とても嬉しいです。
この投稿には、1件の返信があります。  投稿日時: 2017年10月02日 02時46分00秒
投稿ID: 3457 受講生さんの投稿
・Instr関数は値が0かどうかで必要な文字列を検索し、その結果に応じた処理ができる。 
Instr関数の復習になった!
この投稿には、1件の返信があります。  投稿日時: 2017年09月27日 14時54分38秒
投稿ID: 3449 金子 伊智郎さんの投稿
小川さん お世話になっています。
時間を見つけてフォローアップを進めております。
問題[3]について列を移動していく際にどうしようか考えておりましたが
これまでの各動画のコメント欄でoffsetを使用している方がいらっしゃったので利用してみました。

Sub zangyo_syukei2()
    Dim gyo '行番号
    Dim col_num '列オフセット
    Dim target_month '該当月
    Dim saikou_name '最高値データの名前
    Dim saikou_month '最高値データの月
    Dim saikou_zangyo '最高値データの値
    Const retsu_start = "C" '開始列
    Const retsu_name = "B" '名前列
    Const month_gyo = "5" '月タイトル行
    
    '1月から6月まで列を移動しながらデータ走査
    For col_num = 0 To 5
        '該当月をセット
        target_month = Range(retsu_start & month_gyo).Offset(0, col_num).Value
        '行方向にデータ走査
        For gyo = 6 To 33
            If Range(retsu_start & gyo).Offset(0, col_num).Value > saikou_zangyo Then
                '最高値データが更新される毎に 名前、月、残業時間を更新
                saikou_name = Range(retsu_name & gyo).Value
                saikou_month = target_month
                saikou_zangyo = Range(retsu_start & gyo).Offset(0, col_num).Value
            End If
        Next
    Next
    
    Range("K4") = saikou_name
    Range("L4") = saikou_month
    Range("M4") = saikou_zangyo
End Sub
この投稿には、1件の返信があります。  投稿日時: 2017年09月25日 23時11分10秒
投稿ID: 3448 受講生さんの投稿
左の表と右の表の変数を作ることが基本
IDの一致は理解できた。
それをIF文で作る
この投稿には、1件の返信があります。  投稿日時: 2017年09月25日 02時31分54秒
投稿ID: 3447 横山 知明さんの投稿
VBEを矢印で動かすように意識してやってます。
質問です。
 シート→VBE
 VBE→シート間の移動は、
alt+Tabキー以外で、何かありますか?
この投稿には、1件の返信があります。  投稿日時: 2017年09月24日 15時31分54秒
投稿ID: 3442 横山 知明さんの投稿
if then
else
end if の箱をつくって、それをまた
if then
else
end if の箱に入れると、とても便利で実務で役立てられそうです。
この投稿には、1件の返信があります。  投稿日時: 2017年09月23日 06時38分30秒
投稿ID: 3432 受講生さんの投稿
・互いのセルの数値を比べ 条件に合うセルを kati=gyo とすることで選択範囲のセルに対して必要なセルを選び出すことができる。

・複数列について調べる際は、列ごとに比べ、条件に合うセルを残していくようにする。
この投稿には、1件の返信があります。  投稿日時: 2017年09月17日 18時15分48秒
投稿ID: 3431 受講生さんの投稿
動画4を基礎にして出現回数を金額に置き換える。
合計は、累計にならないようにループの初めに0をする。
この投稿には、1件の返信があります。  投稿日時: 2017年09月17日 17時26分04秒
投稿ID: 3428 ながのさんの投稿
文字列を見つけることがポイント
/や半角スペースを ”/”、" "で示すことで文字列を加工することができる。
いやぁ〜でも、変数がたくさん出てくるので、どの変数が何を意味しているのかを理解することが大事。
この投稿には、1件の返信があります。  投稿日時: 2017年09月17日 01時09分41秒
投稿ID: 3424 受講生さんの投稿
Instr関数を使って、見つけたい文字列がなければ”0”を返すのがポイント!
この投稿には、1件の返信があります。  投稿日時: 2017年09月13日 06時23分30秒
投稿ID: 3423 受講生さんの投稿
Left関数、Mid関数、Instr関数の復習になった。
どんどん書く練習をすすめるぞ!
この投稿には、1件の返信があります。  投稿日時: 2017年09月13日 06時05分25秒
投稿ID: 3412 受講生さんの投稿
・二つのデータを合わせるときは”&”でつける。
・データの規則性をみつけたら変数×3−2のように数式で表せるように考え
 てみる。←この思考が大切!
この投稿には、1件の返信があります。  投稿日時: 2017年09月10日 21時49分23秒
投稿ID: 3410 受講生さんの投稿
シート間をまたぐマクロを作る際は、
・めんどくさくても
・かったるくても
・なにがんでも
"シート名"を書くこと!
この投稿には、1件の返信があります。  投稿日時: 2017年09月09日 16時58分27秒
投稿ID: 3409 受講生さんの投稿
リストアップするには、
・変数を二つ作る
・右のスタートする場所を指定する
・左のリストアップする範囲を指定する
・If文で条件付けをして、条件に合うなら右の表に転記する。
 条件にあてはまらないならElseで次のデータを見に行く
・右のリストアップを順番にしていくためには、migi=migi+1!

めちゃくちゃシンプルでいて、かつ確実に動くマクロ!かっこいい!
この投稿には、1件の返信があります。  投稿日時: 2017年09月07日 06時53分40秒
投稿ID: 3401 受講生さんの投稿
変数がたくさん出てきて整理するのが大変だけど
学びがいがあります。

何度も見て、理解していきます。
どんどんかくぞ!
この投稿には、1件の返信があります。  投稿日時: 2017年09月06日 06時20分18秒
投稿ID: 3399 受講生さんの投稿
・Elseif 条件 then
 手打ちする中で理解が深まった。
 (同じものはコピペで行い、修正する)

・select case構文 すっきりしていて見栄えもいいね。ぜひマスターしたい!
この投稿には、1件の返信があります。  投稿日時: 2017年09月05日 06時33分00秒
投稿ID: 3398 受講生さんの投稿
・西暦に変更するには昭和なら+1925する
          平成なら+1988する
 と和暦を西暦に変更できる。(なるほど)

・男性女性を点数ごとに合否を分けるには
If文の中にIf文を作る。
 まずは何かしら動くマクロを求めたいところに書くところからスタート
この投稿には、1件の返信があります。  投稿日時: 2017年09月04日 15時13分57秒
投稿ID: 3397 受講生さんの投稿
for next 構文
if 文の練習をした。

めちゃくちゃ時間がかかったけど、声に出して練習することで
for next 構文の形が言えるようになってきた。

まずは、求めたい(答えを返したい)セルに入るマクロを書くところから
スタートだ。
この投稿には、1件の返信があります。  投稿日時: 2017年09月04日 00時34分51秒
投稿ID: 3384 受講生さんの投稿
小川先生

RANK関数とFor ~ Eachを使用して、ベスト4を一覧出力できました。
どうもありがとうございました。

>受講生 さん:
>
>基礎編でもできますけどね。
>
>発展編1の知識でいくなら、 worksheetfunction.rank 関数で各値の順位が分かるので、その値が 1-10 のときはなんたら、とすればオシマイ。
>
>基礎編でいくなら、まずは最大のものを求める。
>次にまた同じようなループをまわし、その最大値を超えない最大値を調べる。
>また次にまた同じようなループをまわし、その最大値を超えない最大値を調べる。
>...
>という具合です。
>
>
>> 小川先生、お世話になっております。
>> 下のコメント欄の4977で、「発展編1の知識があれば、ベスト10の出力は可能」とのことですが、方針すら思い浮かびません。
>> 何かヒントを頂けると助かります。
>
この投稿には、1件の返信があります。  投稿日時: 2017年08月29日 06時35分59秒
投稿ID: 3383 受講生さんの投稿
小川先生、お世話になっております。
下のコメント欄の4977で、「発展編1の知識があれば、ベスト10の出力は可能」とのことですが、方針すら思い浮かびません。
何かヒントを頂けると助かります。
この投稿には、1件の返信があります。  投稿日時: 2017年08月28日 20時21分45秒
投稿ID: 3368 浦山大さんの投稿
あら、↓のプログラムの…

for gyo = 4 to 9
以下のgoukei=0が一タブ多かったです。
自分で修正しておきます…。
投稿日時: 2017年08月23日 21時18分58秒
投稿ID: 3367 浦山大さんの投稿
久しぶりにコメントを記載します。

動画は18番まで閲覧致しました。
動画は止めながら一緒にマクロを作っています。
発想が貧困?
なので先に教えてもらって動きを掴む方が早いかなと思い、
フォームを教えてもらうつもりで拝見してから作業というステップにしています。

作業は11まで進めました。
動画時点で「そうなんだ」で全然動きが伴っていないので、
毎日1からやれる範囲まで通しで問題を解き続けています。
問題10までなら5回くらいずつ書いたと思います。

書く度に変化を感じています:
※必ず1行なんでもいいので書く→次に考えるが癖になった
※F8でテストしながら書く→1ステップずつ修正しながら拡大の意味が体得できた
※テストしている時に上手く動かないと感じたら何をしたいのかを紙に書いて、
自分が動かしたいことを文や図に起こすようになった(案外、出来ない時って図示や文にしようとしている自分自身があいまいなんですね)

途中経過でした。
9月半ばまでには25番くらいまでは書けるようになりたいと思います。

以下は一時間くらいかかって完成させた回答です。
まだ残り24個も成長する材料があると思うと、
自分がどこまで行ってしまうのか?楽しみです。
仕事で使えそうな問題も出てきました。引き続き宜しくお願いします。


Sub iwai()
    Dim goukei
    Dim soukei
    Dim gyo
    Dim migi
    For gyo = 4 To 9
            goukei = 0
        For migi = 4 To 10
            If Range("B" & gyo).Value = Range("I" & migi).Value Then
                goukei = goukei + Range("j" & migi).Value
            End If
        Next
        soukei = soukei + goukei
        Range("D" & gyo).Value = goukei
        Range("E" & gyo).Value = Range("c" & gyo).Value + goukei
    Next
    Range("D10").Value = soukei
    Range("E10").Value = Range("C10") + soukei
End Sub
この投稿には、1件の返信があります。  投稿日時: 2017年08月23日 21時14分50秒
投稿ID: 3358 浦山大さんの投稿
[1]は何とか○*3-2と○*3-1って思いつきました。
[2]は○*4-2は出来たのですが、そのあとが思いつかず…
模範解答を見たら「あら~…」でした。

規則性が捉えられなかったので悔しいです。
とりあえず、今日の朝11時頃から始めて、15時頃までかけて、
問1~7まで一通り模範解答通りのマクロが書けました。

繰り返しているとハナコのステップが体に落ちてくる感じがします。
何回も何回も繰り返して淀みなく作業出来るまで持っていきます。
途中経過でした。
この投稿には、1件の返信があります。  投稿日時: 2017年08月18日 01時13分02秒
投稿ID: 3357 浦山大さんの投稿
小川先生、質問です。
select caseのコードを作成しておりました。

Sub renshu()
   Dim gyo3
   For gyo3 = 2 To 11
        Select Case Range("D" & gyo3).Value
            Case Is >= 80
                Range("E" & gyo3).Value = "A判定です"
            Case Is >= 60
                Range("E" & gyo3).Value = "B判定です"
            Case Is >= 40
                Range("E" & gyo3).Value = "C判定です"
            Case Else
                Range("E" & gyo3).Value = "D判定です"
        End Select
   Next
End Sub

↑これは自分で何も見ないで作成できるようになりました。
動作も確認済みです。タブの位置も気にしながら作成しています。

以下、変数に纏めてすっきりさせられないかな、
と思って作成してみました。
しかし、値がExcelに入りませんでした。
F8を押すとエラーもなく最後まで動作はしているようです。


Sub renshu_error1()
   Dim hani
   Dim gyo2
   For gyo2 = 2 To 11
   hani = Range("E" & gyo2).Value
        Select Case Range("D" & gyo2).Value
            Case Is >= 80
                hani = "A判定です"
            Case Is >= 60
                hani = "B判定です"
            Case Is >= 40
                hani = "C判定です"
            Case Else
                hani = "D判定です"
        End Select
   Next
End Sub

変数にしないで実行をすれば通常通りに進みます。
Excelのバージョンは2007です。

質問ばかりで恐縮ですが、
以下のように書くと怒られました。
これは、変数gyo2の中身を指定してあげる前に、
gyo2を使用しようとしているから、
という感覚でいればよいでしょうか?


Sub renshu_error2()
   Dim hani
   Dim gyo2                                 'Range’メソッドは失敗しました’_Gloval’オブジェクト
   hani = Range("E" & gyo2).Value   'gyo2を指定する前にgyo2が出てるから?
   For gyo2 = 2 To 11
        Select Case Range("D" & gyo2).Value
            Case Is >= 80
                hani = "A判定です"
            Case Is >= 60
                hani = "B判定です"
            Case Is >= 40
                hani = "C判定です"
            Case Else
                hani = "D判定です"
        End Select
   Next
End Sub

いずれにせよ、
真似ができるようになったら先へ、先へ進めています。
大切なところは理解できるようになってきましたし、
先生の真似をしながら記載も出来るようになってきました。
感謝しています。
この投稿には、1件の返信があります。  投稿日時: 2017年08月17日 21時22分11秒
投稿ID: 3356 浦山大さんの投稿
小川先生

お世話になっております。
今日は時間が殆ど取れずな状態です。
たくさんコメントを書いてしまいましたが、
ご返信ありがとうございました。
一つ一つ、書いて頂いていることがとっても身になります。
自分で手を動かして、考えた結果に対してのフィードバックだからでしょう。

タブの位置まで見て頂けていることに、
とっても感激いたしました。

昨日、どうもハナコのステップの入れ方が曖昧なのかな?
と感じて、動画を数秒刻みで止めながら、
先生の方法を全く同じようにトレースしながら作成する方法を取ってみました。
自分で考えて書くのは勉強になりますが、
先生の作業をトレースする作業も並行していかないと、
もっとも大切な「基本(考え方)」が身に付かず、
我流に陥ってしまいそうです。

せっかく「動画」というツールで勉強させて頂いているので、
「先生の動きがトレースできる」という守破離の守の部分を肝に銘じて取り組みます。

あきらめずに続けます。
また都度扉をたたきます。
投稿日時: 2017年08月17日 01時42分44秒
投稿ID: 3352 浦山大さんの投稿
この問であれば淀みなく記載できるようになりました。
[1]書式も付けてみたかったので、自分なりに調べて動くマクロを作りました。
Sub jouken_hantei1()
        Dim k
        For k = 2 To 11
        If Range("c" & k).Value > 100 Then          'c2が100より大きかったら(条件)
             With Range("A" & k)
                .Value = "○"                                   'A2を「○」にする(処理)
                .Font.Name = "meiryo ui"
                .Font.Color = vbBlue
                .Font.Size = "15"
             End With
        Else
             With Range("A" & k)
                .Value = "×"                                   'A2を「×」にする(処理)
                .Font.Name = "meiryo ui"
                .Font.Color = vbRed
                .Font.Size = "15"
             End With
        End If
    Next
End Sub

with~はネットで調べました。
似た要領で、元に戻す方法もマクロを作ってみました。


Sub jouken_hantei1_sakujo()
    Dim k
    For k = 2 To 11
        With Range("A" & k)
            .Value = ""
            .Font.Name = "MS明朝"
            .Font.Color = vbBlack
            .Font.Size = "10"
        End With
    Next
End Sub

※元に戻す時に、「標準設定に戻す」って簡単に書けないか?
と感じました。

調べているとありそうですが、きっともっと先のことだろうと考えます。
今は基礎を固める時期かと思いますので、まず課題として与えられていることを吸収しに次に行きたいと思います。
この投稿には、1件の返信があります。  投稿日時: 2017年08月15日 21時22分18秒
投稿ID: 3347 浦山大さんの投稿
この部分については、
模範解答をちらっと1回見ただけでなんとか出来ました。

気づいたこと:
※問題毎に一つ一つ「はじめから」書いた方が練習になる
→途中、「ん?コピペして数字変えたら問題1→2は一瞬でできるな」って思いましたが、熟す数の方が大切かと思ったので全部呪文を唱えながら一から実施という流れに変えました。

このファイルを1回実施するだけで7つくらいマクロを書けました。

※「何もしない」はElse書かなくてもOK([2])
最初にチャレンジした際は「何もしないけどElse書くのか?」と思って記載したままマクロ書きました。
だけど、あとで「…なくても動くんじゃないか?」と思って試したらElseなくても動きました。
そして、動画を拝見したら省いてよしとのことでした。

多少前後感がありますが、
★問題見て困る→試行錯誤する→通勤時(帰宅時)に動画見る
→先生の解説聞いてあとから全部理解する
→明日、また同じ問題に取り組む

というスパイラルで進めていけそうです。
できれば、事前に次の動画まで見、
「軽く予習をする」を★部分に入れてスパイラル回せるようにしていきます。

※先日頂いたコメントの自分なりの添削、
やりますのでお待ち下さい。

総じて、取り組む前に作戦を考えることと、試行錯誤することが楽しいです。
この投稿には、1件の返信があります。  投稿日時: 2017年08月15日 06時08分03秒
投稿ID: 3344 受講生さんの投稿
【動画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
この投稿には、1件の返信があります。  投稿日時: 2017年08月14日 22時31分09秒
投稿ID: 3334 受講生さんの投稿
ForNext構文ですぐに変数(番号)を記入し、変数を可変しながら番号をふるマクロを考えてみました。動画のようにテストを実施しながら作成しました。
動画の見本と異なるのは、1つ下の行と比べて同じか違うかによってわりふる数字を変える点です。


'問題[1]
Sub warifuribangou()
    Dim id
    Dim gyo
    id = 1
    For gyo = 4 To 19
        Range("B" & gyo).Value = id
        If Range("C" & gyo).Value <> Range("C" & gyo + 1).Value Then
            id = id + 1
        End If
    Next gyo
End Sub

'問題[2]
Sub nantoka()
    Dim id
    Dim gt
    Dim gyo
    id = 1
    gt = 1
    For gyo = 4 To 19
        Range("B" & gyo).Value = id
        Range("C" & gyo).Value = gt
        gt = gt + 1
        If Range("D" & gyo).Value <> Range("D" & gyo + 1).Value Then
            id = id + 1
            gt = 1
        End If
    Next gyo
End Sub
この投稿には、1件の返信があります。  投稿日時: 2017年08月13日 04時35分42秒
投稿ID: 3242 受講生さんの投稿
小川先生

添削と返信ありがとうございました。
(コメント:8489)
インデントも気をつけたいと思います。
この投稿には、1件の返信があります。  投稿日時: 2017年07月04日 07時16分38秒
投稿ID: 3228 受講生さんの投稿
初期化(tiku = "")のタイミングですが少し早い部分に書いてみました。
問題ありませんでしょうか。
発展編で出てくるDebug.Printでtikuの中身の様子も確認済です。

 
Sub Createlist01()
    Dim hida
    Dim migi
    Dim tiku
    migi = 2
    For hida = 2 To 27
        If Range("A" & hida - 1).Value <> Range("A" & hida).Value Then
            Range("E" & migi).Value = Range("A" & hida).Value
            Range("F" & migi).Value = Range("B" & hida).Value
            If migi > 2 Then
                Range("G" & migi - 1).Value = Mid(tiku, 2)
                
                Debug.Print tiku
                tiku = "" '[※]
                Debug.Print tiku
            
            End If
            migi = migi + 1
        End If
    tiku = tiku & "," & Range("C" & hida).Value & "地区"
    Next
    Range("G" & migi - 1).Value = Mid(tiku, 2)
End Sub
この投稿には、1件の返信があります。  投稿日時: 2017年06月30日 15時06分33秒
投稿ID: 3200 受講生さんの投稿
お世話になります。
現在、エクセルマクロ・VBA基礎編フォローアップ を学習していますが、6月末でキャンペーン終了ということなので、不安すぎて、まだ基礎編フォローアップに苦戦しながらも、先走り発展編1を購入しましたが、いつになれば取り掛かれるのかわかりません。
でも、少しずつでは、ありますが毎日学習を進めていっています。
現在、基礎編フォローアップ動画18の問題2で戸惑っています。
問題1は理解できたのですが、IF文の中のtiku=””の意味が、まったく理解できずに、マクロを書くことができません。
何度も間違っても、うまくいきません。
この投稿には、7件の返信があります。  投稿日時: 2017年06月24日 03時30分20秒
投稿ID: 3176 受講生さんの投稿
お世話になります。
下記の記載したprogramと回答のプログラムが、違うことによって不都合が生じることになるのでしょうか?
下記に記載したプロフラムはループの後に出力先を記載せずに、IF文後に
記載しています。実行した場合、回答と同じ値が導いていますが、回答のように、ループ後の出力先を記載することが、いいのでしょうか。
記載したprogramのgoukei の場合は、最終のループ後に記載しています。
そのあたりのことについて、わかりませんでしたので、宜しくお願いします。


[code]Sub rensyu1()
Dim goukei
Dim gyo
Dim migi
Dim hida
Dim syoukei
For gyo = 4 To 9
syoukei = 0
For migi = 4 To 10
If Range("I" & migi).Value = Range("B" & gyo).Value Then
syoukei = syoukei + Range("J" & migi).Value
goukei = goukei + Range("J" & migi).Value
End If
Range("D" & gyo).Value = syoukei
Range("E" & gyo).Value = Range("C" & gyo).Value + syoukei
Next
Next
Range("D10").Value = goukei
Range("E10").Value = Range("C10").Value + goukei
End Sub[/code]
この投稿には、1件の返信があります。  投稿日時: 2017年06月14日 06時45分01秒
投稿ID: 3070 受講生さんの投稿
Sub nantoka()
Dim goukei
Dim gyo
Dim migi

For migi = 4 To 6
goukei = 0
For gyo = 4 To 18
If Range("C" & gyo).Value = Range("E" & migi) Then
goukei = goukei + 1

End If
Next
Range("F" & migi).Value = goukei
Next
End Sub

お世話になります。
Range("F" & migi).Value = goukei
のプログラムを書くときに、
NextとNextの間に書くことが、
自力で書くときに迷います。
homeshift↓↓↓で選択するとき
最初のForNext構文が完成させたときに、
出力先を書くことで、別物と判断している
みたいで、ワンポイントアドバイス
よろしくおねがいします。
この投稿には、3件の返信があります。  投稿日時: 2017年05月22日 22時37分42秒
投稿ID: 3055 受講生さんの投稿
[3]
[2]で作ったマクロを改変し、さらに、セルD10、セルE10に各列の合計額を記入するマクロとしなさい についてセルD10 にD4からD9の合計額を表示するというマクロを作る場合にはどのような式で書くことができますか?
[1][2]については以下のようなマクロで問題なく動いたのですが、D列の値をそれぞれの項目について値を入れていくというマクロ(累積値ではなく)になったので、合計のマクロが作れませんでした。Range("D10").value=Sum(”D4:D9”).valueというのも試しましたが、15100という値のみ入りました。アドバイスいただければ幸いです。

Sub test()
 Dim harai
 For harai = 4 To 9
 Dim koumoku
 koumoku = Range("B" & harai).Value
 Dim iwai
 iwai = Range("D" & harai).Value
 Dim retsu
 For retsu = 4 To 10
    If Range("I" & retsu).Value = koumoku Then
    iwai = iwai + Range("J" & retsu).Value
    End If
  Next
  Range("D" & harai).Value = iwai
  Range("E" & harai).Value = Range("D" & harai).Value + Range("C" & harai).Value
  Next
  
End Sub
この投稿には、1件の返信があります。  投稿日時: 2017年05月14日 17時41分52秒
投稿ID: 3027 柴田 邦彦さんの投稿
基礎コースフォローアップを受講中です。

[受講方法]
1.動画を見る前に、自力で課題(ドリル)にチャレンジしてみる。
2.動画を見る
3.小川先生のロジックと自分のロジックを比較する。
4.再度、小川先生のロジックでマクロを作成する。
時間は要しますが。上記の4ステップで学習しております

[質問]
一般的にマクロに正解はないと言われますが…
自力で作成したマクロがスマートにできてるかどうかは別として、
マクロの結果が同じであるならば、小川先生の解答と同じでなくても気にする必要ないのでしょうか?
それとも、結果が同じであっても、ロジックの考え方を改めるべきでしょうか?

[質問の意図]
与えられた課題ならば、実際に小川先生のロジックでマクロを組む方が、正解だと考えます。
しかしながら、実際に業務でマクロを自力で作成する場合は、細かく結果を見ながら試行錯誤をして作りあげていくことになり、解答があるわけではありません。(誰かに善し悪しを指導してもらえるわけでもない)
よって、必ずしも、スマートで誰が見ても分かりやすいマクロになるとは限りませんし、結果(ゴール)オーライでマクロを作ることになります。
この投稿には、1件の返信があります。  投稿日時: 2017年05月04日 01時01分32秒
投稿ID: 3019 受講生さんの投稿
小川様
お世話になります。
マクロの質問ではないのですが、動画10分ころにif文を使って確認する場面がありますが、if文をコピーした後Ctrl+↓ だと、最終行まで選択されてしまうと思うのですが、190行までしかコピペされていません。いったいどうやったのですか。それとも最終行までコピペされたのをなにかショートカットで消しているのですか。細かい質問ですみません。
この投稿には、1件の返信があります。  投稿日時: 2017年04月25日 14時21分01秒
投稿ID: 3013 斉藤 隆仁さんの投稿
お世話になります。

もしかしたら多くの方から同じような
質問が来ているかもしれませんが、講座の効果的な
復習の仕方を教えて頂きたく存じます。

学んだ内容がすぐに頭から抜けてしまう
事が多いので何かいい方法がございましたら
ご教授頂きたく存じます。

この投稿には、1件の返信があります。  投稿日時: 2017年04月22日 21時08分26秒
投稿ID: 2984 斉藤 隆仁さんの投稿
お世話になっております。

今回の動画の表の見方につきまして
根本的なところを教えて下さい。

右の表から"結婚祝い"の合計金額15,000円を
左の表に転記するのは間違っていないと思うのですが、
次の行の"出産祝い"の合計金額を右の表から取ってくるならば
I列に2回出現するので金額は10,000円になるのではないかと思っています。

そうすると左の表においては
"出産祝い"の行の今月の支払額の値は30,000ではなく
10,000が入ると思うのですが、私が見方を間違えておりますでしょうか?

ご教授頂ければ幸いです。
宜しくお願い致します。

投稿日時: 2017年04月15日 23時49分02秒
投稿ID: 2881 新見陽子さんの投稿
問題[2]で、>0を入れずに以下のように作成しても、マクロが実行されたのですが、なぜでしょうか?
マクロが気を利かせてくれたのでしょうか?これでも不都合はないですか?

Sub miyakojima()
    Dim gyo
    For gyo = 2 To 22
        If InStr(Range("B" & gyo).Value, "都島") Then
            Range("J" & gyo).Value = "都島グループです"
        End If
    Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2017年03月01日 01時04分47秒
投稿ID: 2821 受講生さんの投稿
小川先生

コメント有難うございます。
「英単語1語の言葉」の選択には、要注意ですね。

「ハンガリアン記法」の動画を見直してみたいと思います。
この投稿には、1件の返信があります。  投稿日時: 2017年02月09日 16時05分36秒
投稿ID: 2811 受講生さんの投稿
小川先生

最大値が複数存在した場合についてのコードを投稿します。
よろしくお願いします。

【課題を以下の通り、設定しています。】
 問題[1] 一番得点の高い人が複数いた場合でも抽出可能にする
 問題[2] 残業時間が一番多い人が複数いた場合でも抽出可能にする
 問題[3] 残業時間が一番多い人が複数いた場合でも抽出可能にする


'**************************************************************
'問題[1] 一番得点の高い人が複数いた場合でも抽出可能にする
'**************************************************************

Sub katinuki()
    
    Dim gyou As Long
    Dim kati As Long
    
    '処理1
    kati = 2
    For gyou = 2 To 11
        If Range("G" & kati).Value < Range("G" & gyou).Value Then
            kati = gyou
        End If
    Next gyou
'    Range("J" & kati).Value = "最高点です" '←不要かも

    '処理2
    For gyou = 2 To 11
        If Range("G" & kati).Value = Range("G" & gyou).Value Then
            Range("J" & gyou).Value = "最高点です"
        End If
    Next gyou
End Sub

'**************************************************************
'問題[2] 残業時間が一番多い人が複数いた場合でも抽出可能にする
'**************************************************************

Sub kati2()

    Dim gyou As Long
    Dim Migi As Long
    Dim kati As Long
    
    '処理1
    kati = 6
    Migi = 4
    For gyou = 6 To 33
        If Range("C" & kati).Value < Range("C" & gyou).Value Then
            kati = gyou
        End If
    Next gyou
'    Range("K" & Migi).Value = Range("B" & kati).Value '←不要かも
'    Range("L" & Migi).Value = Range("C" & "5").Value  '←不要かも
'    Range("M" & Migi).Value = Range("C" & kati).Value  '←不要かも
   
    '処理2
    For gyou = 6 To 33
        If Range("C" & kati).Value = Range("C" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("C" & "5").Value
            Range("M" & Migi).Value = Range("C" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou
End Sub

'**************************************************************
'問題[3] 残業時間が一番多い人が複数いた場合でも抽出可能にする
'**************************************************************

Sub kati3()
    
    Dim gyou
    Dim Migi As Long '追加
    Dim kati
    Dim retu
    Migi = 4 '追加
    
    retu = "C"
    kati = 6
    
    '処理1
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("C" & gyou).Value Then
            retu = "D"
            kati = gyou
        End If
    Next gyou
    
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("D" & gyou).Value Then
            retu = "D"
            kati = gyou
        End If
    Next gyou
    
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("E" & gyou).Value Then
            retu = "E"
            kati = gyou
        End If
    Next gyou
    
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("F" & gyou).Value Then
            retu = "F"
            kati = gyou
        End If
    Next gyou
    
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("G" & gyou).Value Then
            retu = "G"
            kati = gyou
        End If
    Next gyou
    
    For gyou = 6 To 33
        If Range(retu & kati).Value < Range("H" & gyou).Value Then
            retu = "H"
            kati = gyou
        End If
    Next gyou
    
'    Range("K" & Migi).Value = Range("B" & kati).Value '←不要かも
'    Range("L" & Migi).Value = Range(retu & "5").Value '←不要かも
'    Range("M" & Migi).Value = Range(retu & kati).Value '←不要かも
    
    '処理2
    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("C" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("C" & "5").Value
            Range("M" & Migi).Value = Range("C" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou

    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("D" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("D" & "5").Value
            Range("M" & Migi).Value = Range("D" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou

    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("E" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("E" & "5").Value
            Range("M" & Migi).Value = Range("E" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou

    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("F" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("F" & "5").Value
            Range("M" & Migi).Value = Range("F" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou

    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("G" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("G" & "5").Value
            Range("M" & Migi).Value = Range("G" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou

    For gyou = 6 To 33
        If Range(retu & kati).Value = Range("H" & gyou).Value Then
            Range("K" & Migi).Value = Range("B" & gyou).Value
            Range("L" & Migi).Value = Range("H" & "5").Value
            Range("M" & Migi).Value = Range("H" & gyou).Value
            Migi = Migi + 1
        End If
    Next gyou
End Sub
この投稿には、5件の返信があります。  投稿日時: 2017年02月05日 23時09分18秒
投稿ID: 2803 新見陽子さんの投稿
はじめまして。2017年12月からこちらでマクロを勉強し始めました。
フォローアップでは、まず自分でマクロを作ってみてから答えや動画を見ています。
今回、自分で書いたマクロでは数列は使ってなかった(2015年2月5日の匿名さんと、そっくりのマクロでした)のですが、
動画では数列を使っていました。この式で数値がこう変わる、って結果はわかるのですが、自分でこの式を導き出す術がわかりません。
中学レベルの数列すら全く理解していないので、別サイトで数列の勉強からし直そうとしてみたのですが、
等差数列とかますます理解できなくなり絶望的になっています。
こんなことでは便利なマクロが作れるようにはなれそうにもない、と意気消沈。
やっぱり数列を理解できないと、先々発展できないでしょうか?
この投稿には、6件の返信があります。  投稿日時: 2017年01月30日 22時04分53秒
投稿ID: 2754 受講生さんの投稿
身についていました!
投稿日時: 2016年12月22日 02時31分50秒
投稿ID: 2744 受講生さんの投稿
if、elseを使って問題を解いてみました。
変数はfor next 構文の外で設定していれば、構文の下のコードには反映されないと勝手に思っていたのですが、
nextの下にコードを書いても、変数リセットの指示を小人ちゃんに出さなければ元に戻らないんですね!
Sub rensyu2()    
    Dim ban
    Dim gyo
    Dim cno
    ban = 0
    cno = 1
    For gyo = 4 To 19
        If Range("D" & gyo).Value <> Range("D" & gyo - 1).Value Then
            ban = ban + 1
            cno = 1
        Else
        cno = cno + 1
        End If
        Range("B" & gyo).Value = ban
        Range("C" & gyo).Value = cno
    Next
        
End Sub
この投稿には、1件の返信があります。  投稿日時: 2016年12月16日 22時08分20秒
投稿ID: 2742 受講生さんの投稿
お世話になっております。一つこの例題について伺いたいことがあります。
もし、キャンペーン応募が同じ人から複数件あったとして、左の表の同じセルに「、」を打って複数件足していくような場合を想定して下記のようなコードを書きました。
しかし、F5で実行を押すたびに左の票の数が足されていってしまいます。修正箇所としてどの点を直せばよろしいでしょうか。
ご教授宜しくお願い致します。
Sub sakusei()
    Dim hida
    Dim migi
    Dim goukei

    For migi = 11 To 23

        For hida = 4 To 29
        goukei = Range("C" & hida).Value
               
            If Range("E" & migi).Value = Range("A" & hida).Value Then
             goukei = goukei & "," & Range("F" & migi).Value
            End If
        Range("C" & hida) = goukei
        Next
    Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2016年12月16日 01時58分29秒
投稿ID: 2741 受講生さんの投稿
投稿文中の[code] ... [/code]の数や位置関係が合いません。
以下の投稿では、コードのハイライト表示はされません。

お世話になっています。一つ聞きたいことがあります。
下記のように、 Range("D" & hida).Value = goukeiをfor next (migi)の構文内で実行すると、今月支払いのない成人祝いの欄は「空白」で表示されます。
構文外にこの式を置くと「0」と表示されるのですが、構文内に置くとなぜ「空白」になってしまうのでしょうか。
[code]Sub rensyu3()
Dim goukei
Dim migi
Dim hida
For hida = 4 To 9
goukei = 0
For migi = 4 To 10

If Range("I" & migi).Value = Range("B" & hida).Value Then
goukei = goukei + Range("J" & migi).Value
Range("D" & hida).Value = goukei
End If
Next
Next
End Sub[/code
この投稿には、3件の返信があります。  投稿日時: 2016年12月15日 20時11分20秒
投稿ID: 2658 受講生さんの投稿
小川先生
お世話になっております。
単純ですが、シートにある勘定科目毎に伝票を集計し、合計を別シートのP/Lに書き出すマクロです。
1万行以上と金額が億単位だったので、マクロを動かしたら、ものすごくPCのスピードが落ちたので、
何10分まったら終わるのかとおもい途中でやめました。こういう場合はSUMIF関数の方がよいのでしょうか。
ちなみにPCのスペックは問題ありません。宜しくお願いします。
 Option Explicit
Sub hoge()
    Dim gyo As Long
    Dim goukei As Currency
    Dim kubun As Long
    For kubun = 12 To 226
        goukei = 0
        For gyo = 2 To 11419
            If Worksheets("4月 (2)").Range("C" & kubun).Value = Worksheets("Sheet1 (2)").Range("K" & gyo).Value Then
                goukei = goukei + Worksheets("Sheet1 (2)").Range("AE" & gyo).Value
            End If
                Worksheets("4月 (2)").Range("E" & kubun).Value = goukei
        Next
    Next
    
End Sub
この投稿には、1件の返信があります。  投稿日時: 2016年11月06日 21時02分44秒
投稿ID: 2549 ゲストさんの投稿
残業時間が最大な人が複数いた時に該当者、全て抽出する方法は?
この投稿には、2件の返信があります。  投稿日時: 2016年09月08日 05時05分40秒
投稿ID: 2397 ゲストさんの投稿

先刻 「音声が聞き取れないと」送信しましたが 私の不注意が原因でした。大変お騒がせして申し訳ありませんでした。
投稿日時: 2016年06月02日 05時56分33秒
投稿ID: 2396 ゲストさんの投稿
動画その18の音声が小さくて聞き取れなのですが、大きくならないのでしょうか?
この投稿には、1件の返信があります。  投稿日時: 2016年06月02日 02時11分08秒
投稿ID: 2293 受講生さんの投稿
基礎編フォローアップの16課まで何とかついてきましたが、このあたりで頭がフリーズしてしまいました。ほかの受講生さんの投稿を読むとあまりに高度なレベルなので 恥ずかしいです。初歩的な質問があるので 教えてください。

Sub nanntoka furi()
       Dim gyousha
       Dim furi
       Dim gyo
       For gyo=2 to 11
             gyosha=gyosha & "," & Range("A" & gyo). Value
             ,,,,,,,,
             ,,,,,,,,,,
End Sub
 
のなかで、 なぜ  gyosha=の次にgyosha & 、、、、 と続くのかわからいのです。gyoshaの変数の定義が上方に書いてあるわけでないし、=の右側に書かれたgyoshaをどう解釈したらよいのでしょうか? 幼稚な質問ですみません。教えてください。
この投稿には、5件の返信があります。  投稿日時: 2016年04月16日 08時33分38秒
投稿ID: 2284 受講生さんの投稿
小川様

お世話になります。
誤ってマクロを動かしてしまって、それをもとに戻すシーンがありますが、ショートカットを使って素早く元に戻しているのは、動画の右上にでてくるキー表示をみてわかりました。
しかし、あまりにも素早くて、マネしようと思っても、押すキーが間違っているのか、動画のようにうまくいきませんでした。
別の動画で解説しているとのことでしたが、見つけられませんでした。
お手数ですが、手順ならびに使っているショートカットキーを教えていただきますか。
わたしもよく間違ったマクロを実行して、失敗することが多いのですが、すぐに修復できれば、非常に助かります。
よろしくお願いいたします。
この投稿には、3件の返信があります。  投稿日時: 2016年04月13日 14時26分25秒
投稿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,,,,,の文と引き離されてしまっているように思います。
なにか書き方にルールがあるのでしょうか? こういう微妙なところがわかりません おしえてください

ペンネーム:ぺる
この投稿には、3件の返信があります。  投稿日時: 2016年04月11日 06時57分20秒
投稿ID: 2252 沖津さんの投稿
小川先生
すみません・・個人用のメモに入れるつもりがこちらに投稿してしまいました。
失礼しましたm(__)m
投稿日時: 2016年04月09日 09時44分23秒
投稿ID: 2251 沖津さんの投稿
2016/4/8 2回目完了!2回目を自力でやったが、解答とは違うやり方でも動いた。(else にgt=gt+1を入れる方法)
投稿日時: 2016年04月09日 09時33分44秒
投稿ID: 2239 受講生さんの投稿
お世話になります。
先程の列のループの質問の続きです。
retuを変数にしてとりあえずL列M列 二つの条件を満たした合計がだせました。
2列くらいならいいですが 10列超えると下記では辛いです^^;
もっと簡素な構文もあるかと思いましたが
出来たところまでです。
値は思った通りの数が出ましたが 構文として どうなんでしょうか?
Sub syuukei3()
Dim goukei
Dim retu
Dim hida
Dim migi
For migi = 3 To 9
retu = "L"
goukei = 0
For hida = 3 To 13
If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("L2").Value Then
goukei = goukei + Range("F" & hida).Value
End If
Range(retu & migi).Value = goukei
Next
Next

For MIGI = 3 To 9
retu = "M"
goukei = 0
For hida = 3 To 13
If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("M2").Value Then
goukei = goukei + Range("F" & hida).Value
End If
Range(retu & migi).Value = goukei
Next
Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2016年04月04日 11時26分52秒
投稿ID: 2234 受講生さんの投稿
お世話になります。
現場では SUMIFS関数を使用する機会が多く 
動画のSUMIF関数をマクロで・・を参考にもう一つの条件をANDで追加してみました。
しかし、ANDで指定している”L2”ひとつの時は下記のマクロでOKですが
L2~CX2 まであると どうしていいのかわかりません。
列を行(hida) みたいに 変数にできないでしょうか。Coulmns指定??・・基礎マクロ範囲であれば教えてください。

表(hida)データ表
↓が集計表(migi)となり 品名と各列(F-1.F-2・・)二つの条件が合致するもののみ goukeiする。

K列  L列 M列 N列・・・CX列
1 (1行目空白)
2 品名 F-1 F-2 F-3.・・・
3 AA/1 500
4 AA/2 200
5 BB/1  0
6 CC/1 500

Sub syuukei()  ’”品名”AND”L2”の2つの条件を満たしている時だけ goukei する
Dim goukeI
Dim hida
Dim migi
For migi= 3 To 6 ’現場では 30行くらいある
goukei = 0
For hida = 3 To 13
If Range("E" & hida).Value = Range("K" & migi).Value And Range("H" & hida).Value = Range("L2").Value Then
goukei = goukei + Range("F" & hida).Value
End If
Range("L" & migi).Value = goukei
Next
Next
End Sub

SUMIFS関数式を埋め込むと以下になりますが
これもL~CXまで書くのは少しナンセンスかと・・

Sub keisan()
Dim gyo
For gyo = 3 To 6
'実際は50列位あるのでこの書き方は面倒
Range("L" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("M" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("N" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("O" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("P" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("Q" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("R" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("S" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Range("T" & gyo).FormulaR1C1 = "=SUMIFS(C6,C5,RC11,C8,R2C)"
Next

End Sub
この投稿には、1件の返信があります。  投稿日時: 2016年04月03日 23時56分04秒
投稿ID: 2170 受講生さんの投稿
動画をみて感じたのは
まさに今回私が作ったプロセスそのものだったので、こうやって試行錯誤していけば
いいんだな、ということです。
私もまず何かが目標セルに入るところから始まり、少しずつ修正していきました。
午前中あげたものも、どうしてこれならうまくいくのかよくわからないけど
結果をみるとうまくいった!みたいな感じでした。
(つまり、いろいろ分かっておりません(笑))
要求度の高い問題なので、繰り返し挑戦して、覚えていきたいと思いました。

午前中UPしたコードには無駄な行がありましたので、修正を加え、私の完成形は
以下のようになりました。
先生のと少し違うのですが、結果はうまくいっているのでいいのかな(*´∀`*)

A列が重複データでないときは、左のリストは1行下に記述され、
重複データのときは、左のリストは変数kuikiに追加格納されていく
という方法です。

Sub rensyu032904()
                    '第18問の[2]解答 K列含む
    Dim gyo         '元データ行位置
    Dim gyosya      '作成リストの行位置
    gyosya = 1
    Dim kuiki          '区域を格納する変数
    For gyo = 2 To 27
       
        If Range("A" & gyo - 1).Value = Range("A" & gyo).Value Then
            kuiki = kuiki & "," & Range("C" & gyo).Value & "地区"
            Range("G" & gyosya).Value = kuiki
           
        ElseIf Range("A" & gyo - 1).Value <> Range("A" & gyo).Value Then
            gyosya = gyosya + 1
            Range("E" & gyosya).Value = Range("A" & gyo).Value
            Range("F" & gyosya).Value = Range("B" & gyo).Value
            kuiki = Range("C" & gyo).Value & "地区"
            Range("G" & gyosya).Value = kuiki
        End If
    Next  
End Sub
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月30日 08時37分29秒
投稿ID: 2166 受講生さんの投稿
まだ動画をみておりません。とりあえずE,F列のみのマクロです。
K列は模索中です。考える訓練に、もう少し自分で考えてみます。
明日の大事な要件のため、今日はこれまでにします。
またよろしくお願い致します。

Sub rensyu0328018()
                    '第18問の[2]解答,I,J列のみ
    Dim gyo         '元データ行位置
    Dim gyosya      '作成リストの行位置
    gyosya = 2
    For gyo = 2 To 27
        If gyo = 2 Then
            Range("E" & gyosya).Value = Range("A2").Value
            Range("F" & gyosya).Value = Range("B2").Value
            gyosya = gyosya + 1
            
        ElseIf Range("A" & gyo - 1).Value <> Range("A" & gyo).Value Then
            Range("E" & gyosya).Value = Range("A" & gyo).Value
            Range("F" & gyosya).Value = Range("B" & gyo).Value
            gyosya = gyosya + 1
        End If
    Next
End Sub
by gooska
この投稿には、2件の返信があります。  投稿日時: 2016年03月29日 09時47分17秒
投稿ID: 2165 受講生さんの投稿
MIDですっきり解決するほうが分かりやすいけれど、やっぱり
IF構文で最初に分岐処理する方法も覚えたいと思って、
動画をもう一度みたんです。

For gyo = 2 To 11
        If gyo = 2 Then     
        Else
なんとIFの条件分岐には、こういう指定もできるんですね!
今まで対象セルでの条件で分岐という使い方しか知らなかったので、
ループの中で「カウントが何回目のときだけは、これをしなさい」
という使い方。これも目からウロコでした。

このヒントから、gyo=2 then 以下を作ろうと思い
動画を止めてやってみたんですが、できませんでした(;´・ω・)
正解に納得。まだまだ理解不十分。
ForNext構文の最初でも最後でもできるようになりたいです!

後半の重複処理については前回の復習でもあるので、一発正解(^▽^)/

メーリングリストのためのcsvですか!
なるほど、使い道はいろいろあるのですね。
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月28日 20時19分00秒
投稿ID: 2161 海上 美弥子さんの投稿
リストからcsv形式のデータを作るマクロですね。
実務ではcsvをAccessやExcelに取り込んだり吐き出したりしていたので
これができるとなれば実務直結ですから興味津々です。
しそ巻きカウントの応用で、数値加算のところを文字列の追加という形で
できるのかなと最初の道筋はつきましたが、まだまだ理解が浅いらしく、動かしてみると
ラストの2文字列しか残っていなくて、形になるまで結構苦労しました。
ようやくできた!と思ったのが、動画で先生が始めに作られた
「ちょっと惜しい形ですね」と同じもの。つまり、先頭がカンマでした(笑)
なんとかしようといろいろ試したのですが、どうしてもダメで(´;ω;`)ウゥゥ
ギブアップして動画を見にきました。

なんと、ここでMIDやLENを使うとは!?まさに目から鱗状態(+_+)
出だしだけの例外処置として、先頭か末尾を単純操作するわけですね。

変数は初期設定されていない限り、値が代入されるまではempty(0)である
ということを確認させてくれる問題でした。
しそ巻きカウントや条件つき加算の場合なら、初期値が0でも結果に影響することは
ないのですが、今回のように文字列をカンマでつなぐ場合は、数値が代入される前にカンマが
入ってしまうので、empty時の変数の存在をいやでも意識させられます。
今まで気がつかなかった大事な点なので、とても勉強になります。

そして、この出だしの変数empty時の動きが最終的に求めたい結果の例外に
なってしまうことがあるから、出だしだけ条件分岐したり、最後に文字列の加工などを
することが発生すると。今後のために、ここは覚えておこうと思いました。
結論・・・・まだまだです(笑)
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月28日 00時27分30秒
投稿ID: 2159 受講生さんの投稿
投稿文中の[code] ... [/code]の数や位置関係が合いません。
以下の投稿では、コードのハイライト表示はされません。

やり方が分かれば[1]が解けましたので、
それを動画で確認してから[2]も考えてみました。
なんと動画を見ないで解けました(≧▽≦)
B列とC列で数字の動きは違うけれども、
判別条件はまったく同じなので、まとめてできないかなと。
変数+1を入れる位置がちょっと自信ありませんが
[/code]
Sub rensyu032701()
Dim gyo
Dim BF
Dim CF
BF = 0
CF = 0

For gyo = 4 To 19
If Range("D" & gyo).Value <> Range("d" & gyo - 1).Value Then
BF = BF + 1
CF = 1
Else
CF = CF + 1
End If
Range("B" & gyo).Value = BF
Range("C" & gyo).Value = CF
Next
End Sub
[/code]
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月27日 13時48分39秒
投稿ID: 2158 受講生さんの投稿
先輩ユーザ様のコメントにもありますように、私も最初は
「資料Aなら1、資料Bなら2、そうでないなら3」
という分岐処理で回した解答を作りました。
資料の名前に規則性がないとか、順番がバラバラだった場合なら
それでよかったかもしれませんね。
しかしデータのボリュームや資料の種類が多かったら、やはり
規則性に注目して書かないと大変なことになります。

ワークシート関数で、リストから重複データを探すために
前後の行を比較する方法を使っている表を見たことがあって、
今回それを思い出しました。
VBAで同じことができるわけですね。なるほど。φ(..)メモメモ

考え方は大体わかったので、模範解答は伏せて
自分でも同じように書けるかどうか試してみます。
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月27日 12時29分31秒
投稿ID: 2157 受講生さんの投稿
[1]問については、今まで何度も教わった内容なので、
じっくり小さなステップを積み上げていけばちゃんと解けました。
元データや区切り文字位置をどんどん変数に置き換えていけば、
式も分かりやすくなるし、ミスにも気がつきやすく、すっきりしますよね。

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

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

ただF列のように、分岐処理をする場合の変数の扱いにはまだ慣れていません。
この場合のtekkinは「鉄筋コンクリート」、そうでないときは「鉄骨鉄筋コンクリート」を
代入しなさいと命じて、分岐処理をしても同じ変数を使って1行で済んでしまうという
スマートさあたりが理解不十分みたいです。
私の記憶では、このような変数の使い方はこれで2回目です。
ちゃんと理解して使いこなせたら便利なので、今後の課題にします(^▽^)
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月27日 10時59分20秒
投稿ID: 2156 受講生さんの投稿
文字列操作、条件検索による抽出は、
もともとAccessでそういう仕事をしていたし、得意分野なんです(≧▽≦)
今回は楽勝でした(≧▽≦)

like演算子は、Accessのクエリでよく使いますね。
実はAccessの基本的クエリなら、SQL構文で直接書くことまではできるので、
AccessのVBAも使えるようになれたら・・・というのが中期的目標なんです。
Exce lVBAでもlike使えるのですか?
後日の課題に、楽しみにとっておきます(≧▽≦)
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月27日 09時09分34秒
投稿ID: 2155 受講生さんの投稿
今回は自力で解けました。(*^▽^*) 考え方は既出問題と同じなので、
復習と理解度の確認になりました。
過去のコメントもできるだけ参考にしています。先輩ユーザーの皆様も、
今回はすいすいとけた方が多かったみたいですね(^▽^)/
最近は苦労して自主補習もしていたので、たまにさくっと行けると自信がついて、
嬉しいです!(≧▽≦)
私はまだ実務で試すことができないので、成果を実感されている方々が羨ましいです。
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月27日 08時26分29秒
投稿ID: 2153 受講生さんの投稿
ちょっと振り返りました。
しそ巻きカウント(と私が名づけました)は、
migiとhidaと2種類のカウント変数が同時に動くあたり、
今までの学習だけでは、なかなか理解しにくい部分だと思います。
記憶がとぎれず連日学習している私でもここが難しかったので、
仕事の合間に間隔をあけながら学習される方ならば、
「あれっ急に講座が難しくなった、どうしよう?」
と感じるヤマではないかと・・・(;´・ω・)

私が自分の理解を深めるために思いついた方法、
それは、時計の2つの針です。
長針choは、分刻みの for cho=1 to 60 のカウンタ変数。
短針tanは、時間刻みの、for tan= 1 to 12 のカウンタ変数。
choのカウンタが60になると、
tan=tan+1となって短針が動き、
next → fun=0 となり、
ふたたび長針が0から分を刻んで行くわけです。 
こう考えると、短針が動くと同時に長針のカウンタが初期化される動きも
分かりやすくなります。

こういうイメージでF8を動かし、特に変数の入れ替わりや行の移動などを
1行ずつ目で追いながら、マウスオンで確認する作業が大事だなと。

作業レベルでいえば、ハナコの応用として、
集計行(しそ巻き動画のhida行)の、つまり2個目のnextの箱を作ると
同時に、カウンタ初期化(変数=0 の行を、箱の最初に書き加える)、
という作業も連動させて行うと解釈し、覚えてしまって良いのではないかと
思いました。 いかがでしょうか(n*´ω`*n)
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月27日 05時53分37秒
投稿ID: 2151 受講生さんの投稿
今回は動画を見ただけで、まだ試していません。

最大値を求めるときの考え方が勉強になりました。私が浮かんだイメージは、オリンピックなどで
一人ずつ順番に競技を行い、タイムや獲得点数を競うようなケースです。
「これで期待のA選手、暫定1位に躍り出ました!残るはB国の前回メダリストC選手が残るのみです!」
みたいなアナウンスが。・・・そんなイメージで1行ずつ比較していけばいいのだなと。
この考えで単体1列の比較であれば書けそうな予感がします。

列ごとの比較ですが、ついに出てきたという感じです。
見た感じ、難しいです・・・cellを使わないとなると、offsetかな。

どこの参考書にも、rangeの解説後、比較的早くcellの解説があります。
それをあえて先生が基礎編で取り上げなかったことには理由があると踏んでおります。

私が考えた理由とは、カウント変数の指定→箱を作って切り取って中に入れる→
for next文への変数の代入で置き換えというハナコの一連の作業を考えると、
常にrangeを使うならば機械的に代入操作できるため、無駄なミスを回避できるという点です。

一見すると列移動があるときはcellを使うほうが便利そうですが、
代入ルールがrangeと異なるため、一度立ち止まって検証しなくてはならない。
cellの代入ルールを覚えたら覚えたで、rangeと混同してしまうリスクが生じます。
コードを見直す際も、こっちがrange、こっちがcell・・のように頭を切り替えなくてはならず
読みながら考えるのが複雑になりそう。・・・以上です。

どちらにしろ、列比較の連続技を書く能力はまだないので、
自分ならば単体で各列ごとのMAX値を算出し、最後に列ごとのmaxを比較すると思います。
予選勝ち抜きした人が、後日決勝戦に出るというイメージですね(笑)
by gooska
この投稿には、4件の返信があります。  投稿日時: 2016年03月27日 00時17分02秒
投稿ID: 2150 受講生さんの投稿
このパターンの練習不足を感じましたので、手持ちのサンプルデータで補習してみました。
顧客名が混在する日付順の販売データから特定顧客データを抜き出し、別シートにある請求書雛形に転記するという目標です。

Sub rensyhu032602()
         '販売データから指定顧客データを抜き出し請求書シートに転記する
    Dim gyo
    Dim kokyaku
    kokyaku = 12
    For gyo = 4 To 32
        If Worksheets("販売").Range("B" & gyo).Value = Worksheets("請求書雛形").Range("A6").Value Then
            Worksheets("請求書雛形").Range("A" & kokyaku).Value = Worksheets("販売").Range("A" & gyo).Value '日付
            Worksheets("請求書雛形").Range("B" & kokyaku).Value = Worksheets("販売").Range("C" & gyo).Value '商品
            Worksheets("請求書雛形").Range("C" & kokyaku).Value = Worksheets("販売").Range("D" & gyo).Value '単価
            Worksheets("請求書雛形").Range("D" & kokyaku).Value = Worksheets("販売").Range("E" & gyo).Value '数量
            Worksheets("請求書雛形").Range("E" & kokyaku).Value = Worksheets("販売").Range("F" & gyo).Value '金額
            kokyaku = kokyaku + 1   
        End If
    Next
End Sub
変数=変数+1は、 こんな使い方でokでしょうか。
販売データから顧客ごとの販売合計にもチェレンジ。
自前のマクロ請求書データと検証して、合計額が一致したときは嬉しくなりました!
数週間前、参考書のサンプルのとおりに独学で作ろうとしたときは、半分以上記録マクロでしたから、
今回一から自分で書けたことにびっくりしました。

実は、1顧客分だけ数字が合わなかったんです。
全部でなく1顧客というのはどうもおかしい。何度も検証を繰り返した結果判明したこと。
同じシートでいろいろな顧客の請求書をテストし、データをクリアせずに実行していたので
行数の多い顧客データが1行、次の顧客データを処理する時上書きされず、残っていたのです。
ワークシート関数ですと必ず範囲指定があるので、こういうミスは起こりませんが、
マクロの場合はきちんと指示しないかぎり、忠実な小人ちゃんは前のデータを消してくれませんから
カウント変数の初期化に限らず、何かの処理を繰り返す際のリセットを忘れてはならないと
学びました。
たくさん失敗から学ばなくてはなりません・・・・(笑)
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月26日 22時31分21秒
投稿ID: 2146 受講生さんの投稿
動画をみて、同時にD列総計を求める方法を学びましたので、
自分でもやってみたのですが・・・結果がどうしても200になってしまうので原因を探していたら
sokei=sokei+Range("D"&hidari).value
とするべきところを、
sokei=gokei+Range("D"&hidari).value
としていました(笑)
gokei は1項目の集計が終わったらリセットされるから、
これだと最終項目お見舞い袋の集計結果100に、もう一度gokeiを足しただけですね。
まだまだでした(笑)
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月26日 05時09分46秒
投稿ID: 2145 受講生さんの投稿
しそ巻き無料のカウントマクロを使えばできるという説明で
いったん動画を止めて、問題に取り組みましたが、・・・
最初思うようにできませんでした。
変数の値が加算されず、常に最新値のみが表示されてしまったり(笑)

しそ巻き無料の動画を見直し、もう一度理解してから再挑戦すると、
カウントを加算に変更するだけなので、今度はうまくいきました。
ただしC,D,E列それぞれの単体マクロしか書けませんが(笑)

ポイントは3つですね。
1変数=変数+指定セルの値 という式の理解
2計算が終わった変数をワークシートに吐き出す式をどこに入れるか
3カウンタの初期化をどこにいれるか

自分はまだまだですが、やはりF8を押して1行ずつマクロを動かし、
変数の値がどのように変わっていくかと、NEXTやEND IFの後、
どの行に戻るのかをきちんと確認していく作業が大事だと感じました。

マウスオンで、変数の値が確認できるのは素晴らしいです!
最近キーボードだけでそれができたらいいのになと思います、
ようやくキーボード操作でVBEウィンドウとワークシートの切り替えが
できるようになったので。
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月26日 03時38分00秒
投稿ID: 2144 受講生さんの投稿
動画を見ずに一応動くものを作れましたが、
動画と比べてみると、無駄が多いです(;´・ω・)

Sub mondai0093()
    Dim namae
    Dim sei
    Dim gyo
    For gyo = 2 To 11
        namae = Range("B" & gyo).Value
        If InStr(namae, "/") > 0 Then
            sei = InStr(namae, "/")
            Range("C" & gyo).Value = Left(namae, sei - 1)
            Range("D" & gyo).Value = Mid(namae, sei + 1)
        Else
            sei = InStr(namae, " ")
            Range("C" & gyo).Value = Left(namae, sei - 1)
            Range("D" & gyo).Value = Mid(namae, sei + 1)
        End If
    Next
End Sub

"/"で区切る場合と、半角スペースで区切る場合を
分岐処理で繰り返してしまいました。


      sla = InStr(myonam, " ")
        If sla = 0 Then
            sla = InStr(myonam, "/")
        End If
  
のように、変数に 「または」の 意味をもたせてIF文を閉じてしまい、
共通の文字列関数処理として書いてもよかったんですね。

練習が必要です。考える方向はざっくり合っていたと思いますが・・・
by gooska


この投稿には、3件の返信があります。  投稿日時: 2016年03月25日 07時50分34秒
投稿ID: 2143 受講生さんの投稿
小川先生、
わかりやすいたとえ話をありがとうございます。

現実にカウンターで計測する時のことを考えると、直前に初期化するのが自然ですね。

私がnextの前に初期化を入れてみたのは、nextが入れ子になっているとステップが複雑なので、
どこで初期化されるのか慣れない私には まだ分かりにくかったからです。
集計表に書き込んだ直後であれば、カウンタ変数の役目はいったん終わるわけですから、そこで0にしてしまおうかと。
メリットは、初心者にわかりやすい場所かなと思えたことです。

通常の、新しいカウントを始める直前での初期化、メリットは通常のFORNEXT構文での位置と同じなので、
時間が経って自分で振り返ったり他人が見た場合、理解しにくい。
同様に、next前の初期化はたぶんあまり他の人がそう書かないので、わかりにくい。

自分が今思いつけるメリッ・トデメリットはこのくらいしかありません。
もっとForNextの経験を積んだら思いつくかも。
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月25日 05時37分33秒
投稿ID: 2141 受講生さんの投稿
基礎本編動画で初めてinstr関数が出てきた時、instrはif instr・・・・>0 のような使い方をよくすると
一言紹介がありました。
文字位置だけでなく、文字列のあるなしの判別で分岐処理をするという点が印象に残っていたらしく
それを思い出して解くことができていました。(*^▽^*)

ただ、instrで返された数値を変数にし忘れたので、あまりスマートなコードではありませんでした。
東京モノレール、どんなふうに処理したのか楽しみに見ました。
1か所だけの例外値だったので、私も単純な処理をしてしまいました。
instrを変数にしていなかったので、こんな風です:(笑)
IF文で例外処理を分岐するロジックは理解できたと思います。

 If Left(rosen, 7) = "東京モノレール" Then
            Range("H" & gyo).Value = Left(rosen, 7)
            Range("I" & gyo).Value = Mid(rosen, 7 + 1)
        Else
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月25日 05時20分33秒
投稿ID: 2140 受講生さんの投稿
今回は、今までの復習問題でしたね。
全問解いてから動画を見ています。1,2は、先生と同じような形で書けました。
今回のような使い方をするleft、MID、instr操作はマスターできたと思います。
後半部分、次の動画で先生の回答と比較したいと思います。
by gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月25日 04時25分18秒
投稿ID: 2139 海上 美弥子さんの投稿
何度も同じコメントをUPしてしまいすみません;
動画を見てから、数列を使ったやり方に挑戦しました。
数列を見たときは分からなかったのですが、ちゃんと該当行を書きだして考えれば
データは3行サイクルなので、3の倍数行に対し、それぞれの剰余が0,1,2になることがわかります。
3のn倍のnが、データを書き出すC列の行番号と連動するので、変数も1つでいいわけですね。
それをもとにあてはめれば、動画の方式でうまくいくことも理解できました。
前半が理解できたので、後半は悩まずに解けました。

さて昨晩のコードですが、
データの規則性として必ず「第」が先頭に来るのであれば問題ないと思いますが、
2問目のようにスペシャルが混ざった場合には対応できませんね・・・
空白行があっても今回のように行数に規則性があるならば、数列の考えで取り出す方が良いと
納得しました。
逆に空白が不規則であるならば、IF文を使うほうが良いのかなと。

2問目について。データがいくつあるのか空白行のためにパッと見てわかりにくいとき
forでいくつを指定したらいいのかと考えました。
実は最初、多めの200まで指定して、行を超えても空白行どうしになるから大丈夫かなと思ったんですが、
今回のように間にハイフンをつけなくてはいけない場合、ハイフンだけの行が発生してしまいます。

次にif range(”A”& bango)<>"" then のようなIF文をつけたらどうかと思ったのですが、
これをやるとカウント変数がうまく作動せず、C列の書き出しに空白行が出たり、抜き出さずに飛ばされるデータが出たりして
うまくいきませんでした。(;´・ω・)
この投稿には、1件の返信があります。  投稿日時: 2016年03月25日 02時08分30秒
投稿ID: 2138 受講生さんの投稿
(昨晩以下の書き込みしたつもりでしたが、時間切れで画面が更新されなかったみたいです。
なので再アップします。どこかに掲載済でしたらすみません。)
今回数式の話が出たところで動画をとめて、自分だったらどうするか考えて以下を書きました。
文系の発想ですみません。コメントいただけましたら幸いです。
これから数列の勉強をしに動画を見てきます。

Sub mondai006()
    Dim moto
    Dim syukei
    syukei = 1
    For moto = 1 To 28
    If Left(Range("A" & moto).Value, 1) = "第" Then
        Range("C" & syukei).Value = Range("A" & moto).Value & Range("A" & moto + 1).Value
        syukei = syukei + 1
    End If
Next
End Sub
by gooska
この投稿には、2件の返信があります。  投稿日時: 2016年03月25日 00時04分12秒
投稿ID: 2135 受講生さんの投稿
前回の問題で、反復練習を重ねてからこちらに来たおかげで、
ワークシートの指定部分だけを教わったら、あとは自力で解けました(*´▽`*)
教わったそばからIF文の条件式にワークシート指定を忘れて、最初動きませんでしたが(笑)
あるあるなので、シートの特定があるマクロは、気をつけたいと思います。
反復効果がすばらしいです。
gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月24日 07時45分08秒
投稿ID: 2134 受講生さんの投稿
あれから何度も繰り返し、飽きてからは過去の問題の表を使って、同様の問題を想定し解いてみたら、
だんだん慣れてきました。パターンを完全に覚えるまで、とにかく繰り返せばいいのですね。
慣れていく過程で、おぼろげだった理屈の理解も、意外と早くついてくるような気がします。
高校時代にこういう勉強の仕方をしていたらなぁ・・・と残念です(笑)
まだまだですが、練習あるのみ gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月24日 07時16分41秒
投稿ID: 2133 受講生さんの投稿
動画を見てから何も見ずに書こうとすると行き詰まりました。
変数が2つあり、入れ子もあると難しいですね。変数の指定を逆にしてしまったりと、何度もやり直しました。
身体で覚えるまで丸暗記のつもりで、、、ということなので、繰り返し練習しますね。
変数=変数+1と、初期値の設定は繰り返すうちに分かってきました。
gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月24日 05時12分30秒
投稿ID: 2131 受講生さんの投稿
カウントの初期化についてですが、合計数を記述した後に初期化してから次のNextに行くように
書いても問題ないでしょうか。一応試してみたら同じ数値は得られましたが。

     Range("F" & syurui).Value = gokei
        gokei = 0
    Next
gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月24日 00時01分56秒
投稿ID: 2130 受講生さんの投稿
何度も見たり作成したりして、1種類のカウントはマスタ―しました。
ForNextが入れ子になる複数のカウントはもう少し練習します。
やはりカウントを初期化する=0の式をどこで入れるかですよね。
カウント数を記述する行と、初期化の行が大事ですね。
gooska
投稿日時: 2016年03月23日 23時36分48秒
投稿ID: 2126 海上 美弥子さんの投稿
1回視聴しただけでまだ自分で試していません。COUNTIF関数がマクロで書けることに感動しました。
COUNTIF関数を使い慣れているせいか、今回のマクロは難しく感じました。
次の処理のためにカウント変数を0に戻さないといけないことはよくわかりましたが、
初期化する位置があの行だということが、現段階で理解できていません。
たぶん今このエラーを修正せよと言われたら対処できないと思います。
まず慣れが必要かと思うので、練習してみます。
gooska
投稿日時: 2016年03月23日 01時55分26秒
投稿ID: 2125 受講生さんの投稿
ご紹介いただいたので、ElseIfと併せてSelect Caseも反復練習しました。
「home、shiftを押しながら↓↓↓、tabでずらして切り取って」は、ゴロもいいので耳に残りやすく助かっています。
基本に忠実に、飽きが来るまで繰り返そうと思います。
ELSEIFは、IFやSelectcaseに比べてコピペ操作が間違いやすいです。
コピペしてから字下げ忘れに気がついたり・・・・。
elseと打ってからのIFフレーズコピーをマスターしたいと思います。
gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月23日 00時57分33秒
投稿ID: 2119 受講生さんの投稿
今回も受講してから自分で解きました。バッチリできました。
毎回、この欄の過去のコメントも読んで参考にしています。
玉谷さんの別解、ちょっと考えて理解できました。(瞬時には分かりませんでした)
男女別とはいえ比較パターンは同じだから、条件式はそのままにして、
70点以上と80点以上の数値を変数にしたのですね。
今後基準点が変更される可能性があるなら、変数にするメリットがあると思いました。
将来人が作ったマクロを修正するような業務を想定するなら、自分でもある程度書けるだけでなく、
他人が作ったマクロを読む能力も必要だと感じました。
まだ私はこんなマクロは書けないので、まずは足元を固める訓練に専念します。
gooska
この投稿には、1件の返信があります。  投稿日時: 2016年03月22日 10時57分55秒
投稿ID: 2117 受講生さんの投稿
小川先生へ

今回の動画を初めて見たときはちんぷんかんぷんで
ちょっとパニックになりました。(汗)
2度目でなんとなく・・・ですが、意味がわかりました。
何度も動画を確認してさらに理解を深めようと思います!

変数もいろんな使い方があるんだとびっくりでした。
この投稿には、1件の返信があります。  投稿日時: 2016年03月22日 09時31分38秒
投稿ID: 2093 多和田 真也さんの投稿
小川先生の書いたプログラムをちら見しながら、なんとか、正しい結果が出るプログラムになりました。
しかし、なぜ出来ているのか、説明もできないです。イマイチ理解度が低いような気がします。
[2]に関しては、こんな感じです。若干小川先生の書いたものと違う(if文が一つだけ)のですが、これでいいのでしょうか?

Sub test2()

Dim migi
Dim hida
Dim ku
migi = 1
For hida = 2 To 27
If Range("A" & hida - 1).Value < Range("A" & hida).Value Then
migi = migi + 1
Range("E" & migi) = Range("A" & hida).Value
Range("F" & migi) = Range("B" & hida).Value
ku = ""
End If
ku = ku & "," & Range("C" & hida).Value & "地区"
Range("G" & migi).Value = Mid(ku, 2)
Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2016年03月21日 17時23分08秒
投稿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

できちゃったからいいのか?とも思いましたが
 他に良い方法があれば教えてください。
この投稿には、1件の返信があります。  投稿日時: 2016年03月08日 11時25分17秒
投稿ID: 1951 受講生さんの投稿
「業者名・フリガナ」と「担当区域」がずれないようにするために、3つ全てを「初回でなかったら」と処理してしまい、ループを抜けた後に3つを書き出すのもありかなと思いました。
コードを書き、動作確認もできました。
タイトルにある「1行のリストを解析して表にする」もやってみました。こちらの方が、断然楽でした(「地区」を消す際に、Replace関数を使用しました)。
この投稿には、1件の返信があります。  投稿日時: 2016年02月06日 20時14分20秒
投稿ID: 1948 受講生さんの投稿
小川先生 こんばんは
現在、仕事でデータベースを作成しているのですがキーワード抽出機能を作成するのに
ネットで調べてlike演算子を用いるも全く機能せず、かつどの情報も複雑で分かりづらく困り果てていたところに、
ふとこの講義の事を思い出し無事にものの数分で解決しました。ありがとうございます。
小川先生のコードに勝るものはありませんね。あらためて、めちゃ凄いって思いました。

B18のセルに自由にキーワードを入力し、長文からの抽出もばっちり上手くいきました。

Sub miyakojima2()
Dim n
Dim i
Dim k
i = 2

k = Range("B18")

For n = 2 To Range("A65536").End(xlUp).Row
If InStr(Range("B" & n).Value, k) > 0 Then

Range("A" & n & ":G" & n).Copy Range("J" & i & ":P" & i)
i = i + 1

End If

Next
End Sub
この投稿には、3件の返信があります。  投稿日時: 2016年02月06日 08時39分14秒
投稿ID: 1869 受講生さんの投稿
変数soukeiの位置をIf文の中から移動し、一部修正しました。


Sub kekkoniwaigoukei()
    Dim soukei
    Dim goukei
    Dim migi
    Dim hida
    For hida = 4 To 9
        goukei = 0
        For migi = 4 To 10
            If Range("I" & migi).Value = Range("B" & hida).Value Then
                goukei = goukei + Range("J" & migi).Value
            End If
        Next
        soukei = soukei + goukei    'ここを修正
        Range("D" & hida).Value = goukei
        Range("E" & hida).Value = Range("C" & hida).Value + goukei
    Next
    Range("D10").Value = soukei
    Range("E10").Value = Range("C10").Value + soukei
End Sub
この投稿には、3件の返信があります。  投稿日時: 2016年01月06日 07時11分36秒
投稿ID: 1856 古川智之さんの投稿
この出現回数の数え方の説明、めちゃくちゃわかりやすいです!!感動しました!
この投稿には、1件の返信があります。  投稿日時: 2015年12月24日 03時40分35秒
投稿ID: 1851 受講生さんの投稿
小川先生
タイピングについて質問させてください。文字のタイピングはだいぶ早くなったのですが、ショートカットキーの手の動かし方が遅くいつも間違ってしまいます。
キーボードにもよると思いますが、先生はPgUp、PgDnが右上にある場合は小指で打っていますか?またそのほかCtrl/やシフト、Altを押すときも、どの指で押せばいいかいつも迷ってしまいます。
アドバイスありましたらお願いいたします。
この投稿には、4件の返信があります。  投稿日時: 2015年12月19日 20時34分37秒
投稿ID: 1849 受講生さんの投稿
小川先生
本日で基礎講座閲覧期間が終了します。この4か月間、実際実務でも使用しました。まだ慣れていないため、マクロを作るのに時間がかかってしまった状況でしたが、この講座を受講したおかげで、マクロだけでなく、すべての仕事面で、効率的にしごとができたと思います。また、質問のご返答の中で、自分の弱点を指摘してもらうなんてことは、職場の同僚からはなかなか言ってもらえるような年齢でもなくなってきているため、非常に貴重でした。%365も毎日楽しみにしています。
ありがとうございました。
最後に質問です。これから特打ちを購入しようと思います。自宅のキーボードと職場のキーボードが違うのですが、練習するなら職場と同じキーボードで練習しようと思います。好きにしろといわれそうですが、どう思われますか。
この投稿には、4件の返信があります。  投稿日時: 2015年12月18日 14時39分01秒
投稿ID: 1833 受講生さんの投稿
小川様 お世話になっております。勉強方法について質問させてください。
1.動画を見る前に問題を自分で考えてから解いてみて、動画をみる。
2.動画を見てから自分で同じように書いて練習する。
私は、1でやるとまったく想像力がないので。。手が止まってしまいやる気を失ってしまいます。
2の方法でも上達するでしょうか。それともおすすめはやはり1の方法でしょうか。
個人個人で最適な勉強方法は違うと思いますが。。先生のご意見を教えていただけましたら幸いです。
あと、数学や算数がまったく得意でないのですが。。それにマクロの取得は関係ありますか?
得意不得意関係なくある程度のところまではマクロは書けるようになりますか。
動画のおかげで確実に上達しているとは思うのですが、不安な気持ちです。励ましてください!

どうぞよろしくお願いいたします。
この投稿には、3件の返信があります。  投稿日時: 2015年12月10日 07時19分48秒
投稿ID: 1820 受講生さんの投稿
小川様
ループの中に入れるメリットがないことがよくわかりました!
ありがとうございます。
この投稿には、1件の返信があります。  投稿日時: 2015年12月03日 07時52分23秒
投稿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
この投稿には、1件の返信があります。  投稿日時: 2015年12月01日 08時31分43秒
投稿ID: 1791 関口昭博さんの投稿
小川先生
お世話になっております。
閲覧期間残り一月のところで、基礎編およびフォローアップ編を、閲覧、勉強しおえました。(使えるようになったかは別として)
覚えたマクロで、自分の業務でも使い始めました。ただ、マクロを完成させるのに時間がかかって、今の時点では、これまでちまちまやっていた時間と
さほど変わらない状況です。そのため、マクロを考えるのは、自宅でやっています。ただ完成したマクロを何度も実行してニヤニヤしています。
そんな状況ですが、現在、壁にぶち当たっている問題があります。
それは、野菜の品種名と出荷日のリストがあって、それを、縦に品種、横が出荷日の表に、その品種の出荷日ごとの出荷点数をうちだすというもの
ですが、知恵が浮かびません。
野菜は20種類ほどあって元のリストは重複しておりますし、合計300点あります。出荷日は20日間あります。
重複しない野菜のリストは、教えていただいたマクロでできました。また、品種別の出荷点数も、ネットでみつけたマクロでとってくることができました。
しかし、品種別、さらに出荷日別の点数を打ち出すマクロができません。
以前、どなたかの質問で、その内容は発展編で学んでほしいという回答を見ましたので、今回の質問が基礎編を超えるようなら、仕方ありませんが
基礎編レベルで解決できることでしたら、教えてください。
よろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2015年11月18日 14時24分20秒
投稿ID: 1766 関口昭博さんの投稿
小川先生お世話になります。
この動画の5:50のあたりで、Ctrl+Hで置換する場面がありますが、そのあたりの手順を詳しく教えていただけますか。
少しでも楽する方法を覚えたいものですから。
よろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2015年11月11日 14時00分18秒
投稿ID: 1750 受講生さんの投稿
小川先生
お世話になります。
この動画の最後のところで、Range("F" & gyo).Valueを 変数のtekkinにおきかえる場面がありますが、そこがにわかに理解しがたいです。
変数のtekkinは、マクロを見る限り、 "鉄筋コンクリート" または "鉄筋鉄骨コンクリート" としか私には読めないからです。
たしかにこれでも動きましたが、考え方や読み方のポイントを教えていただけますでしょうか。
この投稿には、1件の返信があります。  投稿日時: 2015年11月08日 14時47分14秒
投稿ID: 1740 受講生さんの投稿
基礎編フォローアップ動画第11回 の解説おかしくないですか?I4からI10の詳細に書かれている内容を、B4~B9に分類して、その分類ごとの合計を計算するんでしょう?
”結婚祝い”しか反映されていないですよね?まぁ、やり方はわかるので、イイっちゃいいのですが・・・
投稿日時: 2015年11月01日 00時13分00秒
投稿ID: 1735 金親 幸加さんの投稿
VBA基礎フォローアップの第11回目の講座をオンラインで受けさせて頂きました。
早速質問なのですが、小川先生のコーディングのやり方を真似して実際に打ってみましたが、
動画の結果より全体的に数が5000少なくなってしまいます。この場合どうすればいいでしょうか?
投稿日時: 2015年10月26日 19時34分22秒
投稿ID: 1733 受講生さんの投稿
動画を見るまで「変数2つ?」のヒントがさっぱりわからず、全く思い付きませんでした。
こういうパターンは利用頻度が多そうなので、動画を見ないでもすらすら書けるよう、頑張って覚えたいと思います。
この投稿には、1件の返信があります。  投稿日時: 2015年10月24日 02時05分35秒
投稿ID: 1679 鈴木優子さんの投稿
G列に書きだすのは、hidaを調べていくときだなと思って、if文の中にいれませんでした。
書き出すタイミングが動画と違ったので、For Next構文の始まった直後と終わった後に特別な仕掛けをつくる仕組みがなくてもテストしてたら思い通りに動いていました。
今回はうまくいったけれど、初回処理と最後の処理を気をつけるというのは よく出てきそうなので、しっかり覚えようと思います!


Sub seikei()
    Dim hida
    Dim migi
    Dim tiku
    migi = 2
    For hida = 2 To 27
        If Range("A" & hida).Value <> Range("A" & hida - 1).Value Then
            Range("E" & migi).Value = Range("A" & hida).Value
            Range("F" & migi).Value = Range("B" & hida).Value
            migi = migi + 1
            tiku = ""
        End If
        tiku = tiku & "," & Range("C" & hida).Value & "地区"
        Range("G" & migi - 1).Value = Mid(tiku, 2)
    Next
End Sub
この投稿には、3件の返信があります。  投稿日時: 2015年09月12日 08時03分41秒
投稿ID: 1658 仲村 修治さんの投稿
多くの方が書いていますが、シンプルな書き方が参考になりました。

Sub sisomaki()
    Dim siso
    Dim nomi
    Dim kanpyo
    Dim gyo
    For gyo = 4 To 33
        If Range("C" & gyo).Value = "しそ巻き無料" Then
            siso = siso + 1
        ElseIf Range("C" & gyo).Value = "飲みもの無料" Then
            nomi = nomi + 1
        ElseIf Range("C" & gyo).Value = "かんぴょう巻き無料" Then
            kanpyo = kanpyo + 1
        End If
    Next
    Range("F4").Value = siso
    Range("F5").Value = nomi
    Range("F6").Value = kanpyo
End Sub
この投稿には、1件の返信があります。  投稿日時: 2015年09月03日 09時06分36秒
投稿ID: 1648 仲村 修治さんの投稿
法則性の表現と検証の関数が参考になりました。
ちなみに、裏技的な解法で解いてみましたが、回答と比べるとシンプルではないですね。

Sub moji()
    Dim gyo
    Dim migi
    migi = 1
    For gyo = 1 To 29 Step 3
        Range("C" & migi).Value = Range("A" & gyo).Value & Range("A" & gyo + 1).Value
        migi = migi + 1
    Next
End Sub
この投稿には、3件の返信があります。  投稿日時: 2015年08月31日 04時28分55秒
投稿ID: 1637 受講生さんの投稿
このプログラムでベスト10を書き出すとかする場合はどう工夫すればよいでしょうか。
この投稿には、1件の返信があります。  投稿日時: 2015年08月29日 22時06分18秒
投稿ID: 1562 鈴木優子さんの投稿
自力で書いたマクロで動いて嬉しかったのですが、
やっぱり解答のマクロはシンプルでかっこいいですね。
わたしは、、、毎回書き出してしまいました。。。
mid 関数は思いつきませんでした。
Sub mondai()
    Dim gyo
    Dim gyousyamei
    Dim furigana
    For gyo = 2 To 11
        gyousyamei = Range("A" & gyo).Value
        furigana = Range("B" & gyo).Value
        If gyo = 2 Then
            Range("F2").Value = gyousyamei
            Range("F3").Value = furigana
        Else
            Range("F2").Value = Range("F2").Value & "," & gyousyamei
            Range("F3").Value = Range("F3").Value & "," & furigana
        End If
    Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2015年08月05日 07時50分18秒
投稿ID: 1560 鈴木優子さんの投稿
自力出といた時は みなさまと同じで 資料A の時は Bの時は・・・とif 文で分岐したり、
問題2のほうは いっぱい 変数使ったりしていました。
解答のマクロを見て 思わず「きれい!」と言いました。
こんなにシンプルに物事をさっと理解できるようになりたいなぁ。
感性を磨いていきたいと思いました。頑張ります!
この投稿には、1件の返信があります。  投稿日時: 2015年08月05日 05時46分19秒
投稿ID: 1514 鈴木優子さんの投稿
自力で書いた時は 直前の問題まで使っていた instrを使っていました(^^ゞ
応用力が足りませんね。。。
回答の動画をみて あんなにあっさりできるなんて びっくりでした。


Sub rensyu2()
    Dim count1
    Dim count2
    Dim count3
    Dim gyo
    For gyo = 4 To 33
        If (InStr(Range("C" & gyo).Value, "しそ巻き無料")) > 0 Then
            count1 = count1 + 1
        ElseIf (InStr(Range("C" & gyo).Value, "飲みもの無料")) > 0 Then
                count2 = count2 + 1
        ElseIf (InStr(Range("C" & gyo).Value, "かんぴょう巻き無料")) > 0 Then
                count3 = count3 + 1
        Else
        
        End If
        

    Next
        Range("F4").Value = count1
        Range("F5").Value = count2
        Range("F6").Value = count3
    
End Sub
この投稿には、1件の返信があります。  投稿日時: 2015年07月12日 08時51分24秒
投稿ID: 1487 森 則彦さんの投稿
初めてコメントする森と申します。
フォローアップセミナーのNO.018の最終問題_ 2は5時間ぐらいあれこれと悩みました。
基礎編についてはほぼ理解できたと思います。
次のステップの順序としては、どの講座を受けるのが理想でしょうか?

G列に書き出すタイミングが上手く表現できず悩みました。
以下が出来上がったプログラムソースです。



code
Sub list2()
Dim memo, migi, gyo
migi = 2
For gyo = 2 To 27
If Range("a" & gyo).Value <> Range("a" & gyo - 1).Value Then
Range("e" & migi).Value = Range("a" & gyo).Value
Range("f" & migi).Value = Range("b" & gyo).Value
Range("g" & migi - 1).Value = memo & "地区"
memo = Range("c" & gyo).Value
migi = migi + 1
Else
memo = memo & "地区" & "、" & Range("c" & gyo).Value
End If
Next
Range("g" & migi - 1).Value = memo & "地区"
End Sub
/code
この投稿には、1件の返信があります。  投稿日時: 2015年06月29日 10時03分51秒
投稿ID: 1483 虫谷吉男さんの投稿
質問です。
migi=migi+1でないといけないのでしょうか?覚えたらよいのでしょうが、あの場所にこの入力は発想がつかず、応用が利かないのではないか心配です。
下記でも行けるのではないかと思いやってみたら、最初の1行の部分だけが繰り返されてうまくゆきませんでした。
Sub koriha()
Dim hidari
Dim migi
For hidari = 8 To 17
For migi = 5 To 14
If Range("c"&hidari).Value > 100 Then
Range("f" & migi).Value = Range("a" & hidari).Value
Range("g" & migi).Value = Range("b" & hidari).Value
Range("h" & migi).Value = Range("c" & hidari).Value
End If
Next
Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2015年06月28日 07時04分46秒
投稿ID: 1431 ゲストさんの投稿
お世話になります。
基礎編フォローアップ講座を拝聴していますが、2回から音声が非常に小さくて
聞き取りにくい状態です。
Safariで再生しています。
ボリームを最大にしていますが、他にも音を大きくする方法があったら教えてください。
投稿日時: 2015年06月08日 23時55分19秒
投稿ID: 1395 門田 源一さんの投稿
基礎編フォローアップ動画講座、全18回、本日をもって学習を終了することができました。マクロ言語の学習は全く初めての経験でしたので全てが新鮮で大変楽しく学習することができました。学習者に寄り添い、かつ実践的な講座をご提供いただき大変ありがとうございました。基礎編だけでもかなりのことができると伺いましたので、今後はまず仕事上の懸案事項への活用をトライしてみるつもりです。将来、おそらく発展コースでの学習の必要性が出てくるものと思われますが、基礎編で学んだ成果を試して見たいと考えております。これまでのご指導に感謝いたします。ありがとうございました。
この投稿には、1件の返信があります。  投稿日時: 2015年05月30日 07時17分31秒
投稿ID: 1244 大出 紀子さんの投稿
こちらの講座とは関係ありませんが、会社で至急複数ブックのデータ転記マクロを作成することになりました。
この講座で学んだ事を駆使して作成しましたが、F8では正常なのにF5実行をするとデータがうまく転記されません。
何が原因でしょう?
この投稿には、1件の返信があります。  投稿日時: 2015年04月20日 06時49分44秒
投稿ID: 1202 ゲストさんの投稿
コードを書いてみました。
一応上手く処理されましたが、
どこかおかしいところや注意すべき箇所はありますでしょうか?

 
Sub test()
    Dim cGyo As Long
    Dim cHida As Long
    Dim cMigi As Long
    Dim sTiku As String
    
    cHida = 2
    cMigi = 2

    For cGyo = 2 To 27
        If Range("A" & cGyo).Value <> Range("A" & cGyo + 1).Value Then
            Range("E" & cHida) = Range("A" & cGyo).Value
            Range("F" & cHida) = Range("B" & cGyo).Value
            Range("G" & cMigi) = Mid(sTiku & "," & Range("C" & cGyo).Value & "地区", 2)
            cHida = cHida + 1
            cMigi = cMigi + 1
            sTiku = ""
        Else
            sTiku = sTiku & "," & Range("C" & cGyo).Value & "地区"
        End If
    Next
End Sub
 
この投稿には、1件の返信があります。  投稿日時: 2015年03月27日 08時16分35秒
投稿ID: 1191 井上 聡さんの投稿
動画再収録解説の問題点
1、sub Kazoeru プログラム上から9行目”結婚祝い”のままです。
2、一度リセットするプログラムがありません。
画像は依然より良くなっています。頑張ってください。
投稿日時: 2015年03月16日 14時59分24秒
投稿ID: 1148 watanbe daichiさんの投稿
今回の動画では私のつめ方の甘さが仕事にもついているように感じました。
最初のカンマを消す方法はいくつかの組み合わせで十分に出来るのですね…。
ありがとうございます。
この投稿には、1件の返信があります。  投稿日時: 2015年02月22日 05時17分04秒
投稿ID: 1136 ゲストさんの投稿
9回目から復習をしてきて18回目まで戻ってきました。
それでも書くのに悩んだ12回と18回は、また復習しますヽ(*´v`*)ノ
次は「Web連携」をやりつつ毎日一つはマクロを書いていきます^^/
「Web連携」が終わった後は、マクロの苦手な部分も克服できていることに期待。
それから発展編1に移ろうと思います^^

今回書いたコード↓

Sub create_ward()
    'review: 2015/2/16
    Dim i, mke, ward
    mke = 2
    For i = 2 To 27
        If Range("A" & i - 1).Value <> Range("A" & i).Value Then
            Range("E" & mke).Value = Range("A" & i).Value
            Range("F" & mke).Value = Range("B" & i).Value
            ward = Range("C" & i).Value & "地区,"
            mke = mke + 1
        Else
            ward = ward & Range("C" & i).Value & "地区,"
        End If
        Range("G" & mke - 1).Value = Left(ward, Len(ward) - 1)
    Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2015年02月17日 16時40分17秒
投稿ID: 1135 watanbe daichiさんの投稿
いつもありがとうございます。
組み合わせと発想で、簡単にできますね。この動画で、ハナコのステップの復習にもなりました。
何回も聞いていますと、現在の仕事の中でも「箱を作る…中に入れる…加工する…」が頭の中で繰り返されています。
1000件くらいのデータの割り付けも簡単に出来たので、とてもうれしいです。
この投稿には、1件の返信があります。  投稿日時: 2015年02月17日 06時09分55秒
投稿ID: 1124 受講生さんの投稿
17回の動画を観た後に、自分でNo.18の[2]をやってみました。

Sub list2()
Dim gyo
Dim migi
Dim kuiki

    migi = 2
    
    For gyo = 2 To 27
    
        If Range("A" & gyo - 1).Value <> Range("A" & gyo).Value Then
            Range("E" & migi).Value = Range("A" & gyo).Value
            Range("F" & migi).Value = Range("B" & gyo).Value
            migi = migi + 1
        End If
        
            If Range("B" & gyo - 1).Value <> Range("B" & gyo).Value Then
                kuiki = Range("C" & gyo).Value & "地区"
            Else
                kuiki = kuiki & "," & Range("C" & gyo).Value & "地区"
            End If
            
            Range("G" & migi - 1).Value = kuiki   'G列が1行ずれてしまったので、migi -1で調整した。
            
        Next
        
End Sub
急遽、migi-1なんてやらかしていますが…(^_^;)
それでも、何とか一通りフォローアップ動画も観終わりました。
もう一度、最後の方の難しかったところを観てから、次の「発展編1」に進もうと思います。
ありがとうございます。
この投稿には、1件の返信があります。  投稿日時: 2015年02月12日 08時59分37秒
投稿ID: 1123 受講生さんの投稿
最初は、どうしても「,(コンマ)」が残ってしまうと思ったので、自力だけでは解答に到達しませんでした(^_^;)

ここで、MId関数を使うことは思い付きませんでした。
Range("F2").Value = Mid(gyosya, 2)
Range("F3").Value = Mid(kana, 2)

「マクロを学ぶと言うことは、『視野を広げて考えること』でもあるのだな」
と実感しました。
毎回、勉強になります。
ありがとうございます(^o^)
この投稿には、1件の返信があります。  投稿日時: 2015年02月12日 08時39分41秒
投稿ID: 1122 受講生さんの投稿
最初に、自分で考えたものが以下の通りです。

Sub bangou()
Dim gyo
Dim Asiryo
Dim Bsiryo
Dim Csiryo
    
    Asiryo = 0
    Bsiryo = 0
    Csiryo = 0
    
    For gyo = 4 To 19
        If Range("D" & gyo).Value = "資料A" Then
            Range("B" & gyo).Value = 1
            Asiryo = Asiryo + 1
            Range("C" & gyo).Value = Asiryo
        ElseIf Range("D" & gyo).Value = "資料B" Then
            Range("B" & gyo).Value = 2
            Bsiryo = Bsiryo + 1
            Range("C" & gyo).Value = Bsiryo
        Else
            Range("D" & gyo).Value = "資料C" Then
            Range("B" & gyo).Value = 3
            Csiryo = Csiryo + 1
            Range("C" & gyo).Value = Csiryo
        End If

    Next
            
End Sub

IF文の条件を「<>」にすることは、思い付きませんでした。

 If Range("D" & gyo - 1).Value <> Range("D" & gyo).Value Then
「If○○ = ×× Then」だけでなく、「<>(等しくなかったら)」という使い方もできるのだなと、解説を観て思いました。
「等しければ」の反対は「等しくなければ」だから、「=」の条件でIF文を作るのが難しい、あるいはややこしくなるようなら、
「<>」の条件を考えて、作ってみるという方法があるのだなと思いました。
この投稿には、1件の返信があります。  投稿日時: 2015年02月12日 08時31分56秒
投稿ID: 1121 ゲストさんの投稿
今フォローアップ動画9回目から復習をしています。

Cellsを思い出したので、RangeとCellsのいいとこどりで書いてみましたヾ(*´∀`*)ノ。
(個人的にはRangeの方がセル特定しやすくて好きです)
「1月の最長労働者とその他の月の労働者との勝ち抜き」という発想で書きました。

Sub overwork_total_1()
    'review [3]: 2015/2/11
    Dim l, c, lng
    lng = 6
    For l = 6 To 33
        If Range("C" & lng) < Range("C" & l) Then
            lng = l
        End If
    Next
    Range("K4").Value = Range("B" & lng).Value
    Range("L4").Value = Range("C5").Value
    Range("M4").Value = Range("C" & lng).Value
    l = 0
    For c = 4 To 8
        For l = 6 To 33
            If Range("M4").Value < Cells(l, c).Value Then
                Range("K4").Value = Range("B" & l).Value
                Range("L4").Value = Cells(5, c).Value
                Range("M4").Value = Cells(l, c).Value
            End If
        Next
    Next
End Sub

この投稿には、5件の返信があります。  投稿日時: 2015年02月12日 04時31分40秒
投稿ID: 1107 ゲストさんの投稿
今回は2日間粘って[2]を完成させました。

今から仕事なので帰宅したら小川先生のマクロを検証しつつなぞろうと思います。

Sub createlist2()
    Dim i, j, ward
    Range("E2").Value = Range("A2").Value
    Range("F2").Value = Range("B2").Value
    
    j = 3
    For i = 3 To 26
        If Range("A" & i - 1).Value <> Range("A" & i).Value Then
            Range("E" & j).Value = Range("A" & i).Value
            Range("F" & j).Value = Range("B" & i).Value
            j = j + 1
        End If
    Next
    
'作成日: 2015/02/09。↓2日考えてやっと完成
    j = 2
    Range("G2").Value = Range("C2").Value & "地区"
    For i = 2 To 26
        If Range("A" & i) <> Range("A" & i + 1) Then
            ward = 0
            j = j + 1
            ward = Range("C" & i + 1).Value & "地区,"
            Range("G" & j).Value = ward
        Else
            ward = ward & Range("C" & i + 1) & "地区,"
            Range("G" & j).Value = ward
        End If
    Next
    For i = 3 To 11
        Range("G" & i).Value = Left(Range("G" & i).Value, Len(Range("G" & i).Value) - 1)
    Next
    
End Sub

この投稿には、3件の返信があります。  投稿日時: 2015年02月09日 17時00分07秒
投稿ID: 1106 受講生さんの投稿
今回は、自力で解けませんでした。
解説動画を何度か繰り返し観たり、正解のコードを眺めながら、構造を理解していきたいです。
この投稿には、1件の返信があります。  投稿日時: 2015年02月09日 16時34分40秒
投稿ID: 1104 ゲストさんの投稿
今回は悩みました^^; でも自分でできたので嬉しいですヽ(*´v`*)ノ
最後にコンマがくるのはどうしたものかな... と考えてそれを解決したのが以下のコードです。

code
Sub complist1()
Dim i, all, all2
all = Range("A" & 2).Value
all2 = Range("B" & 2).Value

For i = 3 To 11
all = all & "," & Range("A" & i).Value
all2 = all2 & "," & Range("B" & i).Value
Next
Range("F2").Value = all
Range("F3").Value = all2
End Sub
/code

mid関数は思いつきませんでした。
この投稿には、3件の返信があります。  投稿日時: 2015年02月09日 02時42分19秒
投稿ID: 1102 受講生さんの投稿
こんにちは。
最初に自力でやった時は、For~Next構文を1回しか使わずにやりました。

Sub count2()
Dim siso
Dim drink
Dim kanpyo
Dim gyo

    For gyo = 4 To 33
        If Range("C" & gyo).Value = Range("E4").Value Then
            siso = siso + 1
            
        ElseIf Range("C" & gyo).Value = "Range("E5").Value Then
            drink = drink + 1
            
        ElseIf Range("C" & gyo).Value = Range("E6").Value Then
            kanpyo = kanpyo + 1
            
        End If

        Range("F4").Value = siso
        Range("F5").Value = drink
        Range("F6").Value = kanpyo
    Next
   
End Sub

最初に解説動画を拝見した時は、
「For~Next構文の中に、さらにFor~Next構文が入ると言うことだろか?」
と考えました。
そこで、migiとgyoの値に注目しながら、紙に書いてみて確認しました。
最初は、migi=4、gyo=4からスタートし、gyoの1回目のループが終わった地点では、migi= 4、gyo= 33で、
次にRange("F" & migi).Value = goukeiをした後、migi=5となり、migiの1回目のループが終わり、
2回目のループは、migi=5、gyo=4から始まるのだと確認しました。
何だか、すごく手間のかかることをしていますね(^_^;)
この投稿には、1件の返信があります。  投稿日時: 2015年02月08日 20時13分15秒
投稿ID: 1089 受講生さんの投稿
こんにちは。
最初に自分だけでやってみた時は、数列を使わずに解きました。


End Sub
Sub list()
Dim title
Dim gyo
title = 1

    For gyo = 1 To 10
        Range("C" & gyo).Value = Range("A" & title).Value & Range("A" & title + 1).Value
        title = title + 3
    Next

End Sub

やはり、文系的な発想ですね…。
数列を使った方が、同じ動きをするプログラムでも、行数が少なく、スッキリしたものができますね。
勉強になりました。
ありがとうございます。
この投稿には、3件の返信があります。  投稿日時: 2015年02月05日 16時41分53秒
投稿ID: 1088 ゲストさんの投稿
これまで何とか自分で解けていますが、動画の解答と比べると原始的な発想なので勉強になります。
18回目まで行ったら、第9回からもう一度復習します^^
この投稿には、3件の返信があります。  投稿日時: 2015年02月05日 07時46分46秒
投稿ID: 1082 watanbe daichiさんの投稿
いつもありがとうございます。
3回くらい書いてみるとなんとなく、形が見えてきました。
変数は、使用する数と場所を要注意だと解りました。
このバランスで、いろんな事もシンプルに考えることができました。
この投稿には、1件の返信があります。  投稿日時: 2015年02月02日 04時02分42秒
投稿ID: 1081 ゲストさんの投稿
前回の動画の知識も使いつつ、簡素にIfThenElseを使って自分で書いてから動画を見るとやはり学ぶところがありました.゚+.(o´∀`o)゚+.゚
この投稿には、1件の返信があります。  投稿日時: 2015年02月01日 18時35分54秒
投稿ID: 1077 ゲストさんの投稿
これまで練習問題は自力で書けていましたが、内心「If Then Else End Ifってもっと簡素に書けないかな」と思っていたので、
今回の動画はとても参考になりました☆└(゚∀゚└))((┘゚∀゚)┘
この投稿には、1件の返信があります。  投稿日時: 2015年01月31日 20時45分59秒
投稿ID: 1062 watanbe daichiさんの投稿
そうか、数列とか高校生でやった内容も応用できますね!!
本ばっかり読んでやっていた時は、その内容が唯一の答えのように感じてしまいますね。
何事も自分で試していくことが大事ですね。

”いくつかサンプルを試してみる”が団子の中味を決める大切なステップだと感じました☆
ありがとうございました。
この投稿には、1件の返信があります。  投稿日時: 2015年01月25日 00時03分50秒
投稿ID: 1061 井上 聡さんの投稿
質問 以下のコードの場合は、(A)が2だと最初に" . "ピリオドがつきます。3だと消えます。なぜでしょうか。
Sub risuto()
Dim hidari
Dim migi
Dim tantou
migi = 1
For hidari = 2 To 27
If Range("A" & hidari - 1).Value <> Range("A" & hidari).Value Then
migi = migi + 1
tantou = " "
End If
Range("E" & migi).Value = Range("A" & hidari).Value
Range("F" & migi).Value = Range("B" & hidari).Value
tantou = tantou & "." & Range("C" & hidari).Value & "担当"
Range("G" & migi).Value = Mid(tantou, 2)(A)
Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2015年01月24日 19時23分32秒
投稿ID: 1060 ゲストさんの投稿
おはようございます、あゆむです。

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

うまくいったのでこれからはまず自分で手順書を書いてからマクロを書き始めるようにします♪
結果から逆順にたどればいいんですよね(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 [こ]. 加工する (⇒団子完成)
この投稿には、3件の返信があります。  投稿日時: 2015年01月24日 15時47分45秒
投稿ID: 1059 ゲストさんの投稿
01:20あたりの、vbeに直接「平成2年...」と書くと年号が出ることに驚きましたo┤*´Д`*├o
Excelって賢いですね。

でも私のvbeには出ません(*ノД`*) excel 2010では非対応の機能ですか?
この投稿には、2件の返信があります。  投稿日時: 2015年01月24日 14時36分49秒
投稿ID: 1057 ゲストさんの投稿
小川先生、こんばんは。
キーボードの音がよく入っていたおかげで、小川先生のタイピングスピードがどれだけ速いかが実感できましたヾ(*≧∀≦*)ノ

私もタイピングスピードが上がるように練習していきますo(`・д・´)o
この投稿には、1件の返信があります。  投稿日時: 2015年01月24日 05時08分16秒
投稿ID: 1029 watanbe daichiさんの投稿
初めてリストの作り方を見させていただきました。こうやって作るんですね…。
左から右へのリストアップは、業務でも多いので、とてもありがたいです。これを応用していくと別シートからも参照できますか?Worksheets("Sheet1")みたいに使う事もできそうだと思いました。
migi=5、migi=migi+1のコードも、言われるだけでは良く分からなかったのですが、実際に動作に合わせて作ってみることで確認させていただきました。
ありがとうございます。
この投稿には、1件の返信があります。  投稿日時: 2015年01月14日 05時37分01秒
投稿ID: 1023 山本 茂生さんの投稿
小川先生

 以下のように、変数を設定して、コードを作りましたが、
全体的な概念として、変数の数は、抑える方にした方が良いでしょうか。
 ご教示よろしくお願いします。

Sub guru()

    Dim shozoku
    Dim guru_no
    Dim gyo
    
    For gyo = 2 To 11
        shozoku = Range("B" & gyo)
        guru_no = InStr(shozoku, "都島")
        If guru_no > 0 Then
            Range("J" & gyo) = "都島グループです"
        End If
    Next
        
End Sub

この投稿には、4件の返信があります。  投稿日時: 2015年01月13日 21時15分16秒
投稿ID: 1021 山本 茂生さんの投稿
小川先生

 1問目は、最初、下のように、作りました。
 動画で、先に、①行Noを特定 して、後で、②該当のセル(J列)
に、ピンポイントで入れる、
という、お団子2個 作ることが、勉強になりました。

[Sub takai()]
[]
[ Dim dekai]
[ dekai = 0]
[  Dim gyo]
[   For gyo = 2 To 11]
[   If dekai < Range("G" & gyo) Then]
[ dekai = Range("G" & gyo).Value]
[    Range("J" & gyo) = "最高点です"]
[    Range("j2:H" & gyo - 1) = ""]
[ ]
[    End If]
[ ]
[ Next]
[ ]
[/End Sub]
この投稿には、3件の返信があります。  投稿日時: 2015年01月13日 18時54分49秒
投稿ID: 1014 井上 聡さんの投稿
Sub siharairisuto()
Dim migi
Dim goukei
Dim hidari
Dim konrui
Dim sourui
For hidari = 4 To 9
goukei = 0
For migi = 4 To 10
If Range("I" & migi).Value = Range("B" & hidari).Value Then
goukei = goukei + Range("J" & migi).Value
'End If 'これが正解(A)
'Next 'これが正解(B)
Range("D" & hidari).Value = goukei
Range("E" & hidari).Value = Range("C" & hidari).Value + goukei
End If '条件が合致していると、End Ifは関係なくfor Next内を進む。(C)
'条件が合致していないとEnd If外に進む。
konrui = konrui + goukei
sourui = sourui + Range("E" & hidari).Value
Next(D)
Next
Range("D10").Value = konrui
Range("E10").Value = sourui
End Sub
すいません、コピーを張り付けることができるなら今後そうします。質問の意味が自分でも不明です。
End ifが(C)の位置だとてっきりIfにもどるものと思って言いました。
If then end ifは条件が一致すると常にそのまま進むものであるのでしょうか。
If thenだけでend if を使用しない構文(多分?)の場合とはどのように使い分けるのでしょうか。
この投稿には、1件の返信があります。  投稿日時: 2015年01月12日 03時59分36秒
投稿ID: 1009 井上 聡さんの投稿

動画11のend ifの位置について質問です。以下のプログラムは先生通りです。
(A)の位置が正解ですが、条件が一致した場合、(B)の位置の場合end ifに関係なく次の行に進みます。end if までで一区切りになって ifにもどりません。なぜでしょうか。?
sub countkobetu()
dim kobetu()
dim migi
dim hida
dim konrui
dim sourui
for hida =4 to 9
kobetu=0
for migi=4 to 10
if range("I" & migi).value=range("B"& hida).value then
kobetsu=kobetu+range("J"&migi).value
end if (A)
next
range("D" & hida).value=kobetsu
range("E"& hida).value=range("C"&hida).value+kobetu
(B)
konrui=kobetu+konrui
sourui=range("E"&hida).value+sourui
next
range("D10").value=konrui
range("E10").value=sourui
end sub

この投稿には、2件の返信があります。  投稿日時: 2015年01月10日 22時20分53秒
投稿ID: 940 唐沢俊孝さんの投稿
小川先生

フォローアップkiso6の問題の動画を見る前に フォローアップkiso4の内容を利用して マクロを以下書いてみました。
結果は同じでしたが、
Range("列名" & 変数×3−2).Value のfor next構文の方がシンプルで
書く時間も半分で済みますね!
勉強になりました。

Sub kiso6no1()
Dim ketugou
Dim gyo
gyo = 1
For ketugou = 1 To 28
If Range("A" & ketugou).Value <> "" And Range("A" & ketugou + 1).Value <> "" Then
Range("C" & gyo).Value = Range("A" & ketugou).Value & Range("A" & ketugou + 1).Value
gyo = gyo + 1
Else
End If
Next

End Sub
この投稿には、1件の返信があります。  投稿日時: 2014年12月14日 10時36分59秒
投稿ID: 934 井上 聡さんの投稿
test
投稿日時: 2014年12月06日 04時47分06秒
投稿ID: 924 井上 聡さんの投稿
Sub hindo() '全く駄目です。単純に変数を3つ作成し、3回ループしてみました。
Dim siso
Dim count
Dim gyou
Dim kanpyou
Dim nomimono
For gyou = 4 To 33
siso = Range("C" & gyou).Value
If siso = "しそ巻き無料" Then
count = count + 1
End If
Range("F4").Value = count
Next
Dim count1
For gyou = 4 To 33
siso = Range("C" & gyou).Value
If kanpyou = "かんぴょう巻き無料" Then
count1 = count1 + 1
End If
Range("F5").Value = count1
Next
Dim count2
For gyou = 4 To 33
siso = Range("C" & gyou).Value
If nomimono = "飲み物無料" Then
count2 = count2 + 1
End If
Range("F6").Value = count2
Next

End Sub
なぜ変数は、最初のFor~Nextの中でしかカウントされないのでしょうか。
カウントされない理由はなぜですか。?
この投稿には、3件の返信があります。  投稿日時: 2014年12月04日 00時58分20秒
投稿ID: 915 唐沢俊孝さんの投稿
小川先生

もう一つ質問です。
動画のmondai1の回答 03のマクロ(以下)ですが、
dim gyo の後にAs Long と書かれています。
これは何か教えてください。

Sub kaitou03()
Dim gyo As Long
For gyo = 2 To 11
If Range("C" & gyo).Value > 100 Then
Range("A" & gyo).Value = "○"
Else
Range("A" & gyo).Value = "×"
End If
Next
End Sub
この投稿には、1件の返信があります。  投稿日時: 2014年11月30日 22時59分14秒
投稿ID: 914 唐沢俊孝さんの投稿
小川先生

別の質問です。
IF文で日付をの曜日が日曜日ならセルの色を赤にする といったマクロを以下書いたつもりでしたが、
小人ちゃんが動きませんでした。
エクセルにはあらかじめA3に201/11/30(日)と表記しています。
この表記は セルの書式→ユーザー定義 で yyyy/mm/dd(aaa) と設定し、A3には11/30 と打ち込みました。
やはり書式の(aaa)は曜日の文字として認識されないのでしょうか。

Sub dinichiro()

  If InStr(Range("A3").Value, "日") > 0 Then
Range("A3:F3").Interior.Color = vbRed

End If
End Sub

仕事がらスケジュールを作成することが多く、土日祝はセル色を変えています。
現在は力技(ネット上で紹介されている条件付き書式で実施。祝日は、名前の定義で祝日のみを打ち込んだ日付を範囲選択し、これを条件付き書式で利用)ですが、
関数が複雑に入っているとファイルが重く、開くのに時間がかかったり、開かず強制終了が起こったりで困っています。
ちなみに現在のエクセルにはB列(B3~B100あたり)にMID("月火水木金土日",WEEKDAY(A3,2),1)の数式を入れて曜日を表記し、これを先ほどの条件付き書式で色つけしています。マクロも似たようなやり方になるのでしょうか(こちらもデータの型でしょうか)。
この投稿には、1件の返信があります。  投稿日時: 2014年11月30日 12時16分55秒
投稿ID: 902 唐沢俊孝さんの投稿
小川先生

先生が動画でおっしゃっていたハナコのステップが呪文のように頭に出てきて(この動画の刷り込みは本当に感謝です!)、
私も口「箱(for next文,if文)をつくる。home shift ↓↓↓、tabでずらして切り取って、貼り付ける。あとは加工して終わり!」と言いながら
全くその通りにマクロが書けました。このおかげで、迷いなく、手が止まって考えることなくスラスラと!さらに小人ちゃんが動いてくれるので、
何度書いてもやみつきになりそうです!

Enshu00100_Basic.xls のmondai1でわからないことありましたので、ご指導お願いいたします。

質問1:
C8とC10をテンキーのマイナスで打ち込み「-」と表記しますと、以下のマクロではA8とA10に「○」と記入されます。 
このマクロは数値に対しての条件であるから、数値を除く文字が入ると誤作動を起こすと考えてよろしいでしょうか。

以下は動画でも開設された回答です。
Sub mondai1()
Dim ten
For ten = 2 To 11
If Range("C" & ten).Value > 100 Then
Range("A" & ten).Value = "○"
Else
Range("A" & ten).Value = "×"
End If
Next
End Sub

Enshu00100_Basic.xlsのC列の書式設定は「通貨」で、C8とC10は「‐」表示されており、セルの書式設定で確認するとだと0と打ち込まれていました。
マクロは100以下の数値と認識し、正確に×と記入されました。

私は自分の練習用エクセルファイルにこの設問と似た感じのレイアウトをつくり、設問の表記を真似たつもりでしたが、C8とC10はテンキーのマイナスを打ち込み「-」と表記しました。
このときのセルの書式設定は標準でした、この条件で上記のマクロで実行しましたところマクロは100より大きいと認識し、A8とA10に○と記入されました。
C8とC10を空欄にしますとA8とA10ともに×と記入されました。セルの書式を「通貨」に変えて同様に確認しましたところ同様のことが起こりました。
ちなみに数値でない文字を入れると、すべてこのようになることを確認しました。

質問2:
エクセル知識がない私のような人間は元データに「0」をテンキー「-」と記入してしまうケースはあると思います。
(書式設定で¥を表記しているのに、打ち込み担当が一時変わって¥を書く人がいるかもしれない。)
そのミスをも防ぐマクロをif文に(C1~C11のセルの値が数値なら上記のif文を実行する、そうでなければ(文字列なら)C1~C11のセルの値に”入力ミス"と記入する)
といったマクロをかければと思いましたが、書けませんでした。こういったものは発展でのお話になりますでしょうか。これまでの基礎編が理解できていれば
対応できそうなマクロであればご教授お願いいたします。
(Len関数を組合せてうまくできないか考えましたが、数値もカウントしてしまいますので私では対応できませんでした)



この投稿には、3件の返信があります。  投稿日時: 2014年11月25日 10時28分10秒
投稿ID: 808 野村昭雄さんの投稿
別のシートから情報を取ってくるのは、良く仕事でもあるので、今回の問題も良かったです。
この投稿には、1件の返信があります。  投稿日時: 2014年10月14日 05時09分19秒
投稿ID: 807 野村昭雄さんの投稿
2つの表を操作する処理として、for next文を2つ記入するのかと思いましたが、入力側をfor next文で、出力側はカウンターに+1していくこと。とても良い問題だと思います。
この投稿には、1件の返信があります。  投稿日時: 2014年10月14日 04時37分37秒
投稿ID: 786 野村昭雄さんの投稿
楽しいです。
ifの入れ子は、ifとend ifで指定した方が、分かりやすいと思いますが、いかがでしょうか。
この投稿には、1件の返信があります。  投稿日時: 2014年10月06日 08時58分32秒
投稿ID: 785 野村昭雄さんの投稿
かなり慣れて来て、自分でマクロが作れるようになり、かなり嬉しいです。
この投稿には、1件の返信があります。  投稿日時: 2014年10月06日 08時20分23秒
投稿ID: 783 野村昭雄さんの投稿
for next構文とif文が書けるようになると、マクロで作成するものの範囲が広がった感じです。
作成方法がハナコでやると簡単に作成出来て良いですね。
この投稿には、1件の返信があります。  投稿日時: 2014年10月06日 04時30分37秒
投稿ID: 772 浜口 智之さんの投稿
途中から、どんどん楽しくなり、気がついたら最後まで一気にたどり着いてしまいました。
ゲームをやっていて時間を忘れてしまうような、あの感じです。
今までの回で、書いていく中で、色々試して失敗しましたが、その失敗の方法が今回使えたりと、たくさん失敗する意義を感じる最終回でした。
今の頭の状態で、もう一度、第一回目から、新たな発見と知識の定着のため、マクロを書いてみようと思います。
発展編でもお世話になると思いますが、よろしくお願いします。
基礎編の分かりやすい動画解説、ありがとうございました。
この投稿には、1件の返信があります。  投稿日時: 2014年10月05日 04時13分14秒
投稿ID: 768 浜口 智之さんの投稿
for next と数列の組み合わせ面白いですね。
組み合わせて色々できる幅が広がるのは楽しいです。
引き続きよろしくお願いします。
この投稿には、1件の返信があります。  投稿日時: 2014年10月02日 23時08分32秒
投稿ID: 765 浜口 智之さんの投稿
今回はテストをこまめにして、上手くいかなかったら、原因を考えてって感じで
自力で考えながら書き上げることができました。
前回つまずいて変数の考え方を理解できたので、今回はそんなには苦労しなかったです。
引き続き楽しんで進めていきたいと思います。
この投稿には、1件の返信があります。  投稿日時: 2014年10月02日 07時33分51秒
投稿ID: 764 受講生さんの投稿
小川先生
今回は区切り文字が「/」しかなかったため、以下のように作ってみました。

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
この投稿には、3件の返信があります。  投稿日時: 2014年10月02日 06時13分32秒
投稿ID: 763 受講生さんの投稿
小川先生
このケースでは、VLOOKUP関数を呼び出すことでもできますが、自分で仕組みを作った方が応用範囲が広いと思いました。
この仕組みを使えば、同一検索値で複数データを表示することも可能ですね(関数で同じことをやろうとし、苦労したことがあります)。
どちらもできるようになり、その場に応じて使い分けていきたいと思います。
この投稿には、1件の返信があります。  投稿日時: 2014年10月02日 06時03分44秒
投稿ID: 761 浜口 智之さんの投稿
今回は前回に比べて難しかったです。
まず考えましたが、変数の使い方が分からず、解説動画を見ました。
見たら「なるほどー!!」って感じです。特にmigi=migi+1の役割に!
配置する場所も重要なんですね。パズルのようで楽しいです。
この投稿には、1件の返信があります。  投稿日時: 2014年10月01日 08時09分08秒
投稿ID: 760 浜口 智之さんの投稿
前回の2で昭和、平成に加え、明治、大正もあったらどうなるか考える寄り道をしたので今回はすんなり、書けました。
ただ、楽に書く努力は足りてなかったので、これからその努力をしていきたいです。
後半の select case 楽しそうですね。発展編にたどり着けるように楽しんで進んでいきます。
引き続きよろしくお願いします。
この投稿には、1件の返信があります。  投稿日時: 2014年10月01日 01時00分16秒
投稿ID: 759 浜口 智之さんの投稿
ハナコのステップ以前、団子を作る段階が難しいですね。
西暦変換はググって計算式を見つけて、マクロに書き込みました。
2問目はなんとなく、こんな感じかなと思って試したらできてしまった感じです。
引き続き楽しんでいきたいと思います。
この投稿には、1件の返信があります。  投稿日時: 2014年10月01日 00時28分00秒
投稿ID: 755 退会ユーザさんの投稿
ifとifを組み合わせる方法について理解が深まりました。
意外に書けるものだなと楽しい気分になりました!
この投稿には、1件の返信があります。  投稿日時: 2014年09月30日 08時58分43秒
投稿ID: 754 浜口 智之さんの投稿
「ハナコ」ステップの確認、またIF文についての理解ができました。
今回の課題は、IF文の理解がまだ完全ではなく、先に動画をみて、その後に
その手順を自分で再現してみるというステップで学習してみました。
次回からは、まず、課題に挑んでみたいと思います。
発展編講座をうけられるスタート地点に到達できるように
引き続き学習進めていきたいと思います。
よろしくお願いします。
この投稿には、1件の返信があります。  投稿日時: 2014年09月30日 08時19分17秒
投稿ID: 753 退会ユーザさんの投稿
if文のイメージが掴めてきました。
この投稿には、1件の返信があります。  投稿日時: 2014年09月30日 08時19分15秒
投稿ID: 747 受講生さんの投稿
小川先生
問題3をFor ~ Eachを使って書いてみました。
変数MaxはRange型の方が良かったのでしょうか?
また、このような問題の場合は、For ~ NextとCellsを使ってネストさせるより、For ~ Eachを使った方がいいのでしょうか?
その他、修正点がありましたら教えて下さい。

Sub mondai3_For_Each()
Dim rng As Range, Max As Single, r As Long, c As Long
For Each rng In Range("C6:H33")
If Max < rng.Value Then
Max = rng.Value
r = rng.Row
c = rng.Column
End If
Next rng
Cells(4, "K").Value = Cells(r, 2).Value
Cells(4, "L").Value = Cells(5, c).Value
Cells(4, "M").Value = Cells(r, c).Value
End Sub
この投稿には、5件の返信があります。  投稿日時: 2014年09月28日 19時14分51秒
投稿ID: 742 森谷 大樹さんの投稿
小川先生こんばんは。森谷大樹(モリヤダイキ)です。

先日はお忙しい中わざわざお電話を下さり、ありがとうございました。

まさか小川先生とお話できるとは思ってもいませんでした。
舞い上がって勝手な要望ばかり言ってしまいました。大変失礼しました。

先日も申し上げましたが、基礎動画視聴による勉強は今のところ順調です。
今日は基礎編フォローアップ動画第3回を視聴しつつキーを叩いていました。

ハナコのステップは(よっぽどのイージーミスをやらかさなければ)スムーズに正解にたどり着ける方法なので、
(いい意味で)強い衝撃を受けました。
今までプログラミングに対して抱いていた、苦手意識のようなものが少し軽くなった感じがします。

達人養成塾のオンライン講座を受講する以前に、
ExcelVBAの本(分かりやすいと評価が高い本です)を何冊か購入して独学したものの、挫折してしまっていたので、
小川先生の丁寧かつ分かりやすい説明はとてもありがたいです。
本を買う前に、最初から小川先生の講座に申し込んでいれば…、という後悔があります。

小川先生のExcelVBA講座は、オンライン講座、DVD講座ともに一つ一つ確実に学習し、
最終的には外部連携講座までマスターしていきたいです。

Web連携講座のオンライン化については、先日確認しました。非常に魅力的な講座だと思いますので、
今取り組んでいる基礎編フォローアップ動画で学習した後に「発展篇1」に(順番通りに)進むか、正直とても迷います。

先日小川先生からお話していただいたことを思い返すと、なおさらWeb連携講座への興味が強くなるところですが…、

「発展篇1」の項目の、
「For Next構文、If文だけでなく、より高度な構造文も状況によって使い分けられるようになる。」
「自動記録機能で作ったマクロを自由に編集できるようになる。」
「for each構文、do loop構文、select case構文 with ステートメント」
「組み立てのノウハウ ハンガリアン記法 より高度な抽象概念を活用できる、より簡単なマクロの書き方のパターン(アルゴリズム)」

このあたりを読んでいるとワクワクしてきますね。
「マクロを書くのが楽しくて仕方がない。」
このレベルに行けたならいいなぁと思います。

来月は勉強時間を多く取れそうなので、基礎編フォローアップ動画をすべて学習し終わった後に、
次の講座を(どちらを受講するかよく思案してから)申し込んで受講していきます。
今後ともよろしくお願いします。
この投稿には、1件の返信があります。  投稿日時: 2014年09月26日 07時58分23秒
投稿ID: 741 受講生さんの投稿
小川先生

>>あと、上級DVDで紹介している「配列」を使うと以下のとおり。
>>出力部分については考えてみてください。
とのことでしたので、一部修正し、出力部分を追加して書いてみました。
修正箇所があれば教えて下さい。

Sub hairetu()
Dim gyo As Long
Dim goukei(2) As Long
goukei(0) = 0
goukei(1) = 0
goukei(2) = 0
For gyo = 4 To 33
Select Case Range("C" & gyo).Value
  Case Range("E4").Value
  goukei(0) = goukei(0) + 1
  Case Range("E5").Value
  goukei(1) = goukei(1) + 1
  Case Range("E6").Value
  goukei(2) = goukei(2) + 1
End Select
Next
For gyo = 4 To 6
Cells(gyo, "F").Value = goukei(gyo - 4)
Next
End Sub
この投稿には、5件の返信があります。  投稿日時: 2014年09月25日 06時32分26秒
投稿ID: 725 受講生さんの投稿
小川先生
フォローアップ動画が閲覧できるようになりましたので、再開しました(それまではEnshuフォルダを先にやっていました)。
コメント欄で時折マインドマップの説明が記載されていますが、ダウンロードした資料とページ数が違います(ページが
少なくなったような感じです)。ただ、該当するページは見つけられました。
当時のコメント投稿時とは、マインドマップも修正されているということでしょうか?
この投稿には、4件の返信があります。  投稿日時: 2014年09月21日 20時11分03秒
投稿ID: 665 古澤卓さんの投稿
学生時代プログラミングの授業でVBAを少しやりました。ただその時は全く分からずただプログラミングは難しいものなのだっていう印象しか残りませんでした。
まだ基本的なことしかやってませんが、プログラミングって結構やれるではないかと感じるようになり、もっと色んなことができるようになりたいと思うようになりました。
ありがとうございました。次の発展編でもよろしくお願いします。
この投稿には、1件の返信があります。  投稿日時: 2014年09月01日 07時09分12秒
投稿ID: 510 受講生さんの投稿
ひとりPCの前で、ぶつぶつ呪文を唱えています。
だいぶ慣れてきた!!
この投稿には、1件の返信があります。  投稿日時: 2014年08月20日 06時28分36秒
投稿ID: 486 角野崇雄さんの投稿
小川先生

お世話になっております。

今やっとフォロー動画をすべて終了致しました。
最後の方はなかなか考えさせられました。面白かったです。

発展編1に移ろうと思います。
引き続きよろしくお願い致します。
この投稿には、1件の返信があります。  投稿日時: 2014年08月14日 23時21分31秒
投稿ID: 468 明石 照伸さんの投稿
お世話になります。

本日ようやく動画解説を見終わる
ことができました。

解説もありましたように最後の設問の
For~Nextの最初と最後の書き込みに
手間取ったのですが、以下のような
回答を作成していましたが、

これに冠する小川さんの解説は、また
しても(^^;自分では思いつかないような
手順というかアプローチの仕方でしたので
非常に勉強になりました。

最終問題ですので全体を総括させて
いただきますと、

知らないうちに非常に短期間に業務でも
マクロを活用できるようになりましたので
非常に投資効果の高いセミナーだったと
いえるかと思います。

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


発展編とのギャップがどのくらいあるかは
わかりませんが、何度か復習した後、できるだけ
はやく発展編も受講させていただきたいと
思っております。

(実は、密かに、Excelマクロによる分析を
多用する業務に移ることを目論んでおりますので(^^、)
もっともっと勉強していきたいと思います。

今後ともよろしくお願いいたします。


---
Sub kakikae()
Dim migi
migi = 2

Dim kuiki
kuiki = 0

Dim hida
For hida = 2 To 27
If Range("a" & hida).Value <> Range("a" & hida - 1).Value Then
Range("e" & migi).Value = Range("a" & hida).Value
Range("f" & migi).Value = Range("b" & hida).Value
kuiki = Range("c" & hida).Value & "地区"
migi = migi + 1

Else
kuiki = kuiki & "," & Range("c" & hida).Value & "地区"

End If

Range("g" & migi - 1).Value = kuiki

Next


End Sub
---
この投稿には、1件の返信があります。  投稿日時: 2014年08月11日 05時09分21秒
投稿ID: 453 明石 照伸さんの投稿
お世話になります。

以下のようにコードを考えたて、一応
回答できたつもりですが、

動画解説の観点が全然違っていたので
驚きました。

上下の行で値が変化したことをトリガーに
処理を行うやり方というのは、以前の問題でも
私自身使っていますが、

今回のようにシンプルに変わったらインクリメントする、
のように、利用できるとは考えていませんでした。(^^;

考えてみれば元々の表にそういう作成者の
ロジックというか意図があってそのように
レコードが並べられているのですから、
それを素直に読み取っているとも言えますね。

毎回勉強になります。(^^


=====

Sub furiwake()
Dim gyo

For gyo = 4 To 19

’ <A B Cの判定>
If Mid(Range("d" & gyo).Value, 3) = "A" Then
Range("b" & gyo).Value = 1

ElseIf Mid(Range("d" & gyo).Value, 3) = "B" Then
Range("b" & gyo).Value = 2

ElseIf Mid(Range("d" & gyo).Value, 3) = "C" Then
Range("b" & gyo).Value = 3

End If

’<F列の値からもってくる >
Range("c" & gyo).Value = Mid(Range("f" & gyo).Value, 2, 1)
Next


End Sub

=====
この投稿には、1件の返信があります。  投稿日時: 2014年08月10日 00時46分43秒
投稿ID: 452 明石 照伸さんの投稿

お世話になります。

今回、最後の問題でM行×N列ということに
目が言ってしまい、表現を調べて以下の
ような回答を作りました。

しかしながら、小川さんの過去コメント
(持っている道具だけで何とかする・・・的な(^^; )
に触発されて、セミナーで出てきた内容だけで
(上記のM行×N列の考え方は同じで)作り直していました。

が、動画解説を見て、更に考えさせられ
ました。

一列単位の処理を拡張することで解ける問題から
発展させていくので無理がないと思いました。

最終的にやっていることは残業時間のセル同士を
比較するという意味では同じですが、

そこに至るプロセスで、

自分のできることから出発することで
一見手も足も出ない問題に対しても何らかの取っ掛かり
が見えてくるかもしれないと思いました。


=====
Sub zangyo2()
Dim zangyo
Dim shimei
Dim tsuki
Dim gyo
Dim retsu
zangyo = 0

For retsu = 2 To 7

For gyo = 6 To 33

If Range("a5").Offset(gyo, retsu).Value > zangyo Then
zangyo = Range("a5").Offset(gyo, retsu).Value
shimei = Range("a5").Offset(gyo, 1).Value
tsuki = Range("a5").Offset(0, retsu).Value
End If
Next

Next

Range("k4").Value = shimei
Range("l4").Value = tsuki
Range("m4").Value = zangyo



End Sub

=====
この投稿には、1件の返信があります。  投稿日時: 2014年08月09日 21時39分34秒
投稿ID: 443 明石 照伸さんの投稿
お世話になります。

問題をここまでやらせていただいて
ようやくFor~Nextがわかってきた
ようです。

まず最初考えた回答が、以下のような
ベタベタのコードでした。

---回答(1)ここから---------------------------------------------
Sub shiharai()

Dim kekkon
kekkon = 0

Dim shussan
shussan = 0

Dim seijin
seijin = 0

Dim reizen
reizen = 0

Dim mimai
mimai = 0

Dim jimu
jimu = 0

Dim gyo
For gyo = 4 To 9
If Range("i" & gyo).Value = "結婚祝い" Then
kekkon = kekkon + Range("j" & gyo).Value

ElseIf Range("i" & gyo).Value = "出産祝い" Then
shussan = shussan + Range("j" & gyo).Value

ElseIf Range("i" & gyo).Value = "成人祝い" Then
seijin = seijin + Range("j" & gyo).Value

ElseIf Range("i" & gyo).Value = "御霊前" Then
reizen = reizen + Range("j" & gyo).Value

ElseIf Range("i" & gyo).Value = "お見舞い" Then
mimai = mimai + Range("j" & gyo).Value

Else
jimu = jimu + Range("j" & gyo).Value

End If
Next



Range("d4").Value = kekkon
Range("e4").Value = kekkon + Range("c4").Value

Range("d5").Value = shussan
Range("e5").Value = shussan + Range("c5").Value

Range("d6").Value = seijin
Range("e6").Value = seijin + Range("c6").Value

Range("d7").Value = reizen
Range("e7").Value = reizen + Range("c7").Value

Range("d8").Value = mimai
Range("e8").Value = mimai + Range("c8").Value

Range("d9").Value = jimu
Range("e9").Value = jimu + Range("c9").Value


Dim kongetu
kongetsu = 0

Dim ruikei
ruikei = 0

For gyo = 4 To 9
kongetsu = kongetsu + Range("d" & gyo).Value
ruikei = ruikei + Range("e" & gyo).Value
Next

Range("d10").Value = kongetsu
Range("e10").Value = ruikei


End Sub
---回答(1)ここまで------------------------------------------------

この回答を書いた後で、もっとすっきりまとめられることに
気づき書いたのが以下になります。

---回答(2)ここから------------------------------------------------

Sub shiwake2()
Dim keihi
Dim gyo_hidari
Dim gyo_migi

For gyo_hidari = 4 To 9
keihi = 0

For gyo_migi = 4 To 9

If Range("i" & gyo_migi).Value = Range("b" & gyo_hidari).Value Then
keihi = keihi + Range("j" & gyo_migi).Value

ElseIf Range("h" & gyo_migi).Value = Range("b" & gyo_hidari).Value Then
keihi = keihi + Range("j" & gyo_migi).Value

End If

Next

Range("d" & gyo_hidari).Value = keihi
Range("e" & gyo_hidari).Value = Range("c" & gyo_hidari).Value + Range("d" & gyo_hidari).Value
Range("d10").Value = Range("d10").Value + Range("d" & gyo_hidari).Value
Range("e10").Value = Range("e10").Value + Range("e" & gyo_hidari).Value
Next



End Sub
---回答(2)ここまで------------------------------------------------

この考え方になじんでからは、実務で新旧の表を比較して差分を抽出したり、
といった、今までVLOOKUP関数で行っていたような複数の表にまたがる処理が
マクロでできるようになりました。

一回限りの書き捨てのマクロでデータ整合性チェックをしたり
ができるので相当作業時間を短縮できていると思います。なれると関数より楽に、
かつ、もっと複雑な処理ができますね。もっとマクロを学ぶことで仕事自体が
劇的に変わっていく予感がしています。(^^
この投稿には、1件の返信があります。  投稿日時: 2014年08月06日 08時11分39秒
投稿ID: 430 受講生さんの投稿
前回から間をあけてしまったら、かなり忘れてしまいました。やっぱり間をあけずに継続してやるのが一番と痛感しました。
この投稿には、1件の返信があります。  投稿日時: 2014年08月04日 07時03分02秒
投稿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] ここまで===
この投稿には、3件の返信があります。  投稿日時: 2014年07月24日 08時49分46秒
投稿ID: 409 明石 照伸さんの投稿
お世話になります。今回もすごく勉強になりました。この例題のやり方自体はすぐに思いつきましたが、解説がすごいと思いました。(正直いって解説を見て初めて問題のヒントの真意ががわかりました。(^^; )・・・ひとつの表にまず着目してその範囲での条件をクリアして、それから次のステップに取り組む、というのはなるほどと思いました。・・・実務の問題解決で(マクロに限らず様々なレベルの問題で)袋小路に入ってしまっていると感じているときはこのような考え方で取り組みたいと思いました。引き続きよろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2014年07月21日 20時28分35秒
投稿ID: 407 受講生さんの投稿
1週間後のメールありがとうございました。遅まきながら今日から復習に取り組みます。
ハナコのステップを忘れていましたが、すぐ思い出せました。
今日からまたよろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2014年07月21日 14時11分08秒
投稿ID: 405 明石 照伸さんの投稿
なるほど。条件が多数ある場合の”書き順”にちょっと悩んだのでとても参考になりました。
この投稿には、1件の返信があります。  投稿日時: 2014年07月21日 04時36分15秒
投稿ID: 404 明石 照伸さんの投稿
お世話になります。遅まきながらやっと1回目の動画を通して見ることができました。
この作成順(はなこ)はもっとも単純なところから積み上げていくので、わかりやすいだけでなく、出戻りが無く、確実ではやい手順だと感じました。身体に染み込ませるように練習したいと思います。
引き続きよろしくお願いいたします。
この投稿には、1件の返信があります。  投稿日時: 2014年07月20日 22時41分34秒
投稿ID: 402 受講生さんの投稿
これ、VLOOKUPですね。関数使うよりカンターン♪♪
12回目で、理解に少々時間がかかったのですが、
解ると、こっちは、すんごい簡単ですね。再生せずに出来ました。
面倒で嫌だった定型業務がまた1つ解決しました^^
この投稿には、5件の返信があります。  投稿日時: 2014年07月20日 07時14分50秒
投稿ID: 380 受講生さんの投稿
問題8の駅名で訳が分からなくなったのですが、下記のコードで上手くいきました。ほっ
やり方を、色々工夫出来る所が楽しいですね。
Range("I" & gyo).Value = Mid(eki, sen + 1, toho - sen - 1)
この投稿には、1件の返信があります。  投稿日時: 2014年07月14日 04時29分19秒
投稿ID: 166 受講生さんの投稿
キーボード入力についての質問です。

range("A6").value 等のマクロ記入の際、("A6")入力時の指の動き及び順番はどうされてますか?

動画で、小川さんの入力を観ている限り、左から順に、 ("A6)と入力されていると思います。

[shift]と組み合わせて入力する文字や記号の場合、[shift]ではない方の入力は、
[shift]を押す手と逆の手を使う。という教えを守ると下記のようになると思います。

[shift]が右に行ったり左に行ったりして、なかなかスムーズに入力ができません。
これは練習しかないのでしょうか?

どうしても、マクロ記入時は、切っても切り離せない入力パターンなので、
ご質問させていただきました。

説明が分かりにくかったら申し訳ございません。

ご教授のほどよろしくお願いいたします。

■以下、私の指の動き及び順番です。
1、左手 小指 [shift]  + 右手 中指   [8] で  (
2、右手 小指 [shift]  + 左手 薬指   [2]  で  "
3、右手 小指 [shift]  + 左手 小指   [A]  で  A
4、左手 小指 [shift]  + 右手 人指指 [6]  で  6
5、右手 小指 [shift]  + 左手 薬指   [2]  で  "
6、左手 小指 [shift]  + 右手 薬指   [9]  で  )
この投稿には、3件の返信があります。  投稿日時: 2014年05月13日 06時24分20秒
投稿ID: 164 小林 秀之さんの投稿
”細分化”、”小さな作業から大きな作業”ということは、意識しながら作業していますが、条件が多い問題文を細分化して、細分化したうちのどれを起点に展開していったらよいか?で、つまづいてしまいました。解説動画を観てすっきりしましたが、再度、自分でマクロを書いてみるとやはりつまづきました。繰り返し練習します。
この投稿には、1件の返信があります。  投稿日時: 2014年05月12日 04時02分08秒
投稿ID: 146 薄木洋祐さんの投稿
改めて復習して勉強になります。
この投稿には、1件の返信があります。  投稿日時: 2014年04月30日 21時53分39秒
投稿ID: 123 薄木洋祐さんの投稿
いい復習になりました!
この投稿には、1件の返信があります。  投稿日時: 2014年03月23日 23時56分29秒
投稿ID: 122 薄木洋祐さんの投稿
すべてif構文で書いたのでelse if も使いこなしたいと思います。
この投稿には、1件の返信があります。  投稿日時: 2014年03月20日 06時38分32秒
投稿ID: 121 薄木洋祐さんの投稿
複雑そうに見えるマクロももとをたどれば基本が重なったものだとりかいできます。
この投稿には、1件の返信があります。  投稿日時: 2014年03月19日 11時13分11秒
投稿ID: 120 薄木洋祐さんの投稿
小川さんの速さについていけるようにショートカットキーも使ってマウスを使わないようにしていきます。
この投稿には、1件の返信があります。  投稿日時: 2014年03月18日 10時00分21秒
投稿ID: 65 受講生さんの投稿
動画を見てスーっと入っていくような感じがして楽しくなってきました。
この投稿には、1件の返信があります。  投稿日時: 2014年01月18日 19時44分37秒
投稿ID: 58 受講生さんの投稿
ほかの動画を学習してから、再度動画を見たら、前回気づかなかった発見がありました。
昨日みた動画のマクロを書いてみて、できてから今日の同がを見るようにしています。
昨日の内容でもまださらさらかけませんが、手ごたえを感じています。
この投稿には、1件の返信があります。  投稿日時: 2014年01月12日 19時04分47秒
投稿ID: 57 受講生さんの投稿
かなりマウスを使わずにできるようになってきましたがまだ、切れが悪くて気になります。

Home Sift 下 下 下 箱を作って切り取って タブでずらして 切り取って 貼り付ける
をするときに意識して声に出してみようと思います。
この投稿には、1件の返信があります。  投稿日時: 2014年01月11日 16時05分42秒
投稿ID: 56 受講生さんの投稿
ダウンロード資料の中に問題文を入れた方が、繰り返しの勉強もしやすいと思います。
この投稿には、1件の返信があります。  投稿日時: 2014年01月10日 07時32分19秒
投稿ID: 55 受講生さんの投稿
復習するたびに少しずつ力がついてきていることを感じます。
この投稿には、1件の返信があります。  投稿日時: 2014年01月09日 17時33分41秒

この講座のメモ用フォームを表示する/非表示にする

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

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

この講座の利用方法

講座を利用するには、以下の2つの方法があります。

  • この講座を含む定額コースに参加する
  • この講座を購入する

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

この講座は、以下の定額コースに含まれています。