Wie kann man eine Zahl zufälliger Länge und Position aus Excel Zelle auslesen?

5 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich hab mal diese Formel gebastelt:

=LET(
    Zeichen; TEIL(A1; SEQUENZ(1; LÄNGE(A1)); 1);
    Maske; NICHT(ISTFEHLER(WERT(Zeichen)));
    Ziffern; FILTER(Zeichen; Maske);
    WERT(TEXTKETTE(Ziffern))
)

Die beiden A1 musst du halt austauschen mit der Zelle, wo der Wert drinsteht, von dem du nur die Ziffern haben willst.

Achtung: Die Formeln behält alle Ziffern, die da drin stehen. Also wenn du einen Wert, wie z.B. 5678_AB3CD4 hast, kommt 567834 raus.

Zur Erklärung: LET ist eine nette Funktion, mit der du Zwischenergebnisse in Variablen speichern kannst.

Als erstes lege ich eine Variable namens "Zeichen" an, wo einfach eine Liste aller Zeichen drinsteht (also aus "5679_UBD" wird {"5"; "6", "7"; "9"; "_"; "U"; "B"; "D"})

Dann lege ich eine Maske an, wo einfach drinsteht, welche Zeichen in das Ergebnis übernommen werden sollen (also bei dem Beispiel kommt {WAHR; WAHR; WAHR; WAHR; FALSCH; FALSCH; FALSCH; FALSCH; FALSCH} raus)

In die Variable "Ziffern" kommen dann nur die Ziffern rein (also {"5"; "6", "7"; "9"}) und die werden im letzten Schritt in die Zeichenfolge "5679" zusammengefasst und in die Zahl 5679 umgerechnet.

zender239 
Fragesteller
 30.11.2023, 17:11

Das funktioniert tatsächlich sehr gut und schlanker als über das Makro.
Nur scheint es am Ende doch keine Zahl zu ergeben (mit dem Makro ebenfalls nicht)
Ich lege einen XVERWEIS an und vergleiche das Resultat mit einer anderen Tabelle und bekomme #NA obwohl visuell die Zahlen in beiden Tabellen vorkommen.
Die Formatierung scheint wohl keine Zahl zu sein?

0
daCypher  01.12.2023, 07:12
@zender239

Eigentlich sollte es mit dem Ergebnis aus der Formel funktionieren. Die Formel gibt eine Zahl zurück. Du kannst aber natürlich auch im letzten Schritt die WERT Funktion weglassen, damit daraus ein Text wird. Vielleicht stehen die Zahlen in deiner Suchtabelle ja als Text drin, dann könnte die Suche funktionieren, wenn die gesuchten Werte auch Text sind.

Die Formatierung ist unabhängig von der Formel. Die kannst du ganz normal über Rechtsklick > Zellen formatieren... einstellen.

Ich hab leider keine Idee, woran es liegen kann, dass die Suche nicht geht. Da bräuchte ich die Excel-Datei, um dir helfen zu können.

1
zender239 
Fragesteller
 01.12.2023, 17:02
@daCypher

Ja tatsächlich klappt es jetzt. Es lag an einem gesetzten Filter den ich übersehen habe.
Jetzt habe ich aber tatsächlich den Fall (dank dem dreckigen Datensatz den ich bekomme) den du beschreibst.
Bisher hatte ich immer solche Fälle:
5679_UBD

5679ugd

678hgtsl

678_ikdwowdff

Seit heute gibt es:
5679_UBD3
678htgsl3
Mich interessieren aber nur die vorderen Zahlen.
Ich wollte es einfach mit =Links(A1;4) lösen, da die Zahl max 4 Stellen hat.
Aber dann wird es zu Text formatiert - was mir die weitere Verwendung killt.
Natürlich kann ich copy & paste und als Zahl umwandeln.
Da das aber eine stetig wachsende Datenbank ist brauche ich immer automatisch die Ausgabe einer Zahl.
Noch eine Idee?

0
daCypher  04.12.2023, 08:48
@zender239

Wenn es immer drei oder vier Zahlen sind, bevor der Rest anfängt, kannst du einfach prüfen, ob das vierte Zeichen eine Zahl ist und dann entweder drei oder vier Ziffern ausschneiden:

=WENN(ISTFEHLER(WERT(TEIL(A1;4;1)));WERT(LINKS(A1;3));WERT(LINKS(A1;4)))

Wenn es da auch andere Längen gibt, muss ich nochmal ein bisschen rumexperimentieren. Da müsste man im Prinzip die erste Stelle suchen, die keine Zahl ist und dann nur die entsprechenden Zahlen kopieren, aber das wird etwas komplizierter.

1

Es könnten mehrere Schritte erforderlich sein. - Daten sortieren, damit wären die "nur Zahlen" von denn mit Text separiert.

Daten - Text in Spalten - feste Breite - zunächst die Trennung hinter der längsten Zahlen (... mit Text) den Trennmarker setzen.

Danach das gleiche mit den verbleibenden Zahlen mit Text wiederholen usw.

1. Schritt

Bild zum Beitrag

'2.Schritt

Bild zum Beitrag

Ergebnis

Bild zum Beitrag

 - (Microsoft Excel, Formel, Microsoft Office)  - (Microsoft Excel, Formel, Microsoft Office)  - (Microsoft Excel, Formel, Microsoft Office)
zender239 
Fragesteller
 24.11.2023, 10:37

Mit der Lösung ergeben sich für mich 2 Probleme:

  1. Markiere ich die Felder über "Text in Spalten" wird mir die Formel dahinter angezeigt (es ist bereits das Ergebnis eines ersten Schritts) --> lösbar
  2. Der Datensatz wächst kontinuierlich und ist mehrere 1000 Zeilen groß. Ich verstehe die Lösung als nicht machbar für solche einen Einsatzzweck
0
zender239 
Fragesteller
 28.11.2023, 11:15
@GutenTag2003 Die Lösung "Methode 3: Trennen Sie Text und Zahlen, die unregelmäßig mit der benutzerdefinierten Funktion gemischt werden" hat das erwartete Ergebnis gebracht. Danke
1

Es würde auch mit Formeln gehen, die Variante von GutenTag2003 ist aber in 2 Schritten zu erledigen und damit ebenso effektiv.

Mit VBA müsste das gehen:

Function GetZahl(s As String) As Double
    GetZahl = Val(s)
End Function

dann könnte in A1 stehen:
=GetZahl(B1)

Makros müssen aktivert sein.

Hallo,

dazu hilft nur ein Excel Addín, das alles bis auf die Ziffern löscht. Dieses Addín:

Bild zum Beitrag

löscht alles außer Ziffern und die explizit ausgewählten Zeichen, die stehen bleiben sollen, wenn es solche Zeichen überhaupt gibt.

LG

Siegfried

Woher ich das weiß:eigene Erfahrung
 - (Microsoft Excel, Formel, Microsoft Office)