我正在尝试找到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
的格式,但它们没有任何区别。请问有人在这帮帮我吗?提前谢谢。
答案 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
......工作正常。