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

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

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

解説

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

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

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

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

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

10304 : 小川慶一の回答 (2018-08-02 10:42:38)

受講生 さん:

お楽しみいただけているようでなによりです。

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

転記元と転記先で列の順番が同じであればそれでもよいです。
でも、そうとは限りませんね。

> ※マックを使っていて、マクロをタイプする時、全て大文字入力になります。

僕はMacは詳しくはないのですが、「mac 大文字 小文字 切り替え」で検索したら以下の記事等がでてきました。
https://techacademy.jp/magazine/9881

こういう方法では解決できない類の問題が起きている、ということでしょうか。


> 知っていることを応用しながら、問題を解くのがパズルみたいで楽しいです。
>
> 下記のマクロは、私が書いたマクロなのですが、解説動画を見て、
> 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
> ーーーーーーー


10296 : 受講生さんのコメント (2018-07-31 20:38:31)

知っていることを応用しながら、問題を解くのがパズルみたいで楽しいです。

下記のマクロは、私が書いたマクロなのですが、解説動画を見て、
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
ーーーーーーー


10036 : 小川慶一の回答 (2018-05-23 09:27:08)

ゲストさん:

ガンガンスキルアップしてくださいませ!!

> ありがとうございます!
> コードの意味は深く考えず、最終行なのでROWで下からぶつかったところ・・・?と想像しつつ、とりあえず活用させていただきます。
>
> ここまでの動画の練習問題も日々の業務に本当に役に立っていて、毎日進化中の自分、数週間前の私とは明らかに違って、魔法にかかっているみたいです。
> 発展編へ向けて頑張ります☆


10033 : ゲストさんのコメント (2018-05-22 21:17:29)

ありがとうございます!
コードの意味は深く考えず、最終行なのでROWで下からぶつかったところ・・・?と想像しつつ、とりあえず活用させていただきます。

ここまでの動画の練習問題も日々の業務に本当に役に立っていて、毎日進化中の自分、数週間前の私とは明らかに違って、魔法にかかっているみたいです。
発展編へ向けて頑張ります☆


10018 : 小川慶一の回答 (2018-05-21 17:42:29)

ゲストさん:

お仕事で技が劇的にキマった、といことでしょうか (*´ω`*)

最終行を調べる方法は、パクり用のコードを示す分には簡単です。

たとえば、A列でデータの入っている一番最後の行の行番号を調べるには、以下を使ってください。

    Dim hen As Long
Dim mx As Long
mx = Range("A" & Rows.Count).End(xlUp).Row '[*]
 
For hen = 3 To mx
    
Next


ただし、[*]の行のコードの意味を解説するには手間がかかります。
解説は発展編1までお待ちください。今は、とりあえずうのみにして活用されると良いかと思います (*´ω`*)



> マクロを学んでみようと思ったきっかけの一つがこれでした。
> 元データを一つ一つ検索ソフトに打ち込んで、半日くらいかけて行うこともしばしばあって何とかならないかと思い始めて数か月になります。
>
> 先日、職場でプログラムを書き上げて一気に終わった仕事を見て、あまりの気分の良さに定時でさっさと帰ってきました♪
>
> 毎日の業務なので、検索値の最終行を自動で判断してくれるようなマクロを書けるようになると、さらに楽になるのに。。。と淡い期待を抱いています。
>
> 一週間先の自分が楽しみな毎日です。


10004 : ゲストさんのコメント (2018-05-18 21:50:54)

マクロを学んでみようと思ったきっかけの一つがこれでした。
元データを一つ一つ検索ソフトに打ち込んで、半日くらいかけて行うこともしばしばあって何とかならないかと思い始めて数か月になります。

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

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

一週間先の自分が楽しみな毎日です。


9990 : 小川慶一の回答 (2018-05-16 08:12:58)

morimotoさん:

よかったですね。
この問題ができるようになれば、演習前半での重要テーマはほぼ終わったようなものです。

> きたないコードになりましたが

ということですので、きれいなコードになるまで何度も練習してください。
ここをスラスラできるようになっておくかどうかで、あとの演習の負担がぜんぜん違います。


> きたないコードになりましたができてやり応えありました。ヒントがあったので助かりました。動画4にあったgoukei=goukei+1 の記憶が行かせました。しばしばたとえばcnt=cnt+1といったコードを見かけますが
> 何か数えるときはこの式がでるように記憶します。


9978 : morimotoさんのコメント (2018-05-16 02:02:47)

きたないコードになりましたができてやり応えありました。ヒントがあったので助かりました。動画4にあったgoukei=goukei+1 の記憶が行かせました。しばしばたとえばcnt=cnt+1といったコードを見かけますが
何か数えるときはこの式がでるように記憶します。


9285 : 小川慶一の回答 (2017-12-24 14:58:59)

受講生 さん:

エクセルマクロなんて、料理といっしょですので。
土鍋でゴハン炊いた経験があるなら、マスターは確実でしょう☆

