Supportnet / Forum / Tabellenkalkulation
suchen von unten nach oben
Frage
hallo excelaner,
ich benutze folgendes makro, um einen wert in spalte 1 und 4 zu suchen. in spalte 4 kommen öfters werte doppelt vor. das makro zeigt mir den ersten wert an, den er von oben gefunden hat bzw. mit der sucheingabe übereinstimmt:
Sub BegriffSuchenInSpalte1und4()
Dim gZelle As Range
Dim Msg1$, Msg2$, sBegriff$
Msg1 = "Bitte Suchbegriff eingeben:"
Msg2 = "Suchbegriff wurde nicht gefunden!"
sBegriff = InputBox(Msg1)
If sBegriff = "" Then Exit Sub
Set gZelle = Worksheets(1).Range("A:A,D:d") _
.Find(sBegriff, lookat:=xlWhole) Tabelle1, Spalte 1+4
If gZelle Is Nothing Then
MsgBox Msg2
Else
gZelle.Select
End If
End Sub
allerdings soll nicht der suchvorgang von oben her sondern von unten gestartet werden. d.h. es soll immer der aktuellere/neuere wert angezeigt werden. da die tabelle von oben nach unten fortgeführt wird (bei der erfassung), ist auch der neuere wert eher im unteren bereich. ich habe irgendwo etwas gelesen mit TopToBottom oder so was. gibt es auch so was wie BottomToTop?
was muss ich ergänzen (wohin schreiben) bzw. löschen, dass der suchvorgang in der tabelle von unten nach oben verläuft?
bin über jeden tip dankbar!
goofe
Antwort 1 von Guenter
Hallo goofe,
wenn es keine Möglichkeiten gibt, die Suche von unten nach oben durchzuführen, wie wäre es denn damit, die Tabelle umzudrehen, so daß die Zahlen der letzten Reihe jetzt oben stehen, usw. Kann man durch Sortieren -> Aufsteigend/Absteigend machen.
Das nennt man dann wohl "work around".
Gruß
Günter
wenn es keine Möglichkeiten gibt, die Suche von unten nach oben durchzuführen, wie wäre es denn damit, die Tabelle umzudrehen, so daß die Zahlen der letzten Reihe jetzt oben stehen, usw. Kann man durch Sortieren -> Aufsteigend/Absteigend machen.
Das nennt man dann wohl "work around".
Gruß
Günter
Antwort 2 von sicci
Hallo Goofe,
Du kannst mit vorgeschalteter Reihenzählung:
Dim x%
x = Cells(Rows.Count,4).End(xlUP).row
Cells(x + 1 ,4).select
(oder: Range("D" & x + 1 & ").select)
die nächstfreie Zelle am Ende Deiner letzten Spalte (D) selektieren und
mit Find .... SearchDirection:=xlPrevious
nach oben suchen lassen.
Gruß
sicci
Du kannst mit vorgeschalteter Reihenzählung:
Dim x%
x = Cells(Rows.Count,4).End(xlUP).row
Cells(x + 1 ,4).select
(oder: Range("D" & x + 1 & ").select)
die nächstfreie Zelle am Ende Deiner letzten Spalte (D) selektieren und
mit Find .... SearchDirection:=xlPrevious
nach oben suchen lassen.
Gruß
sicci
Antwort 3 von sicci
..
sorry! Fehler: ein Anführungszeichen zu wenig.
Es muß heißen
(oder: Range("D" & x + 1 & "").select)
Gruß
sicci
sorry! Fehler: ein Anführungszeichen zu wenig.
Es muß heißen
(oder: Range("D" & x + 1 & "").select)
Gruß
sicci
Antwort 4 von michael oberley
hehe ganz einfach
rem 20 zeilen rueckwaerts
for t=20 to 0
rem 20 spalten rueckwaerts
for t1=chr$(85) to chr$(65) step-1
rem test wird gesucht
If range(chr(t1) & t)="test" then
rem dann so und so
endif
next t1
next t
rem 20 zeilen rueckwaerts
for t=20 to 0
rem 20 spalten rueckwaerts
for t1=chr$(85) to chr$(65) step-1
rem test wird gesucht
If range(chr(t1) & t)="test" then
rem dann so und so
endif
next t1
next t

