Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1776to1780
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
Inhaltsverzeichnis

Suche nach sichändernden Suchbegriff

Suche nach sichändernden Suchbegriff
24.08.2020 13:33:15
Hannah
Liebe Community,
ich möchte gerne die Zeile des jeweiligen Suchbegriffs erfassen.
Der Suchbegriff ändert sich dynamisch (in meinem Versuch als "Identifikation" bezeichnet")
Bei meinem aktuellem Versuch erhalte ich jedoch jedes Mal die Zeile des ersten Suchbegriffs. Ich vermute, dass das an dem Befehl .row liegt, dass dieser die erste Zeile meines "finden"-Bereichs gibt.
Mit Loop Schleife (also zB. Set finden = Columns(1).FindNext(finden)
Loop While Not finden Is Nothing And treffer finden.Address ) kann ich das Problem nicht lösen, da zwischen der Suche nach den Suchbegriffen andere Berechnungen durchgeführt werden und der Suchen-Sub immer nur bei einer bestimmten Kennzahl aufgerufen wird.
Danke schon mal!
Userbild

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

Betreff
Datum
Anwender
Anzeige
AW: Suche nach sichändernden Suchbegriff
24.08.2020 13:59:36
Rudi
hallo,
müsste doch
treffer=finden.Address

heißen
AW: Suche nach sichändernden Suchbegriff
24.08.2020 14:45:02
Hannah
Hallo
danke für die schnelle Antwort.
Bei finden.Address erhalte ich dann ja aber auch die Spalte (also z.B. $A$38)
Ich benötige für die fortlaufende Berechnung aber nur die Zeile (also z.B. 38)
Hast du dafür eine Lösung?
Danke!
AW: Suche nach sichändernden Suchbegriff
24.08.2020 15:17:29
Alen
Hallo Hannah,
sollte eigentlich mit der Loop funktionieren? Hätte die Loop so gemacht:
With Columns(33)
Set finden = .Find(What:=Identifikation & "_n")
If Not finden Is Nothing Then
Do
treffer = finden.Row
Set var = .FindNext(var)
Loop While Not finden Is Nothing
End If
End With

Durch Columns(33) wird das Programm langsam, weil die Methode Find in ALLEN Zeilen nachschaut.
Ich persönlich würde es mit einer For-Schleife machen - da diese schneller ist:
finden = Identifikation & "_n" 'finden auf string ändern
count = WorksheetFunction.CountIf(Range("AG:AG"), finden)
If Not count = 0 Then
For i = 1 To letzteZeileSpalte33 'Die letzte Zeile in Spalte 33 muss bestimmt werden
If Cells(i, 33) = finden Then
treffer = i
End If
Next i
Else
treffer = -99
End If
LG Alen
Anzeige
AW: Suche nach sichändernden Suchbegriff
24.08.2020 15:54:54
Hannah
@Alen, funktioniert super danke!
Habe mich für die For Schleife entschieden.
Bin jetzt aber leider auf ein weiteres Problem gestoßen.
Kurz zum Hintergrund: mit "treffer" will ich die n-Anzahl in den Spalten R:AF ermitteln. Wenn keine Werte vorhanden sind, steht in diesen Spalten jeweils -99.
Durch die aktuelle "treffer"-Suche lande ich leider oftmals bei der "falschen" n-Anzahl, also den -99 Werten.
Hast du eine Idee wie ich die Suche erweitern könnte, dass nur Zeilen, welche die Identifikation und keine -99 enthalten gesucht werden können?
AW: Suche nach sichändernden Suchbegriff
24.08.2020 15:48:35
Werner
Hallo,
mir ist da etwas unklar.
Der Suchbegriff soll in Spalte 33 = AG gesucht werden?
Warum dann plötzlich Columns(1).FindNext(finden) FindNext in Spalte 1 = A ?
Und welchen "Treffer" willst du denn, den letzten?
Also zusammenfassend:
Du willst in Spalte 33 = AG nach Identifikation_n suchen und willst vom letzten Treffer in Spalte 33 die Zeilennummer haben?
Gruß Werner
Anzeige
AW: Suche nach sichändernden Suchbegriff
24.08.2020 16:12:31
Hannah
@Werner: Du willst in Spalte 33 = AG nach Identifikation_n suchen und willst vom letzten Treffer in Spalte 33 die Zeilennummer haben? Ja bzw. es muss nicht der letzte sein, die Identifikation_n kommt häufiger vor, Bedingung dafür ist nur, dass Identifikation_n vorhanden und im Bereich R:AF (wie im letzten Post beschrieben) nicht nur aus -99 besteht.

Warum dann plötzlich Columns(1).FindNext(finden) FindNext in Spalte 1 = A ?
Das habe ich nur als Beispiel für eine Loop-Schleife gemeint.
Ich habe das Problem aber so eben gelöst, habe einen Bereich definiert um zu überprüfen, ob nur -99 vorhanden ist durch
    A = "R" & j
B = "AF" & j
Set BereichA = Range(A, B)
If Cells(j, 12) = "n" And WorksheetFunction.CountIf(BereichA, " -99") Then
Identifikation = Cells(j, 10) & "_" & Cells(j, 2) & "_" & Cells(j, 12)
Cells(j, 33) = Identifikation
Else
Identifikation = Cells(j, 10) & "_" & Cells(j, 2)
Cells(j, 33) = Identifikation
End If
Danke für eure Hilfe!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige