Wie kann man in Excel Zahlen extrahieren?

...komplette Frage anzeigen

6 Antworten

Hey, nim mal diese Formel dort wo die Zahl dann hin soll:

{=VERWEIS(9^9;--TEIL(A1;MIN(WENN(ISTZAHL(--TEIL(A1;SPALTE(1:1);1));SPALTE(1:1)));SPALTE(1:1)))}

Das ist eine Matrixformel.
Das bedeutet: Die geschweiften Klammern
{} NICHT mit eingeben, sondern die Eingabe der Formel NICHT mit ENTER
abschließen, sondern mit:
STRG & SHIFT & ENTER (alle drei gleichzeitig).
DAS erzeugt die { } und macht die Formel zu einer Matrixformel.

Sollte klappen oder?

Antwort bewerten Vielen Dank für Deine Bewertung
DerMax135 05.10.2016, 17:06

Falls du Zeit haben solltest, könntest du mir es evtl. erklären? Würde es nämlich gerne verstehen, um in Zukunft selbst derartiges machen zu können ;)

0
dkilli 05.10.2016, 19:07
@DerMax135

Hallo Schmiddi1967,

ich habe deine Lösung nicht gelesen. Daher hast du die Hilfreichste Antwort verdient

0
Iamiam 06.10.2016, 13:23
@dkilli

Formel von Schmiddi: ich versuchs mal zu erklären (wegen der höheren Zeilenlänge in einer separaten AW, siehe dort)

0

Formel von Schmiddi: Basis-Eintrag: 'AB D1,23 JKL

  • generell:
  • 1. Verweis sucht bei Nichtfinden von 9^9 die nächstniedrigere Zahl (9^9 wurde willkürlich festgelegt, tatsächliche Obergrenze ist 9,999...*10^15)
  • 2. -- bedeutet im Effekt: *-1*-1. Das wandelt Ziffern zu Zahl um und erzeugt bei anderen Zeichen einen Fehler =>Nicht(Istzahl())
  • 3. {Spalte(1:1)} erzeugt eine Laufzahl - ich nenne sie iF n- von 1...höchste Spaltenzahl im Blatt
  • Nun von innen nach aussen:
  • ISTZAHL(--TEIL(A1;SPALTE(1:1);1)) prüft, ob die n-te Stelle eine Ziffer (==>Zahl) ist
  • Wenn ja, wird diese Ziffer gelistet, wenn nicht: das sonst-Argument fehlt, das ergibt dann FALSCH
  • {FALSCH.FALSCH.FALSCH.FALSCH.5.FALSCH.7.8.FALSCH.FALSCH……}
  • Falsch wird von Min() ignoriert. Min(...) ergibt also die Position der ersten Ziffer [iF.: MinPos].
  • --Teil(A1;MinPos;n) erhöht nun schrittweise die Länge ab MinPos und erzeugt so diese Matrix: 1=1; 1,=1; 1,2; 1,23; #WERT!; #WERT!;.....,
  • also {1.1.1,2.1,23.#WERT!.#WERT!.....}
  • Offensichtlich wird Vergleich von den vielen folgenden #WERT! nicht gestört,
  • =Vergleich(9^9;{...}) findet als höchste Zahl also 1,23
  • Weitere Zahlen nach anderen Zeichen dazwischen werden so nicht erfasst

So, damit ist mir das auch selbst erst mal klar geworden!

Antwort bewerten Vielen Dank für Deine Bewertung
schmiddi1967 06.10.2016, 16:18

Danke Iamiam, ich hätte das so gut nicht erklären können. *Top*

2
Iamiam 06.10.2016, 21:27
@schmiddi1967

noch eine Korrektur bzgl der größten Zahl: die ist viel höher: ~10^308, vermutlich 2^1024-1, was man aber so in xl schon nicht mehr rechnen kann. Als Dualzahl 23 x die 1

Tut aber nichts zum eigentlichen Thema, nur, damit nichts Falsches stehen bleibt. Also bei mir funktioniert noch =Verweis(10^308;.....) Gerechnet wird aber "nur" mit 15 Stellen Genauigkeit. Die Zahl im Text dürfte also mindestens 307 Zeichen lang sein.

Minuszeichen im Text werden nicht ausgewertet, ebenso nicht eine Exponentialschreibweise 10^2, da erscheint nur 10 (logisch, aber nicht unbedingt sofort vorhersehbar)

0

Besser wäre von vornherein die Zahlen in einer anderen Zelle zu schreiben und diese dann in den Text zu integrieren.

Antwort bewerten Vielen Dank für Deine Bewertung

In A2 steht der String. Dann gibst du in einer Zelle folgendes ein;

=VERWEIS(9^9;1*TEIL(A2;MIN(WENN(ISTZAHL(1*TEIL(A2;SPALTE(1:1);1));SPALTE(1:1)));SPALTE(1:1)))

Das ist eine Matrixformel die darfst du nicht mit Enter abschließen!

Du musst STRG + Shift (Umschalt) + Enter drücken. Dann siehst du am Anfang und am Ende geschweichte Klammern. Also

{=VERWEIS(9^9;1*TEIL(A2;MIN(WENN(ISTZAHL(1*TEIL(A2;SPALTE(1:1);1));SPALTE(1:1)));SPALTE(1:1)))}

Antwort bewerten Vielen Dank für Deine Bewertung
Iamiam 06.10.2016, 13:24

Formel von Schmiddi: ich versuchs mal zu erklären (wegen der höheren Zeilenlänge in einer separaten AW, siehe dort)

0

RegEx wäre wohl am sinvollsten .

Wie man das schöne Stück seinem Workbook hinzufügt steht

dort http://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft-excel-both-in-cell-and-loops

dann brauchst du nur noch die funktion und dann sowas wie




        With regEx
.Global = True
.MultiLine = True
.IgnoreCase = False
.Pattern = "^[0-9]+"
End With


findet alle zahlen vom Anfang  geht aber auch in der Mitte etc etc .
RegEx ist ein mächtiges Text such Werkzeug




Antwort bewerten Vielen Dank für Deine Bewertung
RakonDark 05.10.2016, 16:51

bzw :

regex($dieZelle.value, "^[0-9]+")
0

Was möchtest Du wissen?