Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1020to1024
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
Textzahl umwandeln
10.11.2008 11:12:00
Stephan
Hallo zusammen,
ich habe folgendes Problem:
Mit dem u. a. Code werden Zeilen aus einer Datei in eine andere kopiert. Die Spalte B (B2:B65535) der Zieldatei ("Auswertung.xls)" soll nun aber zusätzlich noch mit 1 multipliziert werden, da diese ein Datum als Textzahl enthält und dieses in eine Zahl umgewandelt werden soll. Kann mir da jemand vielleicht weiterhelfen? Vielen Dank! Grüße, Stephan
With Workbooks("Auswertung BDE.xls").Sheets("Lijn3")
zl = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A1:BT" & zl).Copy Destination:=Workbooks("Auswertung.xls").Sheets("Lijn3").Range("A1")
End With

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Textzahl umwandeln
10.11.2008 11:19:24
David
Hallo Stephan,
Range(...).Formula = Range(...).Value wandelt Textzahlen in "richtige" Zahlen um
Gruß
David
AW: Textzahl umwandeln
10.11.2008 11:48:27
Stephan
Hallo David!
vielen Dank für deine schnelle Antwort! Ich habe es ausprobiert, aber das haut so nicht hin. Wenn ich die Zellen anschließend mit "Bearbeiten", "Gehe zu", "Inhalt", "Konstanten" und "Text" überprüfe, markiert er diese immer noch als Text.
With Workbooks("Auswertung BDE.xls").Sheets("Lijn3")
zl = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A1:BT" & zl).Copy Destination:=Workbooks("Auswertung.xls").Sheets("Lijn3").Range("A1")
Range("B2:B65535").Formula = Range("B2:B65535").Value
End With
Anzeige
AW: Textzahl umwandeln
10.11.2008 11:55:00
David
Weise dem Bereich vorher noch per
.Range(...).Numberformat = "General"
das Standardformat zu, oder alternativ halt das gewünschte Format (siehe Hilfe zu Numberformat).
Anschließend sollte das funzen, übrigens auch mit .Value = .Value
Beispiel:
Formatiere in einer leeren Datei den Bereich von A1:A5 als Text und gib dort Zahlen ein. Anschließend wandelt dieser Code diese "Textzahlen" in "richtige" Zahlen um:

Sub test()
With Range("A1:A5")
.NumberFormat = "General"
.Value = .Value
End With
End Sub


Gruß
David

Anzeige
AW: Textzahl umwandeln
10.11.2008 14:06:38
Stephan
Hallo David,
Danke für deinen Tipp!
Wenn ich aber denn folgenden Code verwende, kopiert er mir nicht die als Text formatierten Zellen aus der Quelldatei. Diese sollen aber natürlich mitkopiert werden, in eine Zahl umgewandelt werden, die aber in der Zieldatei wiederum im Datumsformat (nicht als Text) dargestellt werden sollen. Also ungefähr so: Quelldatei in Zelle B2: 10.11.2008 (das ist die Textzahl) Zieldatei Zelle B2: 10.11.2008 (Zahl im Datumsformat).
Hintergrund ist: In der Zieldatei wird eine Auswertung über den Autofilter gemacht. Dieser erkennt anscheinend keine Textzahlen. Ich habe es auch schon mit NumberFormat ="General" versucht. Das funktioniert aber auch nicht. Grüße, Stephan
With Workbooks("Auswertung BDE.xls").Sheets("Lijn3")
zl = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A1:BT" & zl).Copy Destination:=Workbooks("Auswertung.xls").Sheets("Lijn3").Range("A1")
.Range("B2:B65535").NumberFormat = "dd.MM.yyyy"
.Range("B2:B65535").Range("B2:B65535").Formula = Range("B2:B65535").Value
End With
Anzeige
AW: Textzahl umwandeln
10.11.2008 14:21:00
David
Lange Rede, kurzer Sinn:
Ladt doch mal ein Beispiel hoch, aus dem man deine Quelldaten und auch deine Zieldaten, so wie sie sein sollen, erkennen kann. Sonst ist das hier nur ein Aneinander-Vorbei-Reden und Rum-Rätseln.
Gruß
David
AW: Textzahl umwandeln
10.11.2008 15:16:44
Stephan
Hallo David,
lade ich morgen hoch, da ich jetzt nicht mehr an meinem Arbeitsplatz sitze.
Vielen Dank nochmals für deine Geduld!
Grüße, Stephan
AW: Textzahl umwandeln
11.11.2008 15:35:54
Stephan
Hallo David,
ich habe jetzt mal eine Beispieldatei hochgeladen. Wenn ich allerdings in der Quelldatei die Zelle mit dem als Text formatierten Datum mit F2 und anschließend Enter bearbeite, wird dieses Datum nachher im Autofilter auch berücksichtigt.
Hast du vielleicht einen Vorschlag, wie man die Zellen schon vorher als Zahl formatieren kann, allerdings so, dass sie noch als Datum angezeigt werden. Vielen Dank! Grüße, Stephan
https://www.herber.de/bbs/user/56678.xls
Anzeige
AW: Textzahl umwandeln
11.11.2008 15:46:42
David
Hallo Stephan,
in deinem Beispiel ist die Spalte B in beiden Blättern als Datum formatiert.
Ich erkenne das Problem nicht.
in dem Makro passt auf jeden Fall was nicht:
der Ausdruck Range("A1:D15" & zl) ergäbe bei zl = 14 den Ausdruck
Range("A1:D1514") was m. E. keinen Sinn ergibt.
Gruß
David
AW: Textzahl umwandeln
12.11.2008 08:36:46
Stephan
Hallo David,
das mit dem Ausdruck Range("A1:D15" & zl) funktioniert aber so weit.
Mein Problem liegt eher beim Datumsformat. Wenn du dir mal nach dem Daten abrufen mit "Bearbeiten" -"Gehe zu" - "Inhalte" - "Konstanten" markieren - Häkchen bei "Text" setzen das Format anzeigen lässt, wirst du sehen, das es sich bei den beiden Einträgen "06.11.2008" auf beiden Tabellenblättern um Text handelt. Und genau diese beiden Einträge werden vom Autofilter bei einer späteren, makrogesteuerten Filterung nicht berücksichtigt. Wähle ich den 06.11.2008 im Autofilter manuell aus, funktioniert es. Wenn du im Tabellenblatt "Lijn3" einen Eintrag "06.11.2008" mal markierst, F2 und anschließend Enter drückst und dir dann noch mal mit dem o. g. Weg die Formatierung anzeigen lässt, wirst du sehen, dass Excel das Datum nun als Zahl erkennt und logischerweise auch später bei der autom. Filterung berücksichtigt. Kann es sein, dass ich das Datum vorher vielleicht mit 1 multiplizieren muss, damit es von Excel als Zahl erkannt wird? Gruß, Stephan
Anzeige
AW: Textzahl umwandeln
12.11.2008 10:53:29
David
Hallo Stephan,
diese Tabelle ist wirklich kurios. Nachdem ich nun eine ganze Weile rumprobiert habe und fast verzweifelt bin, habe ich folgenden Lösungsansatz gefunden:

Sub test()
With Worksheets("Lijn3")
zl = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A1:D" & zl).Copy Destination:=Sheets("Lijn3.").Range("A1")
End With
For Each c In Worksheets("Lijn3.").Range("B1:B" & zl)
c.Value = CDate(c.Value)
Next
End Sub


Allerdings verstehe ich die Ursache des Problems nicht wirklich. Diese Zellen unterscheidet nichts von den anderen. Ich war schon der Meinung, es liegt an der Datei selbst, dass diese fehlerhaft ist. Vielleicht noch mal neu aufbauen und schauen, ob das immer noch so ist. Alternativ ist irgendwas an den zu Grunde liegenden Daten schräg.
Für weitergehende Recherchen habe ich nicht die Infos und außerdem bin ich da auch mit meinen VBA-Kenntnissen am Ende.
Hoffe, meine Lösung hilft dir trotzdem ein wenig weiter, auch wenn es ja nur ein "Workaround" ist.
Gruß
David

Anzeige
AW: Textzahl umwandeln
12.11.2008 11:48:00
Stephan
Hallo David,
das kannst du wohl laut sagen!
Aber erst einmal vielen Dank für deine Geduld und Mühe!
Ich werde deinen Ansatz testen und du bekommst natürlich ein Feedback.
Die beiden Einträge "06.11.2008" wurden durch ein Makro erstellt, die anderen hingegen mit der Formel "=HEUTE()". Ich vermute, dass Excel den 06.11.2008 als Text erkennt und die anderen halt als Wert (siehe: "Gehe zu" - "Inhalte" ....etc.). Über das Kontextmenü wird beides als Datum angezeigt, was aber anscheinend nicht richtig ist. Und der makrogesteuerte Autofilter findet diesen Text halt irgendwie nicht. Bei der manuellen Auswahl allerdings schon. Ist schon wirklich sehr merkwürdig. Grüße, Stephan
Anzeige
AW: Textzahl umwandeln
12.11.2008 11:55:49
David
mir ist noch aufgefallen:
wenn du die "sonderbaren" Einträge mit der Zeile
... = Format(Date, "dd.MM.yyyy")
erzeugst, ist das meines Wissens auf jeden Fall Text (Entspricht der Excel-Funktion =TEXT()). Wenn du das vermeiden kannst, indem du die Quelldaten per Cdate() ausliest, funzt es vielleicht ohne "Krücken".
Gruß
David
AW: Textzahl umwandeln
12.11.2008 14:57:43
Stephan
Hi David,
ich habe den Code angepasst und es funktioniert anscheinend. Allerdings dauert der Abrufvorgang _ jetzt ungefähr knapp 2 Minuten. Woran könnte das liegen?Das ist nur ein Code-Ausschnitt, darum kein

Sub & End Sub


With Workbooks("Auswertung BDE.xls").Sheets("Lijn3")
zl = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A1:BT" & zl).Copy Destination:=Workbooks("Auswertung.xls").Sheets("Lijn3").Range("A1")
End With
For Each c In Workbooks("Auswertung.xls").Sheets("Lijn3").Range("B2:B" & zl)
c.Value = CDate(c.Value)
Next
.......usw.

Anzeige
AW: Textzahl umwandeln
12.11.2008 15:12:51
David
Da er die Spalte B nun Zeile für Zeile durchgehen muss, kann das abhängig von der Größe des Bereiches schon eine Weile dauern.
Die "üblichen" Beschleunigungsmöglichkeiten hast du schon eingebaut?
(Screenupdating & Co.)
Gruß
David
AW: Textzahl umwandeln
12.11.2008 15:34:00
Stephan
Hi David,
Application.ScreenUpdating=False am Anfang und True zum Schluß sind drin. Und was meinst du mit Co.?
Gruß, Stephan
AW: Textzahl umwandeln
12.11.2008 15:36:00
David
Application.Calculation = XlManual
Application.EnableEvents = False
am Schluß jeweils wieder "umdrehen"
Such mal hier im Forum nach "GetMoreSpeed".
Gruß
David
AW: Textzahl umwandeln
12.11.2008 16:08:00
Stephan
Die beiden hab ich nicht drin. Was bewirken die denn?
Anzeige
AW: Textzahl umwandeln
12.11.2008 16:10:49
David
Berechnung auf Manuell
Abschalten der Überwachung von Ereignissen
Hast du denn mal gesucht!?
Gruß
David
AW: Textzahl umwandeln
12.11.2008 16:21:00
Stephan
Setze ich die am Anfang auch direkt unter Application.ScreenUpdating=False und am Ende unter Application.ScreenUpdating=True?
AW: Textzahl umwandeln
12.11.2008 16:23:15
David
sorry, aber ich habe keine Lust, alles doppelt und dreifach zu erzählen.
Suche im Forum nach "GetMoreSpeed", da findest du fertigen (!) Code.
Gruß
David
AW: Textzahl umwandeln
12.11.2008 16:28:50
Stephan
Zu Application.Calculation = XlManual und Application.Calculation = XlAutomatic hatte ich auch schon was gefunden. Nur war daraus nicht ersichtlich, wo diese Funktionen im Code eingefügt werden. Trotzdem Danke für Deine Hilfe! Bin dadurch schon wieder ein Stück weiter gekommen. Grüße, Stephan

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige