1

値を持つ列のみを選択するように VBA でこの行を変更するにはどうすればよいですか?

Set rng = Range("A1", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible)

CountLargeプロパティは数十億セルなので、正しいことをしているとは思いません

ここに私のデータのサンプルがあります

ここに画像の説明を入力

4

1 に答える 1

3

@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

于 2012-04-07T15:47:47.857 に答える