- 締切済み
VBAにて範囲選択およびコピーの方法について
連休中失礼いたします。VBA初心者です。 VBAにて範囲選択の方法およびコピーの方法について教えてください。 (1)範囲選択の方法 まず最初の条件としてD列における値が1.0以上(数値表記は少数点)の場合に限り、 それに該当する行をコピー(A~D列)したいのですが… この方法をVBAの式で表したいのです。 範囲選択として求めたい範囲は、下表で行くとRange(”A3:D6”)の範囲を選択したいのです。 ※D列における値が1.0以上の条件の指定までは、何とかできてそうな感じなのですが、 その条件を満たす、範囲選択がうまくできません。 (2)コピーの方法 (1)で選択した範囲を、選択sheetを変更して貼り付けたいのですがどのようにしたらよろしいでしょうか?? A列 B列 C列 D列 1行 13 10 10 0.5 2行 10 8 7 0 3行 11 9 7 1.0 4行 9 25 18 1.5 5行 8 43 23 1.5 6行 7 12 23 1.0 7行 6 23 43 0.5 8行 15 23 54 0 … …
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- mu2011
- ベストアンサー率38% (1910/4994)
NO1です。 >何回目を選択するかをVBAのプログラムより抜粋して、その範囲を選択したいのですが ⇒Areasコレクションでオートフィルタの範囲を判別できますが如何でしょうか。 ご例示のデータでは、抽出後のセル範囲オブジェクトを認識できます。 Set b = Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Areas b(1)は、A1:D1(見出し) b(2)は、A3:D4(1回目) b(3)は、A6:D8(2回目) b(4)は、A11:D13(3回目) b(5)は、A16:D17(4回目)~以下同様 仮に2回目範囲を選択する一例です。 cnt = 3 With Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible) For i = 1 To .Areas.Count If i = cnt Then .Areas(i).Select Exit For End If Next End With
- mu2011
- ベストアンサー率38% (1910/4994)
オートフィルタで抽出、その結果を反映した方が良いのではないでしょうか。 例えば、見出し行を追加→D列の1以上で抽出→別シートに貼り付けという順です。 Sub sample() Application.ScreenUpdating = False With Worksheets("Sheet1") If .AutoFilterMode Then .AutoFilterMode = False End If .Range("A1").AutoFilter _ Field:=4, Criteria1:=">=1" .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy _ Worksheets("Sheet2").Range("A1") .AutoFilterMode = False End With Application.ScreenUpdating = True End Sub
お礼
ご丁寧にありがとうございます。早速やってみましたが、うまくできました。本当に助かりました。 AutoFilterModeについて調べてみましたが、すごく便利な機能です。今後も参考にさせて頂きます。 先程ご教授頂きました内容をSheet2に張り付けが可能となりましたが、 さらに、Sheet2に張り付けた内容から D列の1回目の1.5から2回目の1.5が始まる範囲Range("A2:D5")や D列の2回目の1.5から3回目の1.5が始まる範囲Range("A5:D10")や D列の3回目の1.5から4回目の1.5が始まる範囲Range("A10:D15")など 範囲選択をして違うsheetに張り付けたいのですが、その選択範囲はそのデータによって異なる ため、こちらで何回目のデータの範囲がほしいかを指定する形をとるか、あらかじめ違うExcelシートに入力されている数字から何回目を選択するかをVBAのプログラムより抜粋して、その範囲を選択したいのですが… いろいろと試行錯誤をしてチャレンジしていますが、なかなかうまくいきません。 もし、何か分かりましたら、またご指導の程お願いします。 A列 B列 C列 D列 1行 11 9 7 1.0 2行 9 25 18 1.5 3行 8 43 23 1.5 4行 7 12 23 1.0 5行 6 23 43 1.5 6行 15 23 54 1.5 7行 23 45 55 1.5 8行 33 44 56 1.0 9行 63 46 71 1.0 10行 88 11 17 1.5 11行 32 77 55 1.5 12行 77 82 32 1.5 13行 77 12 92 1.0 14行 83 56 92 1.0 15行 62 72 65 1.5 16行 33 23 21 1.5