[[20151118164701]] 『該当データの書き出し』(メロウ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『該当データの書き出し』(メロウ)

いつもお世話になっております。よろしくお願いします。

今回は、一覧表の中から該当データを別のシートに書き出す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.