select在Excelmacros中具有值的列(VBA中的范围对象)

如何在VBA中修改此行以仅select具有值的列?

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

因为CountLarge属性是几十亿个单元格,所以我不认为我正在做正确的CountLarge

这是我的数据的一个样本

在这里输入图像说明

@SiddharthRout是的,我只需要有数据的行。 我想我现在正在从@JMax的End(xlToLeft)工作…现在我正在遍历单元格,我可以退出每个循环一旦到达最后一行。 我现在可能有这个工作。 – 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:我想我知道你到底在做什么:)你不需要使用循环来实现你想要的。 只是一个简单的问题。 单元格C10可能有价值但B10可能不会? – Siddharth Rout 12分钟前

如果有的话,我们将不得不相应地设置自动筛选标准。

编辑:方式 2

另一种方法是sorting你的数据,推空白方式,然后复制结果范围:)

HTH