如何在 VBA 中修改此行以仅选择具有值的列?
Set rng = Range("A1", Range("A65536").End(xlUp)).SpecialCells(xlCellTypeVisible)
我认为我做的不对,因为该CountLarge
物业有数十亿个细胞
这是我的数据示例
@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
另一种方法是对数据进行排序,将空格向下推,然后复制结果范围:)
高温高压