Excel VBA .Find方法并没有找到我所知道的

时间:2016-03-30 21:05:43

标签: excel vba excel-vba

我有一个非常大的数据表,需要分解成几个较小的表并进行重组。我想自动过滤大表,运行在大表中查找的值列表,并比较预先存在的表上的值的单元格中的值。这是我写的代码:

Set rData = wsData.Range("A1:P7000")
rData.AutoFilter Field:=6, Criteria1:=sSensor
Set rBand = wsNew.Range("C1")
For iBand = 1 To 149
    dFreq = rBand.Offset(iBand, 0)
    Set rNew = rData.Find(dFreq, , xlValues)
    If Not rNew Is Nothing Then
        If rNew.Offset(0, 1).Value > rBand.Offset(iBand, 2).Value Then
            rNew.Offset(0, 1).Copy
            rBand.Offset(iBand, 2).PasteSpecial xlPasteValues
        End If
    End If
Next

我遇到的问题是If Not rNew Is Nothing Then行始终返回false,即使我可以验证dFreqrData中的值是否存在。

更新

我已经更改了代码,如下所示:

Set rData = wsData.Range("A1:P7000")

'New
rData.Copy
wsData.Range("A1").PasteSpecial xlPasteValues
'/New

rData.AutoFilter Field:=6, Criteria1:=sSensor
Set rBand = wsNew.Range("C1")
For iBand = 1 To 149
    dFreq = rBand.Offset(iBand, 0)
    Set rNew = rData.Find(dFreq, , xlValues)
    If Not rNew Is Nothing Then
        If rNew.Offset(0, 1).Value > rBand.Offset(iBand, 2).Value Then
            rNew.Offset(0, 1).Copy
            rBand.Offset(iBand, 2).PasteSpecial xlPasteValues
        End If
    End If
Next

这似乎在99%的时间内起作用。有时,rNew.Offset(0, 1).Copy会因某种原因复制错误的单元格。例如,一次迭代在单元​​格I467中找到dFreq值,但复制了单元格K452(过滤后的表格的第一行)而不是J467。此外,偶尔会rNew.Offset(0, 1).Value =错误2040。

0 个答案:

没有答案