Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1636to1640
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

Zeichen mehrerer Zellwerte in Range speichern

Zeichen mehrerer Zellwerte in Range speichern
26.07.2018 14:28:00
Luke
Hallo liebe Community,
ich habe 200 Zellwerte, die aus bis zu vierstelligen Zahlen und einem darauffolgenden, beliebigen Text zusammengehängt sind
(Bsp.: [A1] = "1234 XYZ", [A2] = "1227 ABCDE", usw.).
Diese Zellen möchte ich nun in einer Range speichern und verschiedene Zahlen mit der Find-Funktion als Abfragen über diese Range laufen lassen, um die Abfragezahl bei einem Treffer in eine weitere Zelle zu schreiben.
Mein Problem ist jedoch, dass wenn ich z.B. "31" suche, auch der Treffer "131" gefunden wird, obwohl sich "31" gar nicht in der Range befindet.
Wie kann ich also nur die Zahlen aus den 200 Zellwerten in einer Range speichern und in der dann meine Abfrage nach dem genauen Zahlenwert starten?
Mit der LEFT-Funktion scheint es nicht zu funktionieren, da hier nur einzelne Strings bzw. Zellen geprüft bzw. gelesen werden können.
Vielen Dank schon mal für Eure Antworten!
Viele Grüße
Lukas

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeichen mehrerer Zellwerte in Range speichern
26.07.2018 15:42:23
ChrisL
Hi Lukas
Vielleicht so... (Ergebnis WAHR = nicht vorhanden, Ergebnis FALSE = vorhanden)
Sub t()
Dim arrOriginal As Variant, arrTemp As Variant
Dim i As Long
arrOriginal = Application.Transpose(Range("A1:A2"))
ReDim arrZahl(UBound(arrOriginal)) As Variant
ReDim arrText(UBound(arrOriginal)) As Variant
For i = LBound(arrOriginal) To UBound(arrOriginal)
arrTemp = Split(arrOriginal(i), " ")
arrZahl(i) = CLng(arrTemp(0))
arrText(i) = arrTemp(1)
Next i
' Beispiel, prüfe ob Zahl 1227 vorhanden
MsgBox IsError(Application.Match(1227, arrZahl, 0))
End Sub
cu
Chris
Anzeige
AW: Zeichen mehrerer Zellwerte in Range speichern
26.07.2018 16:50:47
Luke
Hey Chris,
danke für deine Rückmeldung. Das klappt soweit wunderbar.
Jetzt gehe ich noch einen Schritt weiter und möchte gerne die ursprüngliche Zeile bestimmen, in der die gefundene Zahl steht, damit ich den Inhalt kopieren bzw. hinter die Zelle weitere Informationen schreiben kann.
Auf welche Weise kann ich aus dem Array heraus zurück auf die Zeile der gefundenen Zahl schließen?
Und falls es nicht zu viele Umstände macht: Ich kann leider nicht ganz nachvollziehen, was genau arrText speichert, erklärst du es mir bitte kurz?
Viele Grüße
Lukas
AW: Zeichen mehrerer Zellwerte in Range speichern
26.07.2018 17:58:42
ChrisL
Hi Luke
If Not IsError(Application.Match(1227, arrZahl, 0)) Then
MsgBox "gefunden in Zeile: " & Application.Match(1227, arrZahl, 0) + 1
Else
MsgBox "nicht gefunden"
End If
Die Korrektur um +1, weil Array ab 0 zählt und Zeilen bekanntlich ab 1.
Wenn dein Inputbereich z.B. ab Zeile 2 beginnt, müsstest du entsprechend mit +2 korrigieren.
arrText braucht es nicht (=Text neben der Nummer). Ich dachte nur, wenn schon, denn schon. :)
Mit Hilfsspalte wäre übrigens die einfachste Methode "Daten, Text in Spalten, Leerzeichen getrennt". Oder Formel wäre...
=LINKS(A1;FINDEN(A1;" "))
cu
Chris
Anzeige
AW: Zeichen mehrerer Zellwerte in Range speichern
26.07.2018 18:28:31
ChrisL
reduziert, aber nicht getestet
Sub t()
Dim arrOriginal As Variant
Dim i As Long
arrOriginal = Application.Transpose(Range("A1:A2"))
For i = LBound(arrOriginal) To UBound(arrOriginal)
If CLng(Left(arrOriginal(i),InStr(1, arrOriginal(i), " "))) = 1227 Then
MsgBox "Fund in " & i + 1
'Kopiercode
Exit Sub
End If
Next i
MsgBox "kein Fund"
End Sub

