Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
960to964
960to964
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

InStr Suche: Fundstellen nicht korrekt/ auflisten?

InStr Suche: Fundstellen nicht korrekt/ auflisten?
17.03.2008 12:57:12
Andreas
Hallo Excel Freunde,
ich habe einen Code, der über InStr feststellt innerhalb eines Ranges feststellt, in welcher Adresse dieser Suchbegriff auftaucht. Bisher dachte ich auch, das funktioniert sicher. Aber nun habe ich eine kleine Feinheit festgestellt. Ich lasse im definierten Range nach dem String „rop“ suchen. Die letzte Zelle mit dem Begriff Europa befindet sich in Spalte 23/ Zeile 6. Ich bekomme aber angezeigt den Wert in Spalte 17/ Zeile 11. Also nicht den „wirklich“ letzten.
Überdies frage ich mich, wie ich es realisieren kann, eine beliebige Fundstelle auszugeben, bzw. alle Fundstellen aufgelistet werden. Wie sieht eine gute Konstruktion in VBA aus, mit welchen Befehlen muß ich arbeiten, um alle Fundstellen adäquat auswerten zu können. Bspw. die letzte Spalte oder letzte Zeile ausgeben lassen oder auch nur die 3 Fundstelle als Spalte, die 4. Fundstelle als Zeile, etc.
Habe hier im Forum schon nach Fundstellen/ auflisten/ VBA/ gesucht, aber keinen passenden Ansatz gefunden.
https://www.herber.de/bbs/user/50780.xls
Vielen, vielen Dank für Eure Anregungen in dieser Sache.
Grüße, Andreas Hanisch

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: InStr Suche: Fundstellen nicht korrekt/ auflis
17.03.2008 14:15:53
Mag

Option Explicit
Sub ttt()
MsgBox Sheets(1).Range("A1").Formula
Sheets(2).Range(Sheets(1).Range("A1").Formula) = "otto"
End Sub


AW: InStr Suche: Fundstellen nicht korrekt/ auflis
17.03.2008 14:31:02
Renee
Hi Andreas,
Also nicht den „wirklich“ letzten. Deine Definition des letzten stimmt halt schlicht nicht mit der Definition von Excel's letztem überein. Denn für Excel ist dein letzter der erste!
Dein Code findet allle Vorkommnisse in dem Bereich. Kannst mal einfach nach der Msgbox den Befehl c.Value = "Guguseli" einsetzen, dann siehst du's sofort...
GreetZ Renée

Anzeige
AW: InStr Suche: Fundstellen nicht korrekt/ auflis
17.03.2008 16:41:04
Andreas
Hallo Mag, hi Renée,
vielen Dank für Eure Antworten! Das mein Code alle Fundstellen findet war mir ja bewußt, aber das Excel genau "anders herum" denkt nicht. Das erklärt natürlich einiges. Den Code von Mag habe ich probiert und ein wenig angepaßt. D.h. ich lasse die Adressen nicht mehr in einer MsgBox ausgeben, sondern die Zeilennummern der Fundstellen untereinander auflisten.

MeinTXT = Zelle.Row
End If
Range("Ergebnisauflistung").Offset(n, 0) = MeinTXT
n = n + 1


Es entsteht also eine Liste mit Zahlen. Aus dieser kann ich über MIN/ MAX Formeln in einer Hilfszelle eben die "größte" Fundstellenzeile und die "kleinste" auslesen. So habe ich mein Schema. "Erste"/ "Letzte" Fundstelle - auch wenn Excel andersherum denkt.
Nun meine Frage: Kann ich anstelle einer Auflistung diese Zahlen in eine Art temporären Speicher schreiben und über ein Makro bspw. MIN anwenden und die kleinste Zahl aus diesem "Speicher" ausgeben lassen, die ich ansonsten in das Blatt hätte schreiben lassen.
Ich hoffe, es war verständlich ausgedrückt.... ich habe keine Idee, ob und wie so etwas geht...
Ich würde mich freuen, wenn ihr einen Ansatz dafür kennt.
Dank und Gruß, Andreas

Anzeige
AW: InStr Suche: Fundstellen nicht korrekt/ auflis
17.03.2008 18:53:23
Erich
Hallo Andreas,
VBA kann sowohl so- als auch andersherum denken - bei der Find-Methode.
Probier mal:

Sub Find_Schleife()
Dim strSuch As String, rngF As Range, rngL As Range, strF As String, strA As String
strSuch = "rop"               ' Suche nach * für nichtleere Zellen
With Range("TestRange")
Set rngL = Cells(.Row + .Rows.Count - 1, .Column + .Columns.Count - 1)
Set rngF = .Find(What:=strSuch, after:=rngL, _
LookIn:=xlValues, LookAt:=xlPart, SearchOrder:=xlByColumns, _
SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False)
If Not rngF Is Nothing Then
strF = rngF.Address
Do
strA = rngF.Address(0, 0)
'           MsgBox strA
Set rngF = .FindNext(rngF)
Loop While Not rngF Is Nothing And rngF.Address  strF
End If
End With
MsgBox "letzte: " & strA
End Sub

Entscheidend ist hier die Angabe "SearchOrder:=xlByColumns".
Wenn du hier xlByColumns durch xlByRows ersetzt, wird die andere letzte Zelle gefunden.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: InStr Suche: Fundstellen nicht korrekt/ auflis
17.03.2008 19:25:41
Andreas
Hallo Erich,
vielen Dank für Deinen Code (läuft!) und vor allem die Erläuterung, welche Auswirkung die Search Order hat. Es ist wieder erstaunlich, wie viele unterschiedliche Wege in VBA zum Ziel führen können. Mit den neuen VBA Codes, die ich heute in diesem Thread gelernt habe, kann ich wieder mehr in der VBA Hilfe rumstöbern.
Danke Dir und noch einen schönen Abend.
Grüße, Andreas Hanisch

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige