ありがとうございます! 今回の場合は、抽出シートを削除してから、2行目から書き出しているかと思います。 なので、履歴を残した状態で、下に追加する場合は、抽出シートの削除をなくして2行目を最終行からにしてあげれば実現できるかと思います! 最終行の求め方は、今回のプログラムの中にある削除範囲の指定時にも使われていますので、そのまま活用できるかと思います。 修正するとしたら、 '抽出結果を削除 内の「.Range(.Cells(2,1)…).Value = ""」を削除して、 '抽出 内の「j = 2」を「j = x + 1」で実現できるかと思います! ※補足です 最終行の求め方は、 Do While .Cells(x,1).Value "" x = x + 1 Loop ではなく、 x = .Cells(.Rows.Count,1).End(xlUp).Row の方が処理が早くなります! 抽出の Do While .Cells(i,"B").Value "" … Loop に関しても、 Dim lastRow As Long: lastRow = .Cells(.Rows.Count,"B").End(xlUp).Row For i = 2 To lastRow … Next i にした方が処理が早くなりますので、 慣れてきましたら参考程度に😊
【配布あり】こちらでExcel講座をまとめています!
it-yobi.com/course/?pageNo=1&orderNo=2&categoryNo=10&link=4
●---Excel【基礎】---●
Excelを始めるにあたり、必要な知識をまとめています!
詳しくは再生リストにて!
th-cam.com/play/PLuUrleRMhKDc1thXw-EmZAU34vhLrKnm3.html
●---Excel【実践】---●
実際に開発しながら解説しています!
詳しくは再生リストにて!
th-cam.com/play/PLuUrleRMhKDf4BrAPNt5lfJ7bGCcgCQUw.html
●---Excelその他---●
他にもデータベースなど再生リストを用意!
th-cam.com/channels/y5cpoeTKqZ2cDzWX8NB3Gg.htmlplaylists
●---Googleスプレッドシート【基礎】---●
Googleスプレッドシートを始めるにあたり、必要な知識をまとめています!
詳しくは再生リストにて!
th-cam.com/play/PLuUrleRMhKDe5kCiV88fRUuxsMvZ5asJC.html
00:00 挨拶
00:20 完成イメージ
01:05 準備
01:29 作成(データの入力規則)
02:27 作成(抽出関数)
02:37 作成(抽出関数:結果の削除)
06:11 作成(抽出関数:対象の抽出)
10:26 作成(ボタン)
10:55 完成
11:38 プログラムの全体
12:46 まとめ
VBAを少しずつ勉強しています。プログラムもダウンロードできて学べるのでうれしいです。
コメントありがとうございます😊
色んなサイトを見ていましたが、1番分かりやすいです!!
そう言っていただけて嬉しいです!
ありがとうございます😆
これはまさに先日私がやろうとして挫折したやつですね!
やっぱり必要な行だけこうやって選択してから転記したほうが速そうですし、抽出するように修正したいと思います。ありがとうございます!
すごく参考になりました。一覧の中で抽出がすぐにできるので大変楽になりました。
1点教えていただきたいです。
例えば一覧のAの列に1・2・3の3つの数字を打ち込んでいき、1の数字の方のみ
抽出の一覧に出したい場合は、どの式をどのように変更すればよいか教えていただけないでしょうか。
コメントありがとうございます!
参考: 8:14
こちらは文字が入力されているかどうかで判断しているので、この条件文を「1」の場合というように書き換えることで実現できます。
できました!😂
ありがとうございました!
とても参考になりました。ありがとうございました。
そう言っていただけて何よりです!
最近マクロ作成を始め、色んな方の動画を拝見させて頂いたのですが、ものすごく参考になりました!!!
質問なのですが、、、
抽出結果を履歴のように残す、というコメントに返信されていましたが、私の理解力が乏しくどこを消してどこに足して打てばいいのか、色々試しましたが正解が分かりません😭
ご面倒だとは思うのですが、
最終的な正解を教えて頂きたいです!
エクセル初心者です。ご教授下さい。
抽出シートの方に列を一列、行を二行足して、そこに必要項目を手入力したいと考えています。列や行を増やした場合、抽出を行うとズレてしまいます。どこを修正すればよろしいかご教示いただければ幸いです。
ちゃんりょうさんの動画でいつも勉強させてもらってます!
有意義な動画ありがとうございます。
質問なのですが、行ではなく列に●をつけて対象の列を転記させたいのですがご教授頂けたらありがたいです。
ありがとうございます!
こちらの内容が行を基準に繰り返しているため、行と列を入れ換えて書き直せばできるかと思います!
ありがとうございます!
これからも参考にさせて頂きます
ちゃんりょうさん、参考になる動画を作成して頂きありがとうございます。
ちなみに、このデータの列が仮にFまであり、必要なデータのみ取得したい場合でも作成することができるのでしょうか。また、このようなデータをスプレッドシートでも同様に作成することが可能でしょうか。
ご回答お願いします。
コメントありがとうございます!
貼り付けを行っているFor文を修正することで、列の拡張や特定のデータのみを取得することができます。
Googleスプレッドシートの場合は、VBAではなくGASという言語になりますが、同じように実現することができます。
以下の動画が参考になるかと思います!
th-cam.com/video/myNOZvdg1Ik/w-d-xo.html
@@chanryo_eff
ちゃんりょうさん、スプレッドシートの動画をすでに作成されてたんですね。知りませんでした。この動画は凄く参考になりますので、これを活用して作成しようと思います。ありがとうございます。
いつも勉強させて頂いております。
ご質問ですが
複数シートの抽出対象を今回の動画の様に
1つのシートにまとめたい場合はどの様にすればよろしいでしょうか?
いつもありがとうございます!
With Worksheets("一覧")から、End Withまでで、一覧シートの内容を抽出シートに書き出す流れになっているので、これと同じものをEnd Withの下に追加して、With Worksheets("別のもの")のようにシート名を変えて書いていけばできるかと思います!
※Withの前にi=2とリセットする必要はあるかもです。
ありがとうございました!
さっそくやってみます。
いつも動画お世話になっております、質問なのですが一覧表の中から抽出する際、抽出先シートを指定して抽出したいのですがそういったことは可能でしょうか?
例えば一覧表シートの中から抽出先シート1には○○抽出
同じ一覧表シートの中から抽出先シート2には○○抽出と言ったような説明が下手くそで申し訳ありません。宜しくお願いします。
抽出元にシート名をどこかしらに記入して参照するなどしたらできるかと思います!
VBAを習得したくて、勉強させていただいてます。いつも有難うございます。
「抽出」シートを空白にしないで、都度「一覧」シートから抽出して、「抽出」シートに追加していきたい場合はどうなりますか?
教えてください。よろしくお願いします。
こちらこそありがとうございます!
こちらのプログラムの場合、抽出の開始位置が「j=2」と初期化されているので、この2の部分を常に最終行にして「抽出結果の削除」の内容を削除することで実現できるかと思います。
最終行の取得方法は、動画の前半でも触れていますし、他の方法でも取得することができます。
※別の方法については以下の動画でも解説しています。
th-cam.com/video/_rpdOG3GfWw/w-d-xo.html
参考までに!
すごい参考になり、ツールの完成も間近になってきました。ありがとうございます。
ひとつ質問なのですが、シートの指定をシート名ではなくオブジェクト名から指定するにはどうしたら良いですか?
ありがとうございます!
オブジェクト名で指定する場合は、Worksheets()などとやらずオブジェクト名が既にオブジェクト(既にシートの情報を保持している)のため、オブジェクトを直接指定すれば大丈夫です。
参考にさせてもらっています。
抽出結果のシートに上書きではなくて、
抽出結果を履歴のように残したく
最後の空白行から、ボタンを押す毎に、下にどんどん追加していきたいです。
別の動画の追加ボタンの方法も参考にして、コメントをくっつけてみたりしたのですが、いまのところうまくいきません。
2日間考え中です(笑)
どうか教えて頂けませんか。
ありがとうございます!
今回の場合は、抽出シートを削除してから、2行目から書き出しているかと思います。
なので、履歴を残した状態で、下に追加する場合は、抽出シートの削除をなくして2行目を最終行からにしてあげれば実現できるかと思います!
最終行の求め方は、今回のプログラムの中にある削除範囲の指定時にも使われていますので、そのまま活用できるかと思います。
修正するとしたら、
'抽出結果を削除 内の「.Range(.Cells(2,1)…).Value = ""」を削除して、
'抽出 内の「j = 2」を「j = x + 1」で実現できるかと思います!
※補足です
最終行の求め方は、
Do While .Cells(x,1).Value ""
x = x + 1
Loop
ではなく、
x = .Cells(.Rows.Count,1).End(xlUp).Row
の方が処理が早くなります!
抽出の
Do While .Cells(i,"B").Value ""
…
Loop
に関しても、
Dim lastRow As Long: lastRow = .Cells(.Rows.Count,"B").End(xlUp).Row
For i = 2 To lastRow
…
Next i
にした方が処理が早くなりますので、
慣れてきましたら参考程度に😊
おはようございます
夜遅いのにご返信頂きありがとうございました!
まさかすぐに返信くださるとは😂
「.Range(.Cells(2,1)…).Value = ""」を削除だと、どうもうまくいかなかったので、削除の文をx = .Cells(.Rows.Count,1).End(xlUp).Rowで最終行の指定と
抽出のJ=2からJ=x+1に変更したら、できました~(めっちゃうれしい✨)
ありがとございます!!
たぶん一人で考えていたら、あと一週間はできなかったと思いますww
基本をすっ飛ばして、動画だけみて、見よう見まねで作成していましたが、やはり基礎は大事ですね。
逆に動画を見るだけで、いきなりVBAが動かせるわけですから、すごいわかりやすいのだと思います!
答えがわかれば、なるほど~ですが、それが出てこないですよね
メカトロ設計者ですが、VBAにも興味を持ちましたので、
今後も参考にさせて頂きます
もちろんチャンネル登録させて頂きます
無事できたみたいでよかったです!
これからもよろしくお願いします😊
突然ごめんなさい🙏
「.Range(.Cells(2,1)…).value=“”」を削除だと上手くいかなかったので、とありますが最終的に「.Range…」の部分を「x=.Cells…」に差し替えたのか、付け足したのか、「x=.Cells…」をどこかに入れたのか教えてください😢😢😢
勉強になるが、説明が早すぎます。付いてけない。
貴重なご意見ありがとうございます。
ゆっくり話すよう気をつけます😂
再生速度遅くできますよ!