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

Forumthread: Einzelne Ziffern einer Zahl zurückgeben

Einzelne Ziffern einer Zahl zurückgeben
29.02.2008 17:30:00
Jürgen
Hallo,
irgendwie stehe ich auf dem Schlauch. Ich will aus einer Zeichenkette einzelne Zeichen zurückgeben.
Dazu verwende ich die Code-Zeile
z.B.
b = Range("A1").Characters(1, 1).Text
Das funktioniert nur, wenn in A1 ein Text steht, also z.B. "95231-A"
Dann wird für b 9 angezeigt.
Steht in A1 aber nur 95231 (selbst wenn es als Text formatiert ist) dann kommt Laufzeitfehler 1004:
"Die Text-Eigenschaft des Character-Objekts kann nicht zugeordnet werden."
Ich habe eine lange Latte von Eingaben, die z.T. eindeutige Strings aber auch einige als Text formatierte Zahlen darstellen. Bei einer Prüfroutine auf unerlaubte Zeichen will ich diesen obigen Code verwenden.
Kann mir jemand sagen, wie ich dies machen kann kann.
Danke im Voraus.
Jürgen

Anzeige

14
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Einzelne Ziffern einer Zahl zurückgeben
29.02.2008 18:18:00
Tino
Hallo,
hilft dir dies, habe zwar Office 2003 aber vielleicht geht es ja?
Sub test() Dim a As Long For a = 1 To 10 If IsNumeric(Cells(a, 1)) And Cells(a, 1) > "" Then MsgBox Cells(a, 1).Address & ": Ich bin eine Zahl!" ElseIf Cells(a, 1) > "" Then MsgBox Cells(a, 1).Address & ": Ich bin keine Zahl!" End If Next a End Sub


Gruß
Tino

Anzeige
AW: Einzelne Ziffern einer Zahl zurückgeben
29.02.2008 18:24:00
Renee
Hi Jürgen,
selbst wenn es als Text formatiert ist das glaub ich nicht.
Aber mir ist völlig unklar wieso du das so kompliziert machen willst und den die einzelnen Stellen nicht einfach in einer Schleife, die über die Länge des Values (als String) läuft ? Die .Characters Eigenschaft auszulesen, macht eigentlich nur Sinn, wenn du diese z.B. speziell formatieren willst und das wiederum natürlich nur bei Text-Strings.
GreetZ Renée

