2016-07-22 9 views
0

Ich versuche, die Lösung zu this question of mine zu finden, und ich versuche, die Find Funktion zu verwenden, um nach einer Nummer zu suchen. Nehmen wir an, dass ich die folgenden Satzdaten in Tabelle1 haben und von Reihe 1 Spalte A beginnen:Wie Sie mit der FIND-Funktion in VBA Excel nach einer Zahl suchen?

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 

I mit den folgenden einfachen Code beginnen, die Zahl 40239,66 in Range("G:G") zu finden, und gibt die Reihe der angepaßten Anzahl in Cells(2, "H"):

Es gibt zwar keinen Fehler im obigen Code, aber nichts ist in Cells(2, "H") gefunden. Der Code hat funktioniert, wenn ich damit einen Text gefunden habe. Ich habe versucht, das Problem über die Online-Suche zu beheben, konnte jedoch keine definitive Antwort finden. Alles, was ich finden kann, ist nur, wie man die Find Funktion verwendet, um nach einem Text, nicht nach einer Nummer zu suchen. Natürlich habe ich alle Vorschläge durchgearbeitet, die ich finden kann: habe die Formatierung aus dem Bereich gelöscht, in dem ich die Werte finden oder Lookin:=xlValues in Lookin:=xlFormulas ändern möchte, aber sie haben keine Unterschiede gemacht. Könnte mir bitte jemand hier helfen? Danke im Voraus.

+1

Ihr 'Loop While ...' verwendet Zeilen anstelle der Zeile –

+0

@TimWilliams Danke, dass Sie darauf hingewiesen haben. Ich repariere es, aber ich habe immer noch ein kleines Problem in meinem Code. Könntest du meinen Kommentar unter Kominterns Antwort sehen und mir helfen? Danke ... –

+0

Wie geht es Ihnen mit Duplikaten? – user3598756

Antwort

1

Dieser Code wird nie den Wert in .Cells(2, "F") finden, weil die Zuordnung innerhalb des With Block ist. Sie versuchen, in die Spalte "F" zu indizieren, aber die Range, auf die sich .Cells(2, "F") bezieht, ist Sheets("Sheet1").Range("G:G"). Es gibt keine Spalte "F" in diesem Bereich, daher wird ValueToFindimmervbEmpty sein. Ersetzen Sie diese Zeile mit diesem ...

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

... funktioniert gut.

+0

Danke für die Antwort. Es stellte sich heraus, dass ich einen dummen Fehler gemacht hatte. Aber warum zeigen die Daten mit dem Wert 0 immer auf Zeile 2 mit meinem Code statt 3 in [diesem Bild meines realen Datensatzes] (http://i.stack.imgur.com/tr0hh.png)? Andere Daten zeigen in der richtigen Zeile. –

+0

Ich habe Ihre Frage nicht beantwortet, weil ich Ihren aktualisierten Code nicht sehen konnte - es ist sinnlos, den "alten" Code herauszufinden. –