[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『該当データの書き出し』(メロウ)
いつもお世話になっております。よろしくお願いします。
今回は、一覧表の中から該当データを別のシートに書き出すVBAを作成したいと思っています。
今のままでは書き出しの際に、A1セルに上書きされていってしまうので、
次の該当データはどんどん下にコピーされるようにしたいです。
下記が現在のコードです。
Sub test1()
Dim s1 As Worksheet, s2 As Worksheet
Dim r As Long
Set s1 = Sheet7
Set s2 = Sheet160
For r = 10 To 161
If s1.Range("I" & r) <> "*" Then
s1.Range("A" & r).Copy s2.Range("A1")
End If
Next r
End Sub
よろしくお願いします。
< 使用 Excel:Excel2007、使用 OS:WindowsXP >
なんか、遅そうなプログラムだなぁ、と思っちゃうのですが、 とりあえず、こんな変更で試してみてください。
>s1.Range("A" & r).Copy s2.Range("A1") ↓ s1.Range("A" & r).Copy s2.Cells(s2.Rows.Count, "A").End(xlUp).Offset(1)
(半平太) 2015/11/18(水) 19:18
Sub test1() Dim s1 As Worksheet, s2 As Worksheet Dim r As Long Dim r2 as Long
Set s1 = Sheet7 Set s2 = Sheet160 r2 = 0 'コード実行のたびにA1セルから記入させる場合 For r = 10 To 161 If s1.Range("I" & r) <> "*" Then r2 = r2 + 1 s1.Range("A" & r).Copy s2.Range("A" & r2) End If Next r End Sub
( 佳 ) 2015/11/19(木) 06:32
半平太様、
私はVBAは完全独学で、まだまだテキストが手放せない状態です。
早くなるコツ(?)みたいなものがあれば教えて下さい!!
(メロウ) 2015/11/19(木) 09:34
>早くなるコツ(?)みたいなものがあれば教えて下さい!!
コツですかぁ。 有るような、無いような。
長年、回答していると、それ関連の記事を目にしますので、 自然と身についていると云うのが正しいかも知れません。
今、「エクセル VBA 高速化」なんてキーワードでインターネット検索すると 昔、お目にかかった記事(1)もヒットしますし、また新しい観点の話(2)がヒットしたりしました。
(1)【VBA高速化テクニック】 http://officetanaka.net/excel/vba/speed/
(2)【VBA高速化ランキング一覧】 http://www.wat3d.com/gogo/vba-speedup/
上記(2)の記事は、今回この追加質問がなかったら、あと10年間は読まなかったかも知れないです。 従来の切り口と少し違っている(おもしろい)項目がありました。一読をお勧めします。 ↓ 【マクロ高速化の正しい手順とVBAの書き方】
今回、遅そうだなと思ったのは、一つひとつのセルをコピーしては、貼り付けを行っている点です。 セルへの働きかけは、時間を喰いますので、出来るだけまとめて貼り付ける方がいいです。
では何故、「とりあえず、こんな変更で試」すことにしたのかと云えば、理由は2つあります。
(1)仕様が明確じゃないのに全部に手を入れる気になれなかったこと
(2)150個程度のセルの数であれば、速度の問題は無視し得るかも知れないと思ったこと 1秒かかるものを、0.5秒に短縮するのは改善かも知れませんが、無価値に近いです。 速度マニアなら別ですけどね。
(半平太) 2015/11/19(木) 16:11
どちらも為になりそうです!わざわざURL乗せていただき感謝です!
半平太様のご想像通りです。
今の段階では、まだまだ未完成で他にやりたいこともあるので、とりあえず不明な部分だけ質問しました。
しかも、まだ試作の試作段階で、この方法で行こう!までたどり着いていません。
そして、速度も特に気になるほどのものではありません。
今回御指摘頂き、ようやく速度を気にするようになったばかりですので、もっとサクサクコードを組めるようになったら早さも追求してみたいと思います。
ご親切に有難うございました!
(メロウ) 2015/11/19(木) 16:55
>早くなるコツ(?)みたいなものがあれば教えて下さい!!
早く書けるようになるコツ(?) でしょうか?
それはやはりまず、たくさん書いて、たくさん間違えて、経験値をあげること
(泪の数が経験値、と教わったことがあります)、それから
その上で、慣用句みたいな、こういうときはこう書くというストックを蓄積して
いけば、早く書けるようになると思います。
あせらず たゆまず がんばってください。
( 佳 ) 2015/11/19(木) 20:27
ありがとうございます!
やはり経験値は大切ですね〜!
しばらく書かない時期があると全然ダメになってしまうので、なるべく続けられるように頑張ります!
またよろしくお願いします!
(メロウ) 2015/11/20(金) 11:37
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.