Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Teilwerte aus Zellen auslesen

Teilwerte aus Zellen auslesen
11001011
Hallo Leute,
nach intensiver Suche hier im Forum bin ich leider nicht zur nötigen Lösung gelangt.
Folgendes Problem:
In Spalte B stehen jeweils Zahlen und Text-Werte; z.B. "1304 Alpha" oder "563 Gamma". Letztendlich möchte ich via VBA nur den Zahlenwert auslesen, sodass ich damit weiterarbeiten kann (soll in einer For-Schleife Verwendung finden). Die möglichen Ansätze mit "=links(Zelle,4)" und "Left(Zelle.Value, 4)" funktionieren hier leider nicht, da der Zahlenwert zu Beginn 1-4-stellig sein kann.
Nach meiner Auffassung müsste ich nun also den Zellenwert bis ein Zeichen vor dem Leerzeichen entnehmen. Hierzu fehlt mir jedoch leider ein Befehl. Ich weiss, dass es eine Möglichkeit gibt, Zellenwerte zu splitten und in zwei verschiedene Spalten zu schreiben. Das hilft mir jedoch hier nicht weiter, da die o.g. Excel-Tabelle eine exportierte Datei ist, auf die mittels VBA automatisch zugegriffen werden soll. Hier bleibt also leider kein Spielraum, um eine zusätzliche Spalte einzufügen, in welcher dann die geteilten Zellwerde der Spalte B eingetragen werden.
Habt Ihr zufällig ein ähnliches Problem gehabt und entsprechend eine funktionale Lösung entwickelt?
Ich bin für jeden Hinweis sehr dankbar!
Viele Grüße aus Köln
Christian
Anzeige
AW: Teilwerte aus Zellen auslesen
02.07.2010 16:25:30
Beverly
Hi Christian,
Mid("1304 Alpha", 1, InStr("1304 Alpha", " ") - 1) * 1



AW: Teilwerte aus Zellen auslesen
02.07.2010 16:30:17
11001011
Hallo und viele Dank! Mid und InStr waren mir tatsächlich nicht bekannt... und schon wieder was dazugelernt. Aber eine kurze Rückfrage hätte ich noch: wieso schreibst Du am Schluss: "* 1"?
Anzeige
Das ist nur 'ne Marotte aus der FmlPraxis;...
02.07.2010 17:43:38
Luc:-?
…damit kann man da aus Textzahlen echte Zahlen machen, Christian…
In VBA wäre eine der vbConvert-Fktt angebrachter, also hier wohl CInt bzw CLng.
Gruß Luc :-?
Genau meine Meinung : CInt() - s.o. _oT
02.07.2010 17:51:56
NoNet
_oT = "ohne Text"
Gruß, NoNet
gegen    2:1 unsere Nachbarn haben's vorgemacht : gegen    2:1

Anzeige
Kannste mal sehen, NoNet,...
02.07.2010 23:01:35
Luc:-?
…Madam geruhen unsere bescheidene (Fach-)Meinung zu ignorieren… ;->>
Gruß+schöWE, Luc :-?
Ganz schön daneben, NoNet,...
03.07.2010 20:57:57
Luc:-?
…nicht mal die Toranzahl insgesamt stimmt… ;-))
GrußLuc :-?
Ich weiß, ich war ein elender Pessimist...
04.07.2010 16:43:09
NoNet
...aber das in diesem Fall äußerst gerne
Gruß, NoNet
gegen    2:1
Anzeige
Hier scheint's realistischer, wenn... Gruß owT
05.07.2010 15:28:11
Luc:-?
:-?
...die linken Tore geschossen worden wären! owT
08.07.2010 21:26:24
Luc:-?
:-?
AW: Teilwerte aus Zellen auslesen
02.07.2010 18:50:32
Beverly
Hi Christian,
die Funktion Mid ergibt immer einen Text und durch Multiplikation mit 1 wird dieser Text (oder im gegebenen Fall diese "Textzahl") in eine "korrekte" Zahl umgewandelt.


Anzeige
Politisch korrekt oder nur EINFACH ?
02.07.2010 16:27:06
NoNet
Hallo Ë (Ist das ASCII-Zeichen für &h11001011 ;-),
suche Dir eine der beiden Varianten aus :
Sub PolitischKorrekt()
MsgBox CInt(Left(ActiveCell.Value, _
IIf(InStr(ActiveCell.Value, " ") > 0, _
InStr(ActiveCell.Value, " ") - 1, Len(ActiveCell.Value))))
End Sub

Sub EinfacherGehtsSo()
MsgBox Val(ActiveCell)
End Sub
Gruß, NoNet
gegen    2:1