Anzeige
AW: Einzelne Ziffern einer Zahl zurückgeben
29.02.2008 18:40:16
Erich
Hi Renée,
wider Erwarten kann das "selbst wenn es als Text formatiert ist" stimmen:
Gib mal in eine Standardformat-Zelle eine Zahl ein und formatier die Zelle dann als Text.
Flugs sieht das Ganze wie ein Text aus (linksbündig), in der Zelle steht aber nach wie vor eine Zahl,
und Characters... führt zu einem Fehler.
Hi Jürgen,
"Characters" hat einen anderen Zweck als den, den du verfolgst.
Du solltest mit Left, Mid und Right arbeiten, dafür sind diese Funktionen da.
Dann ist auch egal, ob in einer Zelle Text oder Zahl steht - Zahl wird automatisch in Text konvertiert.
Wenn du etwa die 3. Stelle von A1 brauchst: Mid(range("A1),3,1)
Hi Tino,
IsNumeric hilft hier nicht. IsNumeric prüft nicht, ob etwas eine Zahl ist,
sondern ob sich etwas in eine Zahl umwandeln lässt.
IsNumeric(Range("A1")) ist True, wenn in A1 der Text "123" steht.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Einzelne Ziffern einer Zahl zurückgeben
29.02.2008 19:02:10
Tino
Hallo Erich,
ja du hast Recht.
Aber ich kann von vornherein feststellen,
ob der gesamte Inhalt einer Zelle eine Zahl oder ein Text ist.
Bsp:
 AB
1546874A1256ist Text
205468741256ist Zahl


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Gruß
Tino

Anzeige
AW: Einzelne Ziffern einer Zahl zurückgeben
29.02.2008 19:30:39
Erich
Hallo Tino,
wie hast du Spalte B ermittelt?
Hier mal ein paar Beispiele, an denen man sehen kann, dass die Excel-Fkt. ISTZAHL und ISTTEXT
verlässlich ausgeben, was in einer Zelle steht.
IsNumeric liefert in Zeile 3 ein WAHR. Das heißt aber nur,
dass der Inhalt von A3 in eine Zahl umgewandelt werden kann.
In A3 steht ein Text mit drei Zeichen, aber keine Zahl.
 ABCDEF
1EingabeISTTEXTISTZAHLIsNumericCharactersFormat
21a2WAHRFALSCHFALSCHaStandard
3123WAHRFALSCHWAHR2A2 war vor Eingabe der 123 als Text formatiert
4132FALSCHWAHRWAHRFehlerA3 wurde nach Eingabe der 123 als Text formatiert
5123FALSCHWAHRWAHRFehlerStandard

Formeln der Tabelle
ZelleFormel
B2=ISTTEXT(A2)
C2=ISTZAHL(A2)

Die Werte in den Spalten D und E wurden so ermittelt:

Sub numerisch()
Dim zz As Long
On Error Resume Next
For zz = 2 To 5
Cells(zz, 4) = IsNumeric(Cells(zz, 1))
Cells(zz, 5) = Cells(zz, 1).Characters(2, 1).Text
If Err > 0 Then Cells(zz, 5) = "Fehler": Err = 0
Next zz
End Sub

Und hier die Mappe zum Spielen:
https://www.herber.de/bbs/user/50315.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Einzelne Ziffern einer Zahl zurückgeben
29.02.2008 19:45:14
Tino
Hallo,
ja ich dachte auch es ginge darum.
Dein Beispiel in A3, ist zwar als Text formatiert ist aber dennoch eine Zahl!
Mir geht es ja eher darum, nachdem ich festgestellt habe, dass zBsp. ein Wert
keine Zahl ist, weil Buchstaben im Wert enthalten sind, könnte ich nun weiter machen und
in einer Schleife den Wert zerlegen und feststellen an welchen stellen zBsp. die Buchstaben stehen.
In deinem Beispiel ist eben nur A1 keine echte Zahl.
Also bräuchte ich diese Schleife nur auf A1 anwenden, weil die anderen sowieso keine Buchstaben enthalten.
Aber ich denke, dass was du vorschlägst ist eher dass was Jürgen sucht!
Gruß
Tino

Anzeige
AW: Zahlen als Texte
29.02.2008 20:03:56
Erich
Hallo Tino,
da regt sich in mir Widerspruch.
"In deinem Beispiel ist eben nur A1 keine echte Zahl." stimmt nicht - der Wert A3 ist KEINE Zahl,
sondern ein Zeichenkette aus 3 Zeichen, die auch Buchstaben sein könnten.
Nur in A3 und A4 stehen Zahlen.
Du kannst dir das so vorstellen:
Für den Wert der Formel ="A2345" werden 5 Byte zum Speichern benötigt, pro Zeichen ein Byte.
Für den Wert der Formel ="12345" werden 5 Byte zum Speichern benötigt, pro Zeichen ein Byte.
Für den Wert der Formel =12345 werden 4 Byte zum Speichern benötigt (für eine Integer-Zahl).
Den Unterschied zwischen Zeichenketten, die aus Ziffern bestehen, und Zahlen
kannst du beim (Standard-)Sortieren sehen.
Wenn es sich um Texte handelt, wird 123 vor 20 einsortiert, bei Zahlen ist es natürlich umgekehrt.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Zahlen als Texte
29.02.2008 20:15:00
Tino
Hallo,
vielleicht hast du mich jetzt falsch verstanden, was ich sagen wollte.
Was ich unter echte Zahl gemeint habe, ist was allgemein als Zahl Interprediert wird,
egal ob die Zelle in einem Textformat ist.
Also: 123456 ist eine Zahl, 0123456 ist eine Zahl
123_456 ist keine Zahl, 123A456B ist keine Zahl
Gruß
Tino

Anzeige
AW: ISTZAHL versus IsNumeric
29.02.2008 19:44:00
Erich
Hallo nochmal,
hier eine etwas bereinigte und in Spalte F um Mid(...) ergänzte Mappe:
https://www.herber.de/bbs/user/50318.xls
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

AW: Einzelne Ziffern einer Zahl zurückgeben
29.02.2008 20:16:12
Renee
Hi Erich,
Interessante Feststellung.
Wenn Du die Reihenfolge umkehrst, geht's:
1. Formatiere Zelle als Text
2. Schreibe eine Zahl rein.
Das Verhalten ist für mich noch nicht logisch erklärbar. Irgendwie wird die .Characters Eigenschaft in Fall 'nachträgliches' Formatieren von Zahl in Text schlicht nicht angelegt.
GreetZ Renée

Anzeige
AW: Characters bei Zahlen
29.02.2008 20:29:24
Erich
Hi Renée,
ich glaube schon, dass das logisch ist.
Nachträgliches Formatieren einer Zelle ändert NIE etwas am Inhalt/Wert der Zelle,
in der Zelle steht also immer noch eine Zahl, kein Text.
Im Hilfetext zur Characters-Eigenschaft:
Gibt ein Characters-Objekt zurück, das einen Bereich von Zeichen innerhalb des Objekttextes darstellt.
Mit dem Characters-Objekt können Sie Zeichen innerhalb einer Zeichenfolge formatieren.
ist das Wort "Objekttext" spannend. Eine Zelle im Zahl-Inhalt hat keinen Objekttext.
Zahlen werden nicht automatisch in Objekttexte umgewandelt,
so wie das bei der Umwandlung in Zeichenketten (in Excel) oder Strings (in VBA) normal ist.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Anzeige
AW: Characters bei Zahlen
29.02.2008 20:59:26
Renee
Hi Erich,
Der Hilfetext ist mir bekannt. Auch
Nachträgliches Formatieren einer Zelle ändert NIE etwas am Inhalt/Wert der Zelle ist mir klar.
Trotzdem ist das Ganze für mich leicht inkonsistent.
Wenn ich in eine 'nachträglich' formatierte Zelle mit einer Zahl doppelklicke, oder F2 drücke und die Zelle wieder verlasse (d.h. ohne irgendeine andere Taste) bekommt die Zelle den Objekttext.
Für mich wäre es konsistenter, wenn dieser bei der Formatierung auf ein Text angelegt würde.
GreetZ Renée

Anzeige
AW: Characters bei Zahlen
01.03.2008 13:48:48
Jürgen
Hallo Erich, Renee, Tino...
da habe ich ja was losgetreten. Vielen Dank für eure Hilfe.
Ich habe mich nun entschieden, die ganze Sache mit einer Schleife und der Mid-Funktion zu machen. Und es geht hervorragend.
Schönes WE
wünscht
Jürgen

AW: Characters bei Zahlen
29.02.2008 20:39:00
Erich
Hi Renée,
noch eine Überlegung dazu:
Wenn man sich vorstellt, wie eine Zahl intern binär gespeichert ist:
Welchen Sinn hätte es, mit Characters etwa auf die vierte Stelle der Zahl zuzugreifen,
um die Schriftfarbe zu ändern? (Für derlei Dinge verwendet man Characters.)
Das ergibt nur bei Texten (die auch nur aus Ziffern bestehen können) einen Sinn.
Bei einer Zahl hängt die (sichtbare) "Stelle" ja auch davon ab, wie die Zahl formatiert ist,
z. B. mit führenden Nullen.
Grüße von Erich aus Kamp-Lintfort
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

Einzelne Ziffern einer Zahl zurückgeben


Schritt-für-Schritt-Anleitung

Um in Excel einzelne Ziffern einer Zahl zurückzugeben, kannst Du die Funktionen MID, LEFT oder RIGHT verwenden, anstatt die Characters-Eigenschaft. Hier ist eine einfache Anleitung:

  1. Zelle vorbereiten: Gib Deine Zahl in eine Zelle ein, z.B. in Zelle A1.
  2. Ziffer extrahieren: Benutze die MID-Funktion, um eine bestimmte Ziffer zurückzugeben. Wenn Du zum Beispiel die dritte Ziffer aus A1 extrahieren möchtest, kannst Du die folgende Formel verwenden:
    =MID(A1, 3, 1)

    Diese Formel gibt die dritte Ziffer der Zahl in A1 zurück.

  3. Zahl zerlegen: Um alle Ziffern einer Zahl einzeln zu extrahieren, kannst Du eine Schleife in VBA verwenden. Hier ist ein einfaches Beispiel:

    Sub ZiffernZerlegen()
       Dim i As Integer
       Dim zahl As String
       zahl = Cells(1, 1).Value ' Wert aus Zelle A1
    
       For i = 1 To Len(zahl)
           Cells(i + 1, 2).Value = Mid(zahl, i, 1 ' Ziffern in Spalte B ausgeben
       Next i
    End Sub

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt auf, wenn Du versuchst, die Characters-Eigenschaft einer Zahl zu verwenden. Stattdessen solltest Du die oben beschriebenen Funktionen wie MID verwenden.

  • Zelle als Text formatiert: Wenn eine Zelle als Text formatiert ist, aber eine Zahl enthält, kann das zu Verwirrung führen. Stelle sicher, dass Du die Zelle richtig formatierst, bevor Du die Ziffern extrahierst.


Alternative Methoden

Wenn Du Excel-Zahlen auseinandernehmen möchtest, gibt es mehrere Methoden:

  1. Text-to-Columns: Du kannst die Funktion "Text in Spalten" verwenden, um Ziffern in separate Spalten zu zerlegen, wenn die Zahl als Text eingegeben wurde.
  2. Array-Formeln: Nutze Array-Formeln, um mehrere Ziffern gleichzeitig zu extrahieren.

Hier ist ein Beispiel für eine Array-Formel:

=TEXT(MID(A1, ROW(INDIRECT("1:"&LEN(A1))), 1), "0")

Praktische Beispiele

  1. Summe der Ziffern einer Zahl: Wenn Du die Summe der Ziffern einer Zahl berechnen möchtest, kannst Du die Ziffern erst extrahieren und dann summieren:

    Function SummeZiffern(zahl As String) As Integer
       Dim i As Integer
       Dim summe As Integer
       summe = 0
       For i = 1 To Len(zahl)
           summe = summe + CInt(Mid(zahl, i, 1))
       Next i
       SummeZiffern = summe
    End Function
  2. Unterschied zwischen Ziffer und Zahl: Eine Ziffer ist ein einzelnes Zeichen (0-9), während eine Zahl eine Kombination dieser Ziffern ist. Um den Unterschied klar zu machen, kann die Funktion ISTZAHL verwendet werden, um zu prüfen, ob der Inhalt einer Zelle eine Zahl ist.


Tipps für Profis

  • VBA zur Automatisierung nutzen: Wenn Du regelmäßig mit großen Datenmengen arbeitest, kann VBA helfen, den Prozess der Ziffernextraktion zu automatisieren.
  • Fehlerbehandlung: Implementiere Fehlerbehandlung in Deinen VBA-Skripten, um Laufzeitfehler zu vermeiden. Nutze On Error Resume Next, um Fehler zu ignorieren oder spezifische Fehlerbehandlungsroutinen zu erstellen.

FAQ: Häufige Fragen

1. Wie kann ich die Anzahl der Ziffern einer Zahl in Excel ermitteln?
Du kannst die Funktion LEN verwenden, um die Anzahl der Ziffern in einer Zahl zu ermitteln:

=LEN(A1)

2. Was ist der Unterschied zwischen Ziffer und Zahl in Excel?
Eine Ziffer ist ein einzelnes Zeichen (0-9), während eine Zahl aus einer oder mehreren Ziffern bestehen kann. In Excel wird eine Zelle mit nur Ziffern als Zahl betrachtet, auch wenn sie als Text formatiert ist.

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