2016-07-22 212 views
0

我試圖找到this question of mine的解決方案,我嘗試使用查找函數來搜索一個數字。假設我在Sheet1下面的一組數據,並從第1分A列開始:如何在VBA Excel中使用FIND函數搜索數字?

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

您的'while while ... while'行正在使用行而不是行 –

+0

@TimWilliams感謝您指出這一點。我修復它,但我的代碼仍然有點問題。你能看看我的評論下面的共產國際的答案,並幫助我?謝謝... –

+0

你是如何處理重複的? – user3598756

回答

1

此代碼將從不找到​​中的值,因爲該賦值位於With塊的內部。您正在嘗試索引到「F」列,但​​提到的RangeSheets("Sheet1").Range("G:G")。在該範圍內沒有列「F」,所以ValueToFind總是vbEmpty。用這個替換那條線......

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

...工作得很好。

+0

感謝您的回答。原來我犯了一個愚蠢的錯誤。但是,爲什麼數據借記的值爲0總是指向第2行,而是使用我的代碼而不是[我的實際數據集的這張圖片]中的3(http://i.stack.imgur.com/tr0hh.png)?其他數據指向正確的行。 –

+0

我沒有回答你的問題,因爲我看不到你更新的代碼 - 沒有意義試圖找出「舊」代碼。 –