- ベストアンサー
Excel VBAでのデータのセル上詰めコピーの方法
- Excel VBAでデータのセル上詰めコピーをする方法について教えてください。
- データのあるシートから別のシートに空行を詰めてコピーするVBAの書き方について教えてください。
- VBAのRangeとCellsの使い分けやエラー行のスキップ方法について教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
1行目は数字じゃないけどコピーしたいとかの例外もあるのはまぁ良しとして。 要するに「A列が数字(の生データを仮定)である」を拾ってコピーする、だけの事です。方策は山ほどあります。 sub macro1() worksheets("Sheet1").select rows(1).copy destination:=worksheets("Sheet2").range("A1") on error resume next range("A:A").specialcells(xlcelltypeconstants, xlnumbers).entirerow.copy _ destination:=worksheets("Sheet2").range("A2") end sub どーしても1行ずつ舐め回したいなら sub macro2() dim h as range worksheets("Sheet1").select rows(1).copy worksheets("Sheet2").range("A1") for each h in range("A2:A" & range("A65536").end(xlup).row) if h <> "" and isnumeric(h) then h.entirerow.copy destination:=worksheets("Sheet2").range("A65536").end(xlup).offset(1) end if next end sub 同じことを行番号で行うなら sub macro2r() dim r as long worksheets("Sheet1").select rows(1).copy worksheets("Sheet2").range("A1") for r = 2 to range("A65536").end(xlup).row if cells(r, "A") <> "" and isnumeric(range("A" & r)) then rows(r).copy destination:=worksheets("Sheet2").range("A65536").end(xlup).offset(1) end if next end sub
その他の回答 (3)
- keithin
- ベストアンサー率66% (5278/7941)
>1行ずつ舐めるやり方を今後学ぶ必要がありそう どうしてそんな思い込みをしたのか、詳しい状況を添えて別途のご相談として投稿してみて下さい。
お礼
データは全体を操作するのと、列ごとに操作、提供データの行例(挿入場所も)を入れ替える、第三者からの提供データななどがある、などがあるのがわかっているので、いろいろ覚えていこうと思っています。
- mt2008
- ベストアンサー率52% (885/1701)
ANo.1です。 > A~C列の各行はたぶん数千から万に達するデータがあるので(n行)、行数が確定していない場合のVBAの練習を現在しているのでした。 提示したコードはあくまでサンプルです。 ご自身の環境に合わせて修正してください。 ちなみに行数が不定なら Range("A1:C13").の部分を、Range("A:C")にするだけです。 「複数シートに展開」ってのは条件も何も書かれていないので回答は控えさせていただきます。
- mt2008
- ベストアンサー率52% (885/1701)
Excelは文字は数値より大きいと判断しますのでそれを利用してフィルターオプションで抽出しましょう。 添付の図の例では検索条件にE1:E2セルを使っています。 E1に検索条件の項目名「コード」。E2に不等号+コードの最大値より大きい数値、今回は「<999999」と入れました。 後は、以下のコードで2番目のシートに検索条件に合致した行だけ抽出されます。 Sub Sample() Range("A1:C13").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( "E1:E2"), CopyToRange:=Worksheets(2).Range("A1"), Unique:=False End Sub
お礼
ありがとうございます。 A~C列の各行はたぶん数千から万に達するデータがあるので(n行)、行数が確定していない場合のVBAの練習を現在しているのでした。 この質問は今後複数シートに展開されますので、今後ともよろしくお願いします。
補足
ありがとうございます。 1行ずつ舐めるやり方を今後学ぶ必要がありそうです。 まずは教えていただいた記述を週末1つづつ勉強してみます。