Rückwandlung umgewandelter Datumswerte

03/09/2008 - 12:29 von Frank Vellner | Report spam
Hallo NG,

vorab schonmal Entschuldigung, weil das bestimmt schonmal gefragt
wurde - allein im Wust von Fragen zu Datum, Umwandlungen usw. finde ich
es nicht.

Ich muss Zahlen aus dem US-Format (Punkt als Trenner) aus der
Zwischenablage in Excel einfügen. Dabei wandelt Excel (2007) natürlich
einige Wert wie 4.9 gleich in das Daum 04.09.2008 um. Kann ich diese
Wandlerei:

a) ganz unterbinden oder
b) über einfaches "wechseln" wieder rückgàngig machen

Sicherlich wàre es eine Lösung, die Daten aus der Zwischenablage erst
woanders einzufügen, in den betroffenen Spalten (leider nicht allen...)
das . gegen , zu tauschen und dann in Excel zu übernehmen. Da ich die
Sache aber recht hàufig machen muss, wàre eine schnellere Lösung toll.

Viele Grüße
Frank
 

Lesen sie die antworten

#1 Peter Schleif
03/09/2008 - 15:04 | Warnen spam
Frank Vellner schrieb am 03.09.2008 12:29 Uhr:

Ich muss Zahlen aus dem US-Format (Punkt als Trenner) aus der
Zwischenablage in Excel einfügen. Dabei wandelt Excel (2007) natürlich
einige Wert wie 4.9 gleich in das Daum 04.09.2008 um. Kann ich diese
Wandlerei:

a) ganz unterbinden oder



Eine Umstellung des Dezimal- und Tausender-Trennzeichens könnte helfen
oder eine Umstellung der Windows-Regional-Einstellungen.


b) über einfaches "wechseln" wieder rückgàngig machen



AFAIK Nein.


Sicherlich wàre es eine Lösung, die Daten aus der Zwischenablage erst
woanders einzufügen



Du könntest die Zwischenablage mit VBA auslesen und die korrigierten
Zahlen an der ausgewàhlten Stelle einfügen. Der Code unten wertet die
Zwischenablage zeilenweise aus. Als Spalten-Trenner wird der Tabulator
erwartet. Den Code kannst Du z.B. mit einem Button verbinden und bei
Bedarf ausführen. Vorher linke, obere Zelle des Ziel-Bereichs auswàhlen.

Es werden US-Zahlen erkannt:

- Dezimal-Trenner ist "."
- Tausender-Trenner ist "," oder " "
- Optional ein führendes "+" oder "-"
- Optional ein angehàngter Exponent

4.9
-4.9
1.234
-123.456
1234.56E+2
1,234,567
1 234 567E-3

Peter

Sub clipboard_to_excel()
Static regex As Object
Static html As Object
Dim text As String
Dim zeilen As Variant
Dim spalten As Variant
Dim z As Integer
Dim s As Integer

Const FORMAT_BEIBEHALTEN = False

If regex Is Nothing Then Set regex=CreateObject("VBScript.RegExp")
If html Is Nothing Then Set html =CreateObject("htmlfile")

regex.Pattern="^([+-]?)\s*(\d{1,3}([, ])\d{3}(?:\3\d{3})*|(\d+))" _
& "(?:\.((?:\d{3}\3)+\d{1,3}|\d+))?([eE][+-]?\d+)?$"

zeilen=Split(html.ParentWindow.ClipboardData.GetData("text"),vbCrLf)

For z = 0 To UBound(zeilen)
spalten = Split(zeilen(z), vbTab)
For s = 0 To UBound(spalten)
text = spalten(s)
With Selection
If Not regex.Test(text) Then
.Offset(z, s) = text
Else
If FORMAT_BEIBEHALTEN Then
.Offset(z, s) = Replace(Replace( _
regex.Replace(text, "$1$2|$5"), _
regex.Replace(text, "$3"), "."), "|", ",")
Else
.Offset(z, s).NumberFormat = "General"
.Offset(z, s) = Val(Replace(Replace( _
regex.Replace(text, "$1$2|$50$6"), _
regex.Replace(text, "$3"), ""), "|", "."))
End If
End If
End With
Next
Next
End Sub

Ähnliche fragen