AW: Zeichen mehrerer Zellwerte in Range speichern
27.07.2018 09:34:34
Luke
Hey Chris,
Sieht gut aus! Ich werde den Code heute mal implementieren, testen und berichten.
Vielen Dank für die Hilfe, in diesem Forum bin ich schon so oft fündig geworden, wenn ich Probleme hatte.. unfassbar :D
Grüße
Lukas
Anzeige
AW: Zeichen mehrerer Zellwerte in Range speichern
27.07.2018 14:05:19
Luke
Hey Chris,
also die reduzierte Variante habe ich nicht genommen, da ich sie nicht in meinen umliegenden Code effizient einbetten konnte.
Die Kombination deiner ersten beiden Codes hat mir sehr geholfen! Mit eins, zwei Anpassungen läuft dieser Code nun perfekt!
Eine Anmerkung habe ich jedoch noch: Um die Zeile zu finden, in der die gesuchte Zahl steht, muss ich nicht i +10 (wenn die Range bei Zeile 10 beginnt), sondern +8 addieren.
Ich weiß leider nicht wieso, aber es funktioniert.. :D
Wenn du mir noch erklären kannst, was genau da los ist, kann das Thema geschlossen werden. :)
Viele Grüße und ein schönes Wochenende
Lukas
Anzeige
AW: Zeichen mehrerer Zellwerte in Range speichern
27.07.2018 15:46:59
ChrisL
Hi Lukas
Freut mich, dass es passt.
Wegen +8 müsstest du nochmal deinen Code zeigen, dann kann ich dir evtl. sagen woran es liegt. Inputbereich, Array-Dimensionierung und Ausgabe sind in Abhängigkeit.
cu
Chris
AW: Zeichen mehrerer Zellwerte in Range speichern
30.07.2018 10:44:24
Luke
Hey Chris,
hier mal der Code:

arrBereichAP = Application.Transpose(Ziel.Range(Cells(19, 1), Cells(53, 1)))
ReDim arrzahlap(UBound(arrBereichAP)) As Variant
For w = LBound(arrBereichAP) To UBound(arrBereichAP)
If arrBereichAP(w)  "" Then
arrTempAP = Split(arrBereichAP(w), " ")
arrzahlap(w) = CLng(arrTempAP(0))
Else
Exit For
End If
Next w
If Not IsError(Application.Match(gesuchteZahl, arrzahlap, 0)) Then
r = Application.Match(gesuchteZahl, arrzahlap, 0) + 17
Nur so sucht er in meiner gesamt definierten Range. Oder täusche ich mich?
Viele Grüße
Gerald
Anzeige
AW: Zeichen mehrerer Zellwerte in Range speichern
30.07.2018 17:43:15
ChrisL
Hi
Achte auf eine vollständige Referenzierung.
Ziel.Range(Ziel.Cells(19, 1), Ziel.Cells(53, 1))
Für +17 habe ich im Moment keine Erklärung.
cu
Chris
AW: Zeichen mehrerer Zellwerte in Range speichern
30.07.2018 17:57:03
daniel
Hi
wenn du mit .FIND suchst dann mache folgendes:
1. hänge das Leerzeichen mit an
2. hänge danach den Joker * an
3. suche mit der Option "gesamten Zellinhalt vergleichen" (lookat:=xlwhole)
das ergibt die die Suche mit der Option "beginnt mit".
Durch das Leerzeichen muss auch die Zahl vollständig übereinstimmen.
dim Zelle as Range
set Zelle = Columns(1).Find(what:="31 *", lookat:=xlwhole, lookin:=values)
if not Zelle is Nothing then msgbox Zelle.Row & " - " & Zelle.Value
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige