Clever-Excel-Forum

Normale Version: Nach String suchrn
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
brauch mal wieder Eure Hilfe!

Fall ist folgender: Ich habe eine Liste mit den Daten, die auch entsprechend so heißt. Spalten A u. B. sind als Text, Spalten C bis G als Zahl formatiert.
Jetzt soll mir das Makro aus dem Arbeitsblatt "Analyse" einen Suchbegriff übernehmen, im Arbeitsblatt Daten, Spalte B danach suchen, und im Arbeitsblatt Analyse wieder ausgeben.

In einem anderen Makro mache ich das mit einem Datum nach folgendem Schema:


Code:
Sub Schaltfläche1_BeiKlick()

Dim Rng As Range
Dim Umsatz As String

   Umsatz = Sheets("Analyse").Range("B8").Value
   
   Set Rng = Worksheets("Daten").Range("A2:A366")
   
   Rng.Rows(Application.Match(Umsatz, Rng, -1)).Range("B1").Copy Worksheets("Analyse").Range(Cells(8, 3), Cells(8, 3))
   
End Sub

Das funktioniert auch.

Warunm nicht mit der Suche nach einem String?
Hallo,

zuerst, ich habe das Konzept der Frage nicht verstanden, deshalb ist die Antwort etwas allgemein.

Suchen in einem sheet geht mit:


Code:
sub iSuch()
dim rng as range
suche = "ein Wort/ eine Zahl"
set rng = columns(1).find(suche)
'weiterer Code
end sub


rng ist ein Range-Objekt mit Value/row/column usw

mfg
Na, das ist ja wieder was ganz anderes.

Ist schon ein bißchen verwirrend, das es in VBA so viele verschiedene Ansätze gibt.

Wie schon gesagt, habe ich ein altes Makro, in dem ich nach einem Datum in einer Liste (anderes Worksheet)suche und dann einen Zahlenwert,der sich in der gleichen Zeile, wie das Suchdatum befindet, ausgibt. Das funktioniert auch so, wie es soll.

Das sieht dort so aus:


Code:
Rng.Rows(Application.Match(suchDatum1, Rng, -1)).Range("B1").Copy Worksheets("hist.Kurse").Range(Cells(i, 5), Cells(i, 5))


Diese Methode ist mir sehr sympathisch, weil alles übersichtlich in einer Zeile steht.

In meinem neuen Makro suche ich statt nach dem Datum nach einem String, sonst ist der ganze Ablauf gleich. - und plötzlich bringt er mir die Fehlermeldung Typen unverträglich.

Liegt wahrscheinlich daran, daß ein Datum im Prinzip eine Zahl ist, und ein String eben nicht.

Also noch einmal meine Frage etwas anders formuliert: Geht das mit dem Match - Befehl überhaupt und wie muß ich den umstricken, damit er mir nach einem String sucht?
Hallo,

ja, den "Match"-Befehl gibt es und es ist sogar die Empfehlung, sofern man nach einem Datum suchen möchte (".Find" geht, aber nicht immer)

Viele Befehle in eine Zeile zu schreiben ist eher etwas für "Könner", es ist übersichtlicher und leichter zu debuggen, wenn der Code in mehrere Zeilen aufgeteilt wird.

Dein (altes) Makro ist zu kompliziert für mich, da überblicke ich nicht (beim Lesen) was wo gesucht und kopiert werden soll.

Wenn du schreibt (der Suchewert in Zelle yx wird in der Spalte i gesucht, schreibe ich dir einen Code.

mfg
Okay, versuchen wir's mal.

Ich häng nochl ein Bild von der Liste ran, in der ich suche.

Also, nach einem Begriff in der Spalte B soll gesucht werden, dann der Wert in Spalte C kopiert werden und in ein anderes Worksheet übertragen werden.

Wäre gut, wenn das auch mit einenem Zellbereich zusammenhängender Zellen funktionieren würde.


Im Voraus vielen Dank!
Hallo,
Sub Schaltfläche1_BeiKlick()

Dim Rng As Range
Dim Umsatz As String

Umsatz = CStr(Sheets("Analyse").Range("B8").Value)
Set Rng = Worksheets("Daten").Range("B2:B366")

Rng.Cells(Application.Match(Umsatz, Rng, 0), 2).Copy Worksheets("Analyse").Cells(8, 3)

End Sub
Gruß Uwe
...und plötzlich klappt's!

Super :18: