复制同一行VBA中多个列的值

时间:2015-10-07 13:32:57

标签: vba excel-vba excel

我是一个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;

     

对象不支持此属性或方法

1 个答案:

答案 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