Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
956to960
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
956to960
956to960
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

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

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

Anzeige
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

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

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

Anzeige
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

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige