我是一个VBA菜鸟,其中包含大量分析结果表,其中每行包含来自不同日期的结果。我在某些列中查找值,但它们有时是空的。当它们存在时,我对它们不感兴趣。我想要的值应该被复制到一个新表中,以便在较小的表中收集。
我编写了一个脚本,循环遍历masterTable
中的行,我能够识别出我感兴趣的值的行。但是,我无法复制从已标识行中的不同单元格到新工作表的值。
我尝试使用Union
使range
包含与复制相关的列。
Dim searchCells As Range
Dim masterTable As Range
Set searchCells = Union(Columns("R"), Columns("S"), Columns("T"), Columns("X"), Columns("Z"), Columns("AF"), Columns("AQ"), Columns("AT"), Columns("AY"), Columns("AV"), Columns("BB"), Columns("BD"), Columns("BG"))
Set masterTable = Worksheets("Sheet0").Range("A3:BG2022")
a = 1
For i = 1 To masterTable.Rows.Count
If Application.WorksheetFunction.CountA(searchCells(i).Value) <> 0 Then ' look for values among the relevant columns in row(i).
Debug.Print "Found data at "; i
Worksheets("Sheet0").searchCells.Rows(i).Copy ' copy data from searchCells
Worksheets("Results").Range("C1").Offset(a, 0).paste ' paste data to destination
a = a + 1 ' increment destination row offset
End If
Next
我对searchCells
的想法不起作用,因为我发现数据&#34;在所有行中,我无法运行.Copy
和.Paste
方法。所有帮助都是适用的!
编辑:编译后,VBA在拷贝行上抛出以下错误:
运行时错误&#39;&#39;&#39;
:对象不支持此属性或方法
答案 0 :(得分:2)
要复制至少一个单元格中有数据的相关行(仅适用于那些列),您可以使用:
Dim searchCells As Range
Dim masterTable As Range
Dim rRow As Range
Set searchCells = Range("R:T,X:X,Z:Z,AF:Af,AQ:Aq,AT:AT,AV:AV,AY:AY,BB:BB,BD:BD,BG:BG")
Set masterTable = Worksheets("Sheet0").Range("A3:BG2022")
a = 1
For i = 1 To masterTable.Rows.Count
Set rRow = Intersect(searchCells, searchCells.Cells(i, 1).EntireRow)
If Application.WorksheetFunction.CountA(rRow) <> 0 Then ' look for values among the relevant columns in row(i).
Debug.Print "Found data at "; i
rRow.Copy Worksheets("Results").Range("C1").offset(a, 0) ' paste data to destination
a = a + 1 ' increment destination row offset
End If
Next