改进VBA以检查列中的数据

时间:2016-10-03 19:03:43

标签: excel vba excel-vba

我尝试实施其他代码来检查数据是否有效。如果不是,则从复制到当前工作簿中省略数据。

无效数据介于-0.01到0.01

之间
11
22
222
333
33
11
22
33

1 个答案:

答案 0 :(得分:1)

你不能复制这样的数据,如果你选择一个有很多单元格的范围,这个范围的值就等于左上角单元格的值。

将以下内容添加到您的代码中,以便以最快的VBA方式将wbkWorkbook2.Worksheets(“sheet1”)中的指定值范围复制到wbkWorkbook1.Worksheets(“RAW DATA”)。

Dim vSource as Variant
Dim LastRow as long, arrayRow as long, arrayCol as long 

With wbkWorkbook2.Worksheets("sheet1")
   'find last row with data in the sheet
    LastRow = .Cells.Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
    vSource = .Range("a2:y" & LastRow) 'or .Range("A2:Y25") if for example
                                       'you only need this specified part of data

    For arrayRow = Lbound(vSource) to Ubound(vSource)
        For arrayCol = Lbound(vSource,2) to Ubound(vSource,2)
            If vSource(arrayRow,arrayCol)<0.01 and vSource(arrayRow,arrayCol)>-0.01 then
                vSource(arrayRow,arrayCol)=vbNullString
            End if
        Next arrayCol
    Next arrayRow        

End With

wbkWorkbook1.Worksheets("RAW DATA").Range("A13:Y36") = vSource