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 (TRIED AND TESTED

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:我想我知道你到底想做什么:) 你不需要使用循环来实现你想要的。只是一个快速的问题。是否有可能说 Cell C10 可能有值但 B10 可能没有?– Siddharth Rout 12 分钟前

如果有,那么我们将不得不相应地设置自动过滤条件。

编辑: 方式 2

另一种方法是对数据进行排序,将空格向下推,然后复制结果范围:)

高温高压

于 2012-04-07T15:47:47.857 回答