如何在VBA Excel中使用FIND函数搜索数字?

时间:2016-07-22 04:17:11

标签: excel vba function excel-vba find

我正在尝试找到this question of mine的解决方案,并尝试使用查找功能来搜索数字。假设我在Sheet1中有以下设置数据,并从第1行A列开始:

A   B           C                 D         E         F           G
No  Date        Code              Name      Remarks   D e b i t   Cr e d i t
1   4/30/2015   004/AB/01/04/15   Anna      YES       40239.66    0.00
2   2/16/2015   028/AA/01/02/15   Andy      NO        0.00        2205.49
3   1/31/2015   021/DR/04/01/15   Jim       YES       167.60      0.00
4   7/14/2015   083/RF/01/07/15   Anna      YES       3822.60     0.00
5   8/6/2015    030/AB/01/08/15   Anna      NO        0.00        11267.96
6   1/15/2015   020/TY/01/01/15   Barry               0.00        5237.84
7   7/14/2015   024/HU/01/07/15   Anna      NO        0.00        3822.60
8   1/31/2015   039/JK/01/01/15             YES       0.00        1780.84
9   1/27/2015   007/ER/01/01/15   Jim       NO        5237.84     0.00
10  4/29/2015   077/FX/01/04/15   Barry     NO        0.00        40239.66
11  1/3/2015    001/OX/10/01/15   Andy      NO        33074.03    0.00
12  8/10/2015   001/PR/01/08/15   Nicholas            11267.96    0.00
13  10/31/2015  007/TX/09/10/15   Jim                 1780.84     0.00
14  2/28/2015   071/QR/01/02/15   Andy      YES       2205.49     0.00
15  1/7/2015    007/OM/02/01/15   Nicholas            8873.25     0.00

我从以下简单代码开始,在Range("G:G")中找到号码40239.66,并在Cells(2, "H")中返回匹配号码的行:

Sub Test_1()
Dim ValueToFind
    With Sheets("Sheet1").Range("G:G")
        ValueToFind = .Cells(2, "F").Value
        Set FindValue = .Find(what:=ValueToFind, LookIn:=xlValues)

        If Not FindValue Is Nothing Then
            FirstValue = FindValue.Row
            Do
                .Cells(2, "H") = FindValue.Row
                Exit Do
            Loop While Not FindValue Is Nothing And FindValue.Rows <> FirstValue
        Else
            .Cells(2, "H") = "Not match"
        End If
    End With
End Sub

虽然上面的代码没有错误,但在Cells(2, "H")中找不到任何内容。如果我用它来查找文本,代码确实有效。我试图通过在线搜索解决问题,但我无法找到明确的答案。我只能找到如何使用查找功能来搜索文本,而不是数字。当然,我完成了所有可以找到的建议:清除了我想要查找值的范围或将Lookin:=xlValues更改为Lookin:=xlFormulas的格式,但它们没有任何区别。请问有人在这帮帮我吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

此代码永远不会.Cells(2, "F")中找到该值,因为该分配位于With块内。您尝试索引到列&#34; F&#34;,但Range引用的.Cells(2, "F")Sheets("Sheet1").Range("G:G")。没有专栏&#34; F&#34;在该范围内,ValueToFind始终vbEmpty。用这个代替那条线......

ValueToFind = Sheet1.Cells(2, "F").Value

......工作正常。