Anzeige
AW: Politisch korrekt oder nur EINFACH ?
02.07.2010 16:32:31
11001011
Servus NoNet,
vielen Dank. Ich tendiere gerade zwar zu Beverly's Ansatz, aber mit Deinem werde ich gleich auch nochmal genauer rumspielen, um zu schauen, welche Lösung in meinem Fall besser anzuwenden sit.
Vielen Dank und Euch ein schönes Wochenende!
Christian
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Teilwerte aus Zellen auslesen in Excel


Schritt-für-Schritt-Anleitung

Um einen Teil einer Zelle in Excel auszulesen, kannst du die folgenden Schritte befolgen:

  1. VBA-Editor öffnen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Neues Modul erstellen:

    • Klicke im Menü auf Einfügen und wähle Modul, um ein neues Modul zu erstellen.
  3. Code einfügen:

    • Füge den folgenden Code in das Modul ein, um den Zahlenwert vor dem Leerzeichen auszulesen:
    Sub TeilwertAusZelleAuslesen()
       Dim zelle As String
       Dim teilwert As Variant
    
       zelle = ActiveCell.Value
       teilwert = Mid(zelle, 1, InStr(zelle, " ") - 1) * 1
    
       MsgBox "Der Teilwert ist: " & teilwert
    End Sub
  4. Makro ausführen:

    • Schließe den VBA-Editor und kehre zu Excel zurück.
    • Wähle die Zelle aus, die den Text enthält (z.B. "1304 Alpha"), und führe das Makro über Entwicklertools > Makros aus.

Häufige Fehler und Lösungen

  • Fehler: "Typ nicht unterstützt"

    • Lösung: Stelle sicher, dass die Zelle einen gültigen Textwert enthält. Leere Zellen oder nicht-Textwerte können diesen Fehler verursachen.
  • Fehler: "Leere Zelle"

    • Lösung: Überprüfe, ob die Zelle, von der du den Wert auslesen möchtest, tatsächlich Daten enthält.
  • Problem mit variablen Längen:

    • Wenn die Zahlen unterschiedlich lang sind, verwendet die Methode InStr den Index des Leerzeichens, um den Teilwert korrekt zu extrahieren.

Alternative Methoden

Falls du nicht mit VBA arbeiten möchtest, kannst du auch folgende Excel-Formeln verwenden:

  • Formel zur Extraktion des Teilwerts:

    =WERT(LINKS(A1;SUCHEN(" ";A1)-1))

    Diese Formel nimmt an, dass der Text in Zelle A1 steht. WERT konvertiert den extrahierten Text in eine Zahl.

  • Text in Spalten:

    • Du kannst die Funktion Text in Spalten unter dem Daten-Menü verwenden, um die Zellen basierend auf dem Leerzeichen zu splitten.

Praktische Beispiele

  1. Beispiel 1:

    • Bei der Zelle B2 mit dem Wert "563 Gamma" wird das Makro den Teilwert "563" auslesen.
  2. Beispiel 2:

    • Bei der Zelle B3 mit dem Wert "1304 Alpha" wird ebenfalls der Teilwert "1304" zurückgegeben.
  3. Beispiel 3:

    • Bei der Zelle B4 mit dem Wert "45 Test" wird das Ergebnis "45" angezeigt.

Tipps für Profis

  • Verwendung von CInt oder CLng:

    • Wenn du sicherstellen möchtest, dass der extrahierte Teilwert als Integer oder Long behandelt wird, kannst du die Funktionen CInt oder CLng in deinem VBA-Code verwenden.
  • Fehlerbehandlung einfügen:

    • Ergänze deinen Code mit einer Fehlerbehandlung, um unerwartete Eingaben abzufangen:
    On Error Resume Next
  • Testen verschiedener Eingaben:

    • Teste das Skript mit verschiedenen Formaten in den Zellen, um sicherzustellen, dass es robust ist.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Zellen gleichzeitig verarbeiten?
Du kannst eine Schleife in VBA verwenden, um durch mehrere Zellen zu iterieren und die Teilwerte auszulesen.

2. Was ist der Unterschied zwischen WERT und CInt?
WERT konvertiert Text zu einer Zahl, während CInt eine spezifische Umwandlung zu einem Integer-Wert vornimmt. CInt kann jedoch zu einem Fehler führen, wenn der Wert außerhalb des gültigen Bereichs liegt.

3. Funktioniert das auch in Excel Online?
VBA ist nicht in Excel Online verfügbar. Du musst die Formeln oder die Text in Spalten-Funktion verwenden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige