将所有单元格从一张纸张复制到另一张纸张

时间:2012-12-12 10:32:33

标签: excel vba excel-vba

我有一些带有一些工作表的excel文件。我需要使用数据复制所有单元格并将其复制到名为“所有数据”的工作表中的另一个Excel文档。然后我需要检查列H中的值是否为空或“0”我需要删除此值所在的所有行。我怎么能这样做?

这是我的代码从文件中获取数据,但我不确定我是否仅使用数据(并且没有空单元格)

 Windows("Book1").Activate
 Sheets(1).Cells.Select
 Selection.Copy

2 个答案:

答案 0 :(得分:1)

试试这个。

Dim n as integer
Dim n1 as integer

n = 0
n1 = 0

While Sheet("Book1").Range("A1").Offset(n, 0) <> ""
    If Sheet("Book1").Range("H1").Offset(n, 0) <> null then     
       If Sheet("Book1").Range("H1").Offset(n, 0) <> 0 then
          Sheet("Book1").Range("A1:Z1").Offset(n, 0).Copy
          Sheet("All Data").Range("A1:Z1").Offset(n1, 0).Paste
          n1 = n1 + 1
       End If
    End If
    n = n + 1
Wend

答案 1 :(得分:0)

这会将数据复制到Sheet2,将其更改为您的其他工作表/区域。然后它将过滤数据,删除可见行(基于标准的数据),然后删除过滤器:

Sheet1.Range("A1").CurrentRegion.Copy Sheet2.Range("A1")

With Sheet2
    .Range("A1").CurrentRegion.AutoFilter Field:=8, Criteria1:=0, Operator:=xlOr, Criteria2:="Null"
    .AutoFilter.Range.Offset(1, 0).Resize(.AutoFilter.Range.Rows.Count - 1) _
                                    .SpecialCells(xlCellTypeVisible).EntireRow.Delete Shift:=xlUp
    .AutoFilterMode = False
End With