ひきつづきお楽しみください (^^*


> 元講師の方とは、短時間の会話でこちらの意図が伝わらなかっただろうこと

僕は現場にはいなかったので、詳細はさすがに分かりません。
gooskaさんがそう感じられたのならば、そうだったのでしょう。


ちなみに、スキルの示し方には、二通りがあります。
[1] 「すでに高いスキルを有している」ということを示すこと
[2] 「伸び率が高い」というこう示すこと

エクセルマクロより分かりやすい例として、「TOEICテストなら」ということで示してみます。
すると、 [1], [2]それぞれ、こんな感じです。

[1] 私のスコアは、900点です。
[2] 私のスコアは、たった3ヶ月の独学で、550点から780点にあがりました

今のgooskaさんの位置からなら、[2]を狙うべきでしょう。

あと、仕事上の問題を解決する力があるのか?ということも重要ですね。
実務で必要なのは、「炊飯器のような適切な道具がない限り解決できません」という道具依存な力ではありません。
「いざとなったら、炊飯器や電子レンジ、オーブンのような適切な道具がなかったとしても、鍋ひとつでなんでも解決します」というサバイバル能力です。

「ハマれば3時間かかっていた仕事を1分で解決できるようになる。でも、ハマらないとさっぱり解決できない」というより、「3時間かかっていた仕事が10分で終わるようになる」という課題解決を2つできる人のほうが仕事では成果を出せるということです。

何が言いたいのか?というと。

>私が知りたいのは ワークシート関数をそのままVBAで実行する方法と 今回のように、別の手法で同じ結果を得る方法と 処理速度としては、どうなのか? ということです。


上記のような疑問は、今のgooskaさんには、あまり意味がないです。
「3時間が5分」を「3時間が1分」にしたとしても、4分の改善にしかなりません。(*)
「3時間が5分」になったら、別の「3時間が5分」な結果を出すべきです。そうすれば、2時間55分相当の改善になりますから。
であれば gokei = gokei + range("E" & c).value を worksheetfunciton.sumif にすることの追求より、別の演習問題をどんどん解いて別の「3時間が5分」な結果を出すためのレパートリーを増やしにいったほうが得策です。

(*)むしろ、こんなことばかりしていると、実務に役立たないことばかり追求するエクセルオタクになってしまって、かえって職場でのチャンスを逸します。


9280 : 受講生さんのコメント (2017-12-24 10:14:07)

小川先生、こんにちは。

先日は、コメントと詳しい解説をありがとうございました。

基礎編では、覚える知識を絞って、マクロを動かす仕組みをマスターする
ことに重点がおかれていたんですね。

確かに、一度基本食材でカレーを作る方法をひととおり覚えたら、あとは
食材を変えたり、途中からアレンジして別メニューを作るのは
さほど難しくありませんものね。

炊飯器でボタンスイッチ一つ押すご飯の炊き方を覚えたところで
なんの応用も効きませんが、土鍋の炊き方をマスターすれば、
どうやってご飯が炊けるのかが分かりますよね。
(実際炊飯器が壊れて、土鍋で炊くようになってから、
美味しい炊き方が分かった実体験があるのです)

元講師の方とは、短時間の会話でこちらの意図が
伝わらなかっただろうことと、今度VBAを使った仕事をすることを
伝えてあったので、私のレベルを推し量る意図で、
「VBAで関数をそのまま使う方法がある」知識をもっているかどうか
試したんでしょうね。

小川先生のおっしゃるとおり、私は今のレベルでの演習が楽しいことを
共感してほしかったのですけれどね(;´・ω・)

でもちょっと悔しかったので、今はまだ習っていない知識を
いずれきちんと身につけたいと決心しました。

前にすこし独学していた時は、最初にドカンと知識が来て、
それをいくら覚えても、どう使ったらよいかの部分が抜けていて、
全然前に進めなかったです。

最小限の骨組でマクロを使いこなせるようになってから、
知識や応用力を徐々に増やしていく小川先生の手法で、
これからも頑張りたいと思います(*´▽`*)

gooska


9263 : 小川慶一の回答 (2017-12-22 07:42:24)

受講生 さん:

> 小川先生、こんにちは。
> 前回のしそ巻きカウントで十分に復習を積みましたので
> 今回の問題は、どちらも完璧でした(≧▽≦)
> 条件を満たす時だけカウント変数に1が加算される
> という仕組みが、解いていて心地よく楽しいです。

v(^^*


> ちょっと脇道なのですが、
> 職場に、MS officeの元セミナー講師だった人がいて、VBAにも詳しいというので、
> 関数をそのままVBAに書く方法があるよ、と
> 話をさえぎられてしまいました(;´・ω・)

ああ、いますね。そういう方。

基礎編は、シンプルな道具の組み合わせでしっかり成果を出せるようになることを目標に作った講座です。
というのは、以下の動画でも説明していますが...。基本の手順をしっかりマスターするまでは、道具ばかりいろいろ手渡しても意味がないので。

たくさん道具を渡しても使い分けられなければ意味がないですし、「専用の道具がないと仕事にならない」という状況は望ましくありません。
たとえ手間でも手元の材料だけで仕事できる人のほうが実務では役に立ちます。

あと、そもそも、初心者は、頭に入れられる情報量が少ないです。
にもかかわらず別解をいろいろ渡してしまうと、もっと大事なことが頭から抜けてしまったりもします。なるべく使いまわしの効くマスターキーだけ渡すのが正解です。

以下も参考にしてください。

エクセルマクロ研修の選び方2-カレーライスとパソコン1
https://online.pc5bai.com/movie/index/10/891

その先生の話は、料理に例えれば、「自分で火をおこして土鍋でゴハンを炊く方法を学んでいる」と言ったら、「炊飯器を使えばボタンひとつでゴハンが炊けるよ」と言われたようなものです。
でも、それでは、「お米を炊く」ということの本質はつかめません。
鍋でお米を炊くことを通じて煮物なり汁物なりの作り方を学ぶ準備ができたかもしれないのに、お米を炊くのに炊飯器を使わせたら、そういう学びの機会を奪ってしまいます。

ウチの演習で言えば、「条件に該当したときにカウンターの値を増やす」という「しそ巻きカウント」の演習は、以下にそのまま応用可能です。
[a] SumIf関数のような条件に一致するものの合計の値を算出するとき
[b] 転記先のセルを指定するとき

> 前回のしそ巻きカウントで十分に復習を積みましたので
> 今回の問題は、どちらも完璧でした(≧▽≦)

という受講生さんのコメントが、まさに、この順序で学ぶことでうまく行っているということを示しています。

しそ巻きカウントの演習の代わりに worksheetfunction.sumif を渡していたら、[a]は応用でできるかもしれないけど、[b]はムリですね。
鍋でお米を炊く経験の代わりに炊飯器を渡すとは、そういうことです。
あと、 worksheetfunction.sumif では表現しきれないようなややこしい条件になったときに太刀打ちできません。料理に例えれば、炊飯器ではどうしようもない料理を作りたいとき、自分で解決する能力があるかどうか?です。
「専用の道具がないからムリ」なんて言ってたら、仕事にならないですね ヾ(´ー`;)ノ

一般的に、相手の学習状況を鑑みずに自分の知識を晒す人は、以下のどれか(あるいは複数)です。
[1] 知識を渡せば教育者の役割は終わり、と思っている。
[2] 「基本の手順をしっかりマスターするまでは、道具ばかりいろいろ手渡しても意味がない。という以上に、害悪」ということをそもそも知らない。
[3] 相手が何の話をしているのか、その本質的な部分を感じ取ってない(したい話の本質は、「演習が楽しい」だったはずです)。
[4] 単に知識自慢したい。相手が知らないだろう情報を示すことで、優位性を示したい。

相手の技量次第では、そういう道具を渡すのが適切なタイミング、ということもありえますが...。
「COUNTIF関数をVBAで書く演習を解いていてなかなか楽しい」と言っている人には、まだ早いかと。

> 今のところ、私が知りたいのはワークシート関数をそのままVBAで実行する方法と今回のように、別の手法で同じ結果を得る方法と処理速度としては、どうなのか?ということです。

WorksheetFunctionは発展編1で扱います。
使いこなせる人には、確かに、状況が整っていれば、便利です。でも、発展編1で学ぶということはどういうことか?というと...。そんなにシンプルな道具ではないということです。ちょっとクセもあります。

「処理速度としては、どうなのか?」ということは、今は知る必要はないかとは思います。
が、もしご興味あれは、試してみてください。僕に聞くよりそのほうが早いです。


9259 : 受講生さんのコメント (2017-12-21 21:34:28)

小川先生、こんにちは。
前回のしそ巻きカウントで十分に復習を積みましたので
今回の問題は、どちらも完璧でした(≧▽≦)
条件を満たす時だけカウント変数に1が加算される
という仕組みが、解いていて心地よく楽しいです。

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

小川先生の見解をざっくりお話いただけましたら
幸いです。
gooska


9205 : 小川慶一の回答 (2017-12-12 08:46:52)

吉川 裕子さん:

おはようございます。

> migi=migi+1を記述する場所を最初間違えてしまいました。(endifの後)
> マクロ実行してすぐに気づきましたが・・・

すぐに実行してすぐに気づく方についてはもちろん問題ないですw

この課題については、最近、別の説明の仕方をできることに気づきました。
いずれ、その新しい説明での動画も up したいと思っています。

> migi=migi+1を記述する場所を最初間違えてしまいました。(endifの後)
> マクロ実行してすぐに気づきましたが・・・
> ケアレスミスですが、こういう小さいミスが後々大変になるので、
> ハコをきちんと意識したいと思いました。


9201 : ガラパゴスタディー吉川の回答 (2017-12-11 17:12:35)

migi=migi+1を記述する場所を最初間違えてしまいました。(endifの後)
マクロ実行してすぐに気づきましたが・・・
ケアレスミスですが、こういう小さいミスが後々大変になるので、
ハコをきちんと意識したいと思いました。


8848 : 小川慶一の回答 (2017-09-10 12:01:18)

受講生 さん:

シンプルに言うと、以下のスキルの組み合わせです。
・変数の値を自分で変更する
・変数の値を変えるタイミングを自在に指定できる

> リストアップするには、
> ・変数を二つ作る
> ・右のスタートする場所を指定する
> ・左のリストアップする範囲を指定する
> ・If文で条件付けをして、条件に合うなら右の表に転記する。
>  条件にあてはまらないならElseで次のデータを見に行く
> ・右のリストアップを順番にしていくためには、migi=migi+1!
>
> めちゃくちゃシンプルでいて、かつ確実に動くマクロ!かっこいい!


8844 : 受講生さんのコメント (2017-09-06 21:53:40)

リストアップするには、
・変数を二つ作る
・右のスタートする場所を指定する
・左のリストアップする範囲を指定する
・If文で条件付けをして、条件に合うなら右の表に転記する。
 条件にあてはまらないならElseで次のデータを見に行く
・右のリストアップを順番にしていくためには、migi=migi+1!

めちゃくちゃシンプルでいて、かつ確実に動くマクロ!かっこいい!


6101 : 小川慶一の回答 (2016-03-24 13:07:44)

受講生 さん:

>慣れていく過程で、おぼろげだった理屈の理解も、意外と早くついてくるような気がします。
>高校時代にこういう勉強の仕方をしていたらなぁ・・・と残念です(笑)

まさに。
理系科目の学び方というのは、こういうものです。
基本となる考え方をしっかり学べる良問をくり返せば、応用力は勝手に身につきます。


6100 : 小川慶一の回答 (2016-03-24 13:04:54)

受講生 さん:

>変数=変数+1と、初期値の設定は繰り返すうちに分かってきました。

ここが分かればまずはステキ!です。


6052 : 受講生さんのコメント (2016-03-23 22:16:41)

あれから何度も繰り返し、飽きてからは過去の問題の表を使って、同様の問題を想定し解いてみたら、
だんだん慣れてきました。パターンを完全に覚えるまで、とにかく繰り返せばいいのですね。
慣れていく過程で、おぼろげだった理屈の理解も、意外と早くついてくるような気がします。
高校時代にこういう勉強の仕方をしていたらなぁ・・・と残念です(笑)
まだまだですが、練習あるのみ gooska


6050 : 受講生さんのコメント (2016-03-23 20:12:30)

動画を見てから何も見ずに書こうとすると行き詰まりました。
変数が2つあり、入れ子もあると難しいですね。変数の指定を逆にしてしまったりと、何度もやり直しました。
身体で覚えるまで丸暗記のつもりで、、、ということなので、繰り返し練習しますね。
変数=変数+1と、初期値の設定は繰り返すうちに分かってきました。
gooska


5471 : 小川慶一の回答 (2015-12-18 08:09:40)

受講生 さん:

おはようございます。

> 実際実務でも使用しました。まだ慣れていないため、マクロを作るのに時間がかかってしまった状況でしたが、この講座を受講したおかげで、マクロだけでなく、すべての仕事面で、効率的にしごとができたと思います。

よかったです☆


> また、質問のご返答の中で、自分の弱点を指摘してもらうなんてことは、職場の同僚からはなかなか言ってもらえるような年齢でもなくなってきているため、非常に貴重でした。
> %365も毎日楽しみにしています。

こちらの面でもお役に立てたようでよかったです☆
メールマガジンも、お役立てください。

>最後に質問です。これから特打ちを購入しようと思います。自宅のキーボードと職場のキーボードが違うのですが、練習するなら職場と同じキーボードで練習しようと思います。好きにしろといわれそうですが、どう思われますか。

まずは、その両方の場合のメリット・デメリットを書き出してみてください。


5469 : 受講生さんのコメント (2015-12-18 05:39:01)

小川先生
本日で基礎講座閲覧期間が終了します。この4か月間、実際実務でも使用しました。まだ慣れていないため、マクロを作るのに時間がかかってしまった状況でしたが、この講座を受講したおかげで、マクロだけでなく、すべての仕事面で、効率的にしごとができたと思います。また、質問のご返答の中で、自分の弱点を指摘してもらうなんてことは、職場の同僚からはなかなか言ってもらえるような年齢でもなくなってきているため、非常に貴重でした。%365も毎日楽しみにしています。
ありがとうございました。
最後に質問です。これから特打ちを購入しようと思います。自宅のキーボードと職場のキーボードが違うのですが、練習するなら職場と同じキーボードで練習しようと思います。好きにしろといわれそうですが、どう思われますか。


5193 : 小川慶一の回答 (2015-10-27 21:45:14)

受講生 さん:

はい、こういうのはパターンなので、まる覚えしてしまってください。
まる覚えすべきパターンは実はそんなにたくさんありません。僕が数えるかぎり、7つ。全18回のフォロー講座では、その基本パターンとアレンジ技の代表的なものを網羅しています。
このパターンをマスターしてしまえば、For Next構文とIf文だけでもかなりの仕事が片付くようになります。


>動画を見るまで「変数2つ?」のヒントがさっぱりわからず、全く思い付きませんでした。
>こういうパターンは利用頻度が多そうなので、動画を見ないでもすらすら書けるよう、頑張って覚えたいと思います。
>


5186 : 受講生さんのコメント (2015-10-23 17:05:35)

動画を見るまで「変数2つ?」のヒントがさっぱりわからず、全く思い付きませんでした。
こういうパターンは利用頻度が多そうなので、動画を見ないでもすらすら書けるよう、頑張って覚えたいと思います。


4612 : 小川慶一の回答 (2015-06-29 12:03:43)

虫谷吉男 さん:

うまくいかないなら、僕がお伝えしたやりかたをまず鵜呑みにして覚えてください。

> あの場所にこの入力は発想がつかず、応用が利かないのではないか心配です。

パターンはそんなにありません。
無駄なことはいっさい教えていませんので、必要な知識と思ってあきらめて、身体が勝手にやってくれるまで練習してください。

以下の質問には、僕のお伝えしたやり方でできるようになってから改めて質問していただければ、回答します。
でも、そのころには、この質問自体バカバカしく感じられることでしょうが。



>質問です。
>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


4599 : 虫谷吉男さんのコメント (2015-06-27 22:04:46)

質問です。
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


3615 : 小川慶一の回答 (2015-01-15 12:26:19)

watanbe daichi さん:

こういうのは、パターンですね。
さいきんもっと簡単な解説の動画を作ったのですが、まだ編集完了していません。
それが編集完了したら、またお見せいたします。理解が深まれば、とも思っています。

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




>初めてリストの作り方を見させていただきました。こうやって作るんですね…。
>左から右へのリストアップは、業務でも多いので、とてもありがたいです。これを応用していくと別シートからも参照できますか?Worksheets("Sheet1")みたいに使う事もできそうだと思いました。
>migi=5、migi=migi+1のコードも、言われるだけでは良く分からなかったのですが、実際に動作に合わせて作ってみることで確認させていただきました。
>ありがとうございます。


3608 : watanbe daichiさんのコメント (2015-01-13 20:37:01)

初めてリストの作り方を見させていただきました。こうやって作るんですね…。
左から右へのリストアップは、業務でも多いので、とてもありがたいです。これを応用していくと別シートからも参照できますか?Worksheets("Sheet1")みたいに使う事もできそうだと思いました。
migi=5、migi=migi+1のコードも、言われるだけでは良く分からなかったのですが、実際に動作に合わせて作ってみることで確認させていただきました。
ありがとうございます。


2717 : 小川慶一の回答 (2014-10-13 20:52:11)

野村昭雄 さん:

ひとつの表から別の表に転記するときの超基本形です。

>2つの表を操作する処理として、for next文を2つ記入するのかと思いましたが、入力側をfor next文で、出力側はカウンターに+1していくこと。とても良い問題だと思います。


2710 : 野村昭雄さんのコメント (2014-10-13 19:37:37)

2つの表を操作する処理として、for next文を2つ記入するのかと思いましたが、入力側をfor next文で、出力側はカウンターに+1していくこと。とても良い問題だと思います。


2604 : 小川慶一の回答 (2014-10-01 04:28:43)

浜口 智之 さん:

これを自力で書けるようになれば、発展編1の受講はぜんぜんOKです。
パズル感覚で楽しんでいただければと☆



>今回は前回に比べて難しかったです。
>まず考えましたが、変数の使い方が分からず、解説動画を見ました。
>見たら「なるほどー!!」って感じです。特にmigi=migi+1の役割に!
>配置する場所も重要なんですね。パズルのようで楽しいです。


2600 : 浜口 智之さんのコメント (2014-09-30 23:09:08)

今回は前回に比べて難しかったです。
まず考えましたが、変数の使い方が分からず、解説動画を見ました。
見たら「なるほどー!!」って感じです。特にmigi=migi+1の役割に!
配置する場所も重要なんですね。パズルのようで楽しいです。


1796 : 小川慶一の回答 (2014-07-21 11:44:13)

明石 照伸 さん:

ハナコのステップの真価が発揮されるのは、こういう仕事ですね。
nothing is paricularly hard if you divide it into small jobs. - henry ford

とはいえ、「どう分割するか」というところがセンスの分かれ目。
この動画で示した細分化のステップが極意です。

> 実務の問題解決で(マクロに限らず様々なレベルの問題で)袋小路に入ってしまっていると感じているときはこのような考え方で取り組みたいと思いました。

ご指摘のとおりです。
マクロで培える考え方には、リアルの世界での問題解決に応用できるものも多いです。

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



>お世話になります。今回もすごく勉強になりました。この例題のやり方自体はすぐに思いつきましたが、解説がすごいと思いました。(正直いって解説を見て初めて問題のヒントの真意ががわかりました。(^^; )・・・ひとつの表にまず着目してその範囲での条件をクリアして、それから次のステップに取り組む、というのはなるほどと思いました。・・・実務の問題解決で(マクロに限らず様々なレベルの問題で)袋小路に入ってしまっていると感じているときはこのような考え方で取り組みたいと思いました。引き続きよろしくお願いいたします。


1794 : 明石 照伸さんのコメント (2014-07-21 11:28:35)

お世話になります。今回もすごく勉強になりました。この例題のやり方自体はすぐに思いつきましたが、解説がすごいと思いました。(正直いって解説を見て初めて問題のヒントの真意ががわかりました。(^^; )・・・ひとつの表にまず着目してその範囲での条件をクリアして、それから次のステップに取り組む、というのはなるほどと思いました。・・・実務の問題解決で(マクロに限らず様々なレベルの問題で)袋小路に入ってしまっていると感じているときはこのような考え方で取り組みたいと思いました。引き続きよろしくお願いいたします。


1283 : 小川慶一の回答 (2014-05-20 14:18:45)

小林 秀之 さん:

とんでもありません。

おもしろい質問ありがとうございました。
ひきつづき、いつでも何でもご相談&ご質問ください。

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


1282 : 小林 秀之さんのコメント (2014-05-19 18:27:40)

小川慶一 さん:

モロッコの旅お疲れさまでした。

質問の件、ご回答ありがとうございます。
海外の僻地への旅ということで、ご回答頂けるまで
時間がかかるのは承知しておりましたので大丈夫です。(^^

入力の件、教えていただいた方法を試してみます。
入力しやすい方法を見つけて、入力スピードUPに努めます。(^^

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



>匿名 さん:
>
>すいません。回答漏れになっていました。
>海外の僻地からの投稿だったので、きっちり送信できなかったのかも。
>
>
>>動画で、小川さんの入力を観ている限り、左から順に、 ("A6)と入力されていると思います。
>>
>>[shift]と組み合わせて入力する文字や記号の場合、[shift]ではない方の入力は、
>>[shift]を押す手と逆の手を使う。という教えを守ると下記のようになると思います。>
>>[shift]が右に行ったり左に行ったりして、なかなかスムーズに入力ができません。
>>これは練習しかないのでしょうか?
>
>練習してできるようになることではあります。
>力業でできるようになってしまうのがよいかと。
>
>
>ですが、以下の方法でもよいかと思います。
>
>[1] range(""
>
>と書く
>
>[2] カーソルキー「←」を一度押す
>
>[3] A6
>
>と書く
>
>[4] カーソルキー「→」を一度押す
>
>[5] )
>
>と書く
>
>あるいは、以下も。
>
>[1] range
>
>と書く
>
>[2] ()
>
>と書く
>
>[3] カーソルキー「←」を一度押す
>
>[4] ""
>
>と書く
>
>[5] カーソルキー「←」を一度押す
>
>[6] A6
>
>と書く
>
>[7] End キーを一度押す
>
>
>
>お好みで好きな方法を採用していただければと (^^
>


1276 : 小川慶一の回答 (2014-05-18 00:30:26)

匿名 さん:

すいません。回答漏れになっていました。
海外の僻地からの投稿だったので、きっちり送信できなかったのかも。


>動画で、小川さんの入力を観ている限り、左から順に、 ("A6)と入力されていると思います。
>
>[shift]と組み合わせて入力する文字や記号の場合、[shift]ではない方の入力は、
>[shift]を押す手と逆の手を使う。という教えを守ると下記のようになると思います。>
>[shift]が右に行ったり左に行ったりして、なかなかスムーズに入力ができません。
>これは練習しかないのでしょうか?

練習してできるようになることではあります。
力業でできるようになってしまうのがよいかと。


ですが、以下の方法でもよいかと思います。

[1] range(""

と書く

[2] カーソルキー「←」を一度押す

[3] A6

と書く

[4] カーソルキー「→」を一度押す

[5] )

と書く

あるいは、以下も。

[1] range

と書く

[2] ()

と書く

[3] カーソルキー「←」を一度押す

[4] ""

と書く

[5] カーソルキー「←」を一度押す

[6] A6

と書く

[7] End キーを一度押す



お好みで好きな方法を採用していただければと (^^


1207 : 受講生さんのコメント (2014-05-12 21:24:20)

キーボード入力についての質問です。

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]  で  )


1148 : 小川慶一の回答 (2014-04-30 13:08:51)

薄木洋祐 さん:

もう発展編レベルなのにここに戻ってきて復習する、ということがすごい!
ひきつづき、お楽しみを。動画講座は、やり直すたびにまたいろいろ学べることがあるかと思います。

>改めて復習して勉強になります。


1147 : 薄木洋祐さんのコメント (2014-04-30 12:53:39)

改めて復習して勉強になります。


950 : 小川慶一の回答 (2014-01-13 08:15:07)

匿名さん:

OK。くり返し、何度も観て学んでください。

お題を観た瞬間に、僕がしている説明がすべて頭に浮かぶようになったら勝ちです。

>ほかの動画を学習してから、再度動画を見たら、前回気づかなかった発見がありました。
>昨日みた動画のマクロを書いてみて、できてから今日の同がを見るようにしています。
>昨日の内容でもまださらさらかけませんが、手ごたえを感じています。


949 : 受講生さんのコメント (2014-01-12 10:04:47)

ほかの動画を学習してから、再度動画を見たら、前回気づかなかった発見がありました。
昨日みた動画のマクロを書いてみて、できてから今日の同がを見るようにしています。
昨日の内容でもまださらさらかけませんが、手ごたえを感じています。


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

北嶋さん:

この回の課題は、おそらく唯一の難所かも。
というか、これが分かれば、あとはすべてどうにでもなります。(手間はかかるけど)

> コードを書き直すときにCtrl+Zは便利ですね。

発想力とかだけじゃなくて、手元も違います。というか、手元が変わると発想も変わりますので、手元もどんどん改善していってください。
この動画セミナーでの勉強が2週目になったころには、びっくりするくらいにすべてが変わっていると思います。


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

今回の課題は結構難しかったです。
たぶんヒントなしにはできなかったと思います。
何度か繰り返して体に染み込ませる必要がありますね。

コードを書き直すときにCtrl+Zは便利ですね。
今までの癖でついBackSpaceやらDelを押してしまうことがあるのですが、
場合によっては整形されてたのが崩れてしまったりします。
Ctrl+Zだとそんな心配はないですし、何より一瞬です。
意識しなくてもCtrl+Zが押せるようにショートカットも練習していこうと思います。


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

小俣さん:

基礎講座で、唯一、本編でキチンと説明できなくて気になっているところです。


> これまでの算数の世界から頭をなかなか切り替えられなくて、

迷ったら、基本に立ち返って。
「『イコール』は『~を○○にする』」と読み替えることです。

hida を、 hida + 1 にする

ということです。


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

これまでの算数の世界から頭をなかなか切り替えられなくて、
「If条件がFalseのときは変数をカウントアップさせずにループして、If条件がTrueのときにある処理をさせて、変数を1つカウントアップさせて、またループさせて・・・。」を納得するまでに時間がかかりました。

たった、この一行がすごい意味を持っていますね。
hida = hida + 1


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

初期には、正解にいたるまでの試行錯誤の過程がよい学びを与えてくれます。
いろいろいじって、「ああ、これだとこうだめなのか」と実感する機会を増やしてください!


792 : 受講生さんのコメント (2013-07-04 00:00:00)

Foe Next構文に対する
migi = 5
migi = migi + 1
の位置が重要なのがわかりました!


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

> 独習時は変数を同時に作って混乱していたのですが
> 1つづつしていけばラクなのがよくわかりました。

"nothing is particularly hard if you divide it into small jobs." - henry ford

てことです。混乱しそうになったらひとつひとつ手順を踏んで。


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

独習時は変数を同時に作って混乱していたのですが
1つづつしていけばラクなのがよくわかりました。


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

渋谷さん:

> 基礎編でも解説頂きました、
> 変数=変数 + 1
> が思いつきませんでした(泣)

はい、これがミソです。でも、新しいアイデアぽいのはこの動画までです。
あとは、ここまでに学んだことのくり返しになるはず。

> それにしても、先生が各受講者にこれほど丁寧に
> フォローアップをしてくださるセミナーに参加
> したことがなかったので、感激です。

ありがとうございます v(^^

> 私の最終目標は、1枚のシートにある月次の営業成績を
> 別の資料に書き出すという単純ですが、間違うと怒らる
> 作業がマクロで書けるようになることです。

今回の動画の内容でかなり実現に近づいているような。どうでしょう?


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

ミアケ(4/27,28受講)さん:

すごい!自力で別解を導けるというのは、相当のスキルの高さです。

> 今後他のところでも応用が利きそうで後から見直してわかりやすい気がします。

ですね。あと、処理が軽いです。(小人ちゃんの立場になって手間の多さを考えてみると分かります)

とはいえ、いただいたマクロでもよいですよ。どちらでもやれるようになってください☆


786 : 渋谷 文義さんのコメント (2013-05-04 00:01:00)

基礎編でも解説頂きました、
変数=変数 + 1
が思いつきませんでした(泣)

当日は覚えることがたくさんあり過ぎてまだ
消化しきれていないことがわかりました。

それにしても、先生が各受講者にこれほど丁寧に
フォローアップをしてくださるセミナーに参加
したことがなかったので、感激です。

私の最終目標は、1枚のシートにある月次の営業成績を
別の資料に書き出すという単純ですが、間違うと怒らる
作業がマクロで書けるようになることです。

まだそのレベルに達するには時間がかかると思いますので、
今後ともご指導の程よろしくお願い致します。


788 : ミアケ(4/27,28受講)さんのコメント (2013-05-04 00:00:00)

ただいま宮崎の実家に帰省中で、親戚と飲んだ後なのでボーッとしながら書いてます^^;

記載行指定で
「mig = mig +1」
と1行進めるという考えにならずに、発展編で学んだ以下を使って
?
1

togyo = Range("f1048576").End(xlUp).Row

と書きましたが、migi = migi +1の方が今後他のところでも応用が利きそうで後から見直してわかりやすい気がします。

あと、全部が全部変数を使おうとして頭が混乱しかけてました。
(頭の混乱は飲んでるからじゃありません。おそらく!)
全部が全部変数にしなくてもいいのですよね。

Sub zangyochekck2()
    Dim togyo
    Dim gyo
    Dim gyosu
    Dim gyosustart
    gyosu = Range("a1048576").End(xlUp).Row
    gyosustart = Range("a1").End(xlDown).Row + 1 '何行目から書くかを指定
    For gyo = gyosustart To gyosu
        If Range("c" & gyo).Value > 100 Then
            togyo = Range("f1048576").End(xlUp).Row + 1 '何行目に書くかを指定
            Range("f" & togyo).Value = Range("a" & gyo).Value
            Range("g" & togyo).Value = Range("b" & gyo).Value
            Range("h" & togyo).Value = Range("c" & gyo).Value
        End If
    Next
End Sub


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

土田さん、

> 目視・指差し・呼称確認ヨシ!!

いーですねー!


> 「条件を満たした時だけ変数が1つ増える」を表現するところです。

あー、これは、多少やっかいですね。考え方に慣れるまで、ちょっと手こずりますね (^^;


> 記入先の最初の行数の"5"を構文の外に置くことに気づくのに何回か試行しました。そして、"変数=変数+1"をどこに置くかですが、「条件を満たした時だけ変数が1つ増える」を踏まえて、If文もElseの前に置くことに気づきました。

とてもよいです。いろいろ試してください。
自分で試したことが、いちばん力になります。


> 「確認不足!→習った確認を実施できていない。→反省;;」と、他者でなく自己へと向く様になっている自分に気づきました。

ですね。
そして、その一方、仕組みを作る側も、分かりやすくて簡潔な仕組みを作ることが肝要です(←僕自身がそれをできていなかった、てことですが (^^; )

手順書を作る側としても手順書どおりに作業する側としても、どちらもの視点からの気づきも有効です。
どちらも、マクロのスキルに資するものがあります。


784 : 土田 信行さんのコメント (2013-05-02 00:01:00)

間違えてしまいました修正です。(すみません…^^;)

「条件を満たした時だけ変数が1つ増える」を踏まえて、【If文もElse以下】に置くことに気づきました。
上記の【】内の文章は「If文の"Else"の前」に修正して見てください。

ここで、マインドの気づき。
今までなら「コメント欄が狭いから見づらくて間違うんだ!」と、自分を棚に上げているところですが、「確認不足!→習った確認を実施できていない。→反省;;」と、他者でなく自己へと向く様になっている自分に気づきました。

目視・指差し・呼称確認ヨシ!!


783 : 土田 信行さんのコメント (2013-05-02 00:00:00)

今回はかなり悩みました。(1時間位…悩み過ぎかなぁ?)
詰まった点は2つ。
1つは、「Dim ○○ For ○○ …」を一つの構文と勘違いしていたことに気づくまで悩みました。「Dim ○○」は変数の宣言、「For ○○ ~ Next」は指定の数値まで繰り返す構文でセットになっているわけではなかったのす。(暗記練習でまとめて覚えていたので、勘違いしていました。^^;)
2つは、「条件を満たした時だけ変数が1つ増える」を表現するところです。ヒントはマインドマップに書いてありました。それをどこでどの様に使うかはとりあえずやってみてできました。(マインドマップ恐るべし。^w^)
記入先の最初の行数の"5"を構文の外に置くことに気づくのに何回か試行しました。そして、"変数=変数+1"をどこに置くかですが、「条件を満たした時だけ変数が1つ増える」を踏まえて、If文もElse以下に置くことに気づきました。
この時、If文にElseも空白で(何かに使えそうだなぁと、なんとなく)書いていたら、試しでマクロ動かした時に、小人ちゃん(黄色の部分)の動きを見ていたら気づきました。^^v

小川先生へ
いつもコメントを頂きありがとうございます。大変励みになったいます。


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

池本さん:

> お団子のif endの前にmigi=migi+1をいれるのが今日のポイントだとよくわかりました。

ポイントは、まさに、それです。


> 自力で何度も失敗した後だけにこのポイントがあまりにも簡単すぎて強烈な印象です!(^^)!だから忘れないと思います(^^)v

ですね。
自分でトライしてみることは、とても大切です。すぐれた解法を見たときの衝撃が違いすぎますから。

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


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

栗原さん:

おお、それは、相当にセンスよいですよ! ヾ(´ー`)ノ

> 変数の置く場所を逆にしてしまうという馬鹿な事をしてはまりましたが、

最初は、やりがちです。しかし、それも経験 (^_^;


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

こんにちは~(*^^*)♪

今日はヒントをみながらdまでできました。
自力でどうやったら右に該当情報を寄せていれられるか何回も試して、時間をおいて再度取り組んでみましたがわからなかったです。

動画解説で、お団子のif endの前にmigi=migi+1をいれるのが今日のポイントだとよくわかりました。自力で何度も失敗した後だけにこのポイントがあまりにも簡単すぎて強烈な印象です!(^^)!だから忘れないと思います(^^)v

動画をみた後に、問題1と問題2を最初から自力でヒントをみないでさらっとできました(^^)v

何回もやっているうちに変数ってすごいべんりだな~と思いました♪

day5も楽しみにしていま~す☆


779 : 栗原宏明さんのコメント (2013-04-03 00:00:00)

慣れてきたのか、今回のは変数を2つ使うというのにすぐ気がつきました。変数の置く場所を逆にしてしまうという馬鹿な事をしてはまりましたが、動画を見ることなく達成できました。


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

migi=migi+1

↑「migi を、 migi + 1 にする」ですね。
困ったら、日本語に読み下して、意味を考えます。

昔算数とか方程式とかでならった「イコール」とは違う意味の言葉です。
そこに意識を向けられるかがポイントな気も。


777 : 受講生さんのコメント (2013-03-17 00:00:00)

最初にmigi=migi+1の解答を見たときは、???と普通の算数的な思考回路しか持っていない脳みそが、説明を聞いても軽く拒否反応をおこしていました。
書いたマクロを見つつ、、F8を繰り返し押しつつ、エクセル画面を眺めていたら、どうやら脳みそは受け入れてくれたようでするっと腑に落ちました。むしろ、これって後から見たときにも何をしてるかわかりやすい!
久しぶりにここに戻って問題を解いてみましたが、難なくクリア。最初に悩んだ分、しっかり刷り込まれました。


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

サエさん:こんな抽象的な方法から思いつくとは。。何の言語の類推からですか?

For Each db In db.Rows

Next

は、すごくイヤだね。僕ならコレクションの指定とループ内で使う変数を同じものにしません。


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

小川 せんせい。 いつものように手直しお願いします。
私が、一番最初に思いついた方法がこれでした、、

Sub データベースの抽出copy_ks004()
    Dim db As Range
    Dim dst As Range
    Set db = Range("A8:C17")        'データベース範囲
    Set dst = Range("F4:H4")         '抽出先
     
 
   For Each db In db.Rows          'データベースを行のコレクションとして
    db.Select                               '作業工程を確認するためにselect
        If db.Cells(1, 3).Value > 100 Then
            Set dst = dst.Offset(1, 0)          '抽出先を一行下に移動
            db.Copy                                  '一レコードをコピー
            dst.PasteSpecial Paste:=xlPasteValuesAndNumberFormats   '値と数値の書式のみ
        End If
    Next
    Application.CutCopyMode = False
    Range("A1").Select

End Sub


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

高橋さん:

まずは、動いたようでよかったです。

そして、いただいた質問ですが、明らかに練習不足がうかがえます。
体験の不足している人には回答できない類の質問なので、今回はいただいたご質問には直接回答しません。

今回の動画よりもうちょい簡単(仕組みが原始的)な例題があるので、No.04はひとまず置いておき、先にそっち(基礎編動画No.10の[1])をやってみてください。

自分なりにトライしたら、動画解説を02:01まで観てみること。

そして、自分で同じマクロを書いてみてください。最低5回。
最後は、何も見ないで書けるようになること。

基礎編動画No.10の[1]を自力でできるようになったら、もう一度ここで質問を受けつけます。
それまでは、質問は、基礎編動画No.10の掲示板で受けつけます。


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

ありがとうございます。
もう一度書いたら動きました!
難しそうな感じなので、まだ動画を見ている途中です。。

Sub hako()
Dim migi
migi = 5
Dim gyo
For gyo = 8 To 17
If Range("C" & gyo).Value > 100 Then
Range("F" & migi).Value = Range("A" & gyo).Value
Range("G" & migi).Value = Range("B" & gyo).Value
Range("H" & migi).Value = Range("C" & gyo).Value
migi = migi + 1

End If
Next
End Sub


のマクロは、どうして
dim migi
for migi = migi+1
とならないのですか?
forって一体なんですか?
dimはmigiの名前を指しているように見えるので、今まで、forはdimの下にあったのでdimの意味を表す役割があるように解釈していました。
Nextもないのですが、このNextはどうしてないのでしょうか?
Nextはdim migiを終わらすものだと勝手に思っていたのですがnextの意味を教えてください(ノД`)


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

高橋さん:

念のため動作確認もしましたが。。ちゃんと書けています。
モジュール内の他の部分で、何か別の問題が起きているのかも。

もしも実行しようとしたときエラーメッセージが出たならば、そのメッセージ内容も記載してください!

まずは、サンプルデータをもう一度ダウンロードして、新規モジュールを追加。
そして、今回お送りいただいたマクロをこのページからコピー&ペーストしてみてください。
たぶん、それでうごくはず。


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

マクロがエクセルに反映されません。
助けてください。

Sub yoko()
Range("F5").Value = Range("A8").Value
Range("G5").Value = Range("B8").Value
Range("H5").Value = Range("C8").Value
End Sub


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

豊島さん:

順調そうでなにより。
この問題を理解して解けるようになったなら、とりあえず安心です。
(あとは、ひとりで勉強して進められそう)

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


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

最初、問題を読んだ時、全然分からなかったですが、ヒントを頼りに作業していると、不思議と分かって来ました。
特に、migi=migi+1(実際はmigiと言う変数を使わなかったですが、、)が閃いて、migi=5を試行錯誤しながら、for~nextの外に出したら、上手く行った時は感動しました。
やはり、for~next文はループなのですね!


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

山根さん:

> Dim s& は Dim s As Long
> ということですね。

です。
また、どうせなら「 & 」なら String であって欲しい、とかも思ったり(笑

> 全部覚えていれば記述には便利でしょうが、読みにくく直感的にわかりにくいですね。

全部覚えていても記述に不便かも(笑
脳のリソースは限られているので、それ暗記している間に別のこと覚えたほうがかしこいと思います。

「0xFF て値を暗記する代わりに vbRed っていう組み込み定数を覚えたほうが楽」というのに似ていますね。


766 : 山根信行さんのコメント (2013-01-24 00:01:00)

詳しい解説ありがとうございます。
型宣言文字は初めて伺いました。
全部覚えていれば記述には便利でしょうが、読みにくく直感的にわかりにくいですね。

Dim s& は Dim s As Long
ということですね。


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

山根さん:

あながち無駄ということはないです。

以下、基礎編はほとんどの受講生はプログラミングデビューの方が多いので説明していない事項です。
発展編受講生でも、読んですぐに分かる方は1/4いるかどうか、というお話です。
一般的な受講生の方は聞き流してください。


"A"&c
なら勝手に間をあけてくれますが、
s&c

だと、間を開けてくれません。(エラーになる)
以下、例。僕がイイタイコトを確認したい方は、VBEに貼りつけてみてください。

Sub renshu1()    Dim c    Dim s    Range("A"&c).Value = 3 '勝手に間が空く    Range(s&c).Value=5'勝手に間が空かず、エラーになるEnd Sub


ここで、新しい知識。
実は、変数宣言時、「型宣言文字」をつけることでデータ型を指定することができます。
(発展編でもお話していません。知らなくてもまったく困らないです)

型宣言文字の例:

Integer : %
Long : &
Single : !
Double : #
String : $
Currency :@

型宣言文字の使用例:

Sub renshu2()    Dim c& '長整数型    Dim s$ '文字列型    c& = 3    s$ = "F"    Range("A" & c&).Value = 3    Range(s$ & c&).Value = 5End Sub


Sub renshu1() に話を戻すと、 Range(s&c) は、コンパイラーから見たとき、 "s&" で長整数型の変数 s& とみなされます(だから、sと&の間を分離させようとしない)。

s&c であれば、二つの変数「s&」と「c」が演算子なしで羅列されている状態と解釈されるわけです。
ということで、変数2つが演算子なしで羅列されると解釈不能なので、構文エラーとみなされ、赤い表示になります。

明示的に s & c と分かち書きすれば、上記の問題は起こりません。

この問題は、演算子と型宣言文字の両方で使われている記号で起こります。(つまり、 「&」 ね。)
逆に言うと、 「+」 のような、算術演算子では登場するけれども型宣言文字としては使われない記号では生じません。

..と、いうことです。
上記のような事情なのですが、基礎編ではいちいち話している余裕もないので、セミナー本編では解説していません。
発展編では、データ型の分かる変数名にするテクニックとして、ハンガリアン記法のお話をしています。
型宣言文字の概念自体はおもしろいですが、VB以外の言語にも応用の利く思想でもないですし。


765 : 山根信行さんのコメント (2013-01-23 00:00:00)

この動画を見るまで
Range("C" & cnt).Value
といった変数を組み込んだ記述をするときに私はわざわざ
&の両端にスペースを入れていました。
ムダなことをしてたんですね。


764 : 小川慶一の回答 (2012-11-19 00:00:00)

佐藤さん:

> また、Nextがでてきたらforのところに戻るのか、と今まで機械的に書いていたことが少し理解できたように思えました。

慣れてきたところで改めて見ると、ものごとがまたよく見えることがありますね。

そういうことのくり返しで、スキルは強化されていくものとも思います。


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

> 屋代さん

複数シート間でデータ転記するときの基本パターンです。
しっかりマスターしてください!!


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

2週目変数を2つ使う事は覚えていたが、
dim migi
for migi= 5 to 100 としてしまい、ループ。
何度も見直したので、次回は大丈夫なはず。


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

何度も見たいと思います。
「慣れさえすれば、、」と思いました。


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

朝、問題だけ見て、あまりにも難しそうなので、一日ドキドキしながら過ごしました。
帰宅後、何度も何度も繰り返し動画を見て、やってみると出来ました!感動です!


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

今回はちょっと、戸惑いましたね。何度も動画を見て、理解を深める必要があると感じました。2つの変数というのがカギですね!!


1156 : 小川慶一の回答 (2012-10-12 12:48:00)

達人養成塾 小川です。

あー、もろもろ、いいんじゃないでしょうか。


> 行の長さと小数点表示の調整もマクロでやってみました。

ますます、いいですね!

変数宣言時のデータ型指定についは、発展編で扱います。
今の段階では、それほど気になさらなくてOKです。


1158 : 大椛輝志さんのコメント (2012-10-12 12:46:00)

達人養成塾 小川です。

> migi=migi+1 をIF文の最終行に仕込むことに気がついたからです。ただし、ヒントのおかげで。
> 動画の感想ではありませんが、ヒントが親切すぎるか、とも感じました。

まーでも、思いつく人とそうでない人がいますので。。 (^^

あと、まだ第4回くらいですと、体が操作を覚えていないことも多いので、
思考プロセスについては積極的に支援してあげないと、という感じですね (^^;


1157 : 受講生さんのコメント (2012-10-12 09:09:00)

4回目にして、初めて迷うことなく、スッとマクロが書けました。

migi=migi+1 をIF文の最終行に仕込むことに気がついたからです。ただし、ヒントのおかげで。

動画の感想ではありませんが、ヒントが親切すぎるか、とも感じました。

飽くまで個人的な感想です。

動画は、これまでどおり理解を助けてくれる内容で満足です!!


1155 : 受講生さんのコメント (2012-10-11 12:13:00)

Do while Loop 構文をヒントに



Sub rensyu1()

Dim cnt1

Dim cnt2

cnt2 = 5



For cnt1 = 8 To 17

If Range("C" & cnt1).Value > 100 Then

Range("F" & cnt2).Value = Range("A" & cnt1).Value

Range("G" & cnt2).Value = Range("B" & cnt1).Value

Range("H" & cnt2).Value = Range("C" & cnt1).Value

cnt2 = cnt2 + 1

End If

Next

End Sub



と書いて、うまくいきました。



Next と End Subの間に

Columns("F:F").ColumnWidth = 6

Columns("G:G").EntireColumn.AutoFit

Range("H5:H10").Select

Selection.NumberFormatLocal = "0.0_ "

を挿入し、行の長さと小数点表示の調整もマクロでやってみました。



変数について調べてみると 宣言の後に As Integer や As String などと書かれているものがあります。

こちらは発展編で触れる内容なのでしょうか?


1267 : 小川慶一の回答 (2012-08-30 10:06:00)

楽しんでクダサイ (^^

強烈なスキルかつ、やってて楽しいですから ヾ(´ー`)ノ


1266 : 受講生さんのコメント (2012-08-30 09:55:00)

ヒント見ずにチャレンジしてみました。

一発で、詰まることなく直ぐに出来ました。自分でもビックリです。



発展編の演習で、カウントのやり方をやっていたおかげもあると思いますが、きちんと覚えるべき事をを積み重ねると、初見でも何とか戦えますね!



パズルのようで面白いです。ますますマクロにハマりそうです。


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

本講座の動画一覧

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

塾長 小川慶一

メニュー

コメント紹介

もっと見る

ページの先頭へ