値を持つ列のみを選択するように VBA でこの行を変更するにはどうすればよいですか?
Set rng = Range("A1", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
CountLarge
プロパティは数十億セルなので、正しいことをしているとは思いません
ここに私のデータのサンプルがあります
@SiddharthRout はい、データのある行のみが必要です。@JMax の End(xlToLeft) で動作していると思います...セルを反復処理しているので、最後の行に到達したら For each ループを終了できます。私は今これが機能しているかもしれません。– makerofthings7 14分前
このため.SpecialCells
に、行をループする必要はありません:)
これがサンプルコードです。これにより、データを持つすべての行が Sheet2 にコピーされます (試行およびテスト済み) 。
Sub Sample()
Dim ws As Worksheet
Dim rng As Range
Dim LastRow As Long, LastCol As Long
Set ws = Sheets("Sheet1")
With ws
LastRow = .Cells.Find(What:="*", After:=.Range("A1"), Lookat:=xlPart, _
LookIn:=xlFormulas, SearchOrder:=xlByRows, SearchDirection:=xlPrevious, MatchCase:=False).Row
LastCol = .Cells.Find(What:="*", After:=.Range("A1"), Lookat:=xlPart, _
LookIn:=xlFormulas, SearchOrder:=xlByColumns, SearchDirection:=xlPrevious, _
MatchCase:=False).Column
With .Range("A1:" & Split(Cells(, LastCol).Address, "$")(1) & LastRow)
.AutoFilter Field:=1, Criteria1:="<>"
Set rng = ws.AutoFilter.Range
rng.Offset(1, 0).Resize(rng.Rows.Count - 1).Copy _
Destination:=Sheets("Sheet2").Range("A1")
End With
End With
End Sub
スナップショット
特定の行のすべてのセルにデータがあり、このようなケースはないと想定しています
@ makerofthings7: 私はあなたが何をしようとしているのかを正確に知っていると思います:)あなたが望むことを達成するためにループを使う必要はありません。簡単な質問です。セル C10 には値があるかもしれないが、B10 には値がないかもしれないと言う可能性はありますか? – Siddharth Rout 12 分前
ある場合は、それに応じてオートフィルター基準を設定する必要があります。
編集: 方法2
もう1つの方法は、データをソートし、空白を押し下げてから、結果の範囲をコピーすることです:)
HTH