Erstmal ein Lob an dieses Forum und die ganzen aktiven Mitglieder, habe eine ganze Menge dazu gelernt und meine ganzen VBA Kenntnisse (NOOB in dieser Hinsicht) kommen aus diesem Forum.
Jedoch stehe ich vor einem Problem das ich bis dato nicht lösen konnte.
Es geht um ein Formatierungsproblem von Daten die ich in die Spalten (B2:E5000) eintragen lassen, die Menge der Daten ist variabel und die Daten (hier liegt das Problem denke ich) sind unterschiedlich vorformatiert, z.B.:
123,45
123.45
1,23.45
1.23,45
Diese ganzen Daten sollen aber in das US Amerikanische Zahlenformat also #,#0.00 formatiert werden, gelingt jedoch nicht. Dazu muss ich sagen, dass mein Laptop bereits als Default auf das US Amerikanische Format eingestellt ist genauso wie meine Excel Einstellungen.
So der erste Schritt der Bearbeitung meiner Daten ist das diese anhand der Zahlen (Ganzzahlen) in Spalte A sortiert werden und Texte sowie nicht nummerische Daten aus den anliegen Spalten gelöscht werden.
Hier die 1. Syntax, vll liegt der Formatierungsfehler darin, konnte ihn darin aber nicht feststellen:
Sub Lezeient()
With Range("A2:E" & Cells(Rows.Count, "A").End(xlUp).Row)
.Sort Key1:=Range("A2"), _
Order1:=xlAscending, _
Header:=xlNo, _
OrderCustom:=1, _
MatchCase:=False, _
Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
End With
Application.ScreenUpdating = False
Dim usedRows As Long
usedRows = ActiveSheet.UsedRange.Rows.Count
For Row = usedRows To 1 Step -1
If ActiveSheet.Cells(Row, 1) = "" Then
Rows(Row).Select
Selection.ClearContents
End If
Next
Application.ScreenUpdating = True
Dim z As Integer, s As Integer
s = 1 'Spaltenzahl, in welcher die letzten Zahlen sind
For z = 2 To 5000 'Letzten Zeile, in welcher sich Daten befinden
If Not IsNumeric(Cells(z, s).Value) Then
Rows(z).Select
Selection.ClearContents
End If
Next z
End Sub
Hier soweit so gut, alles klappt wunderbar, jetzt kommt das Problem, wenn ich Zahlendaten nutze die wie folgt formatiert sind:1,23.45 oder 123.45
funktioniert die 2. Syntax ohne Probleme, vermutlich weil sie ja bereits in dem gewünschten Format da ist. Nutze ich jedoch Zahlen wie:
1.23,45 funktioniert diese Syntax nicht, es verändert sich absolut nichts in den gewünschten Spalten:
Sub formatter()
Range(Cells(2, 2), Cells(Rows.Count, 5).End(xlUp)).Select
For Each xCell In Selection
Selection.NumberFormat = "##,###.00 ;[RED] -##,##0.00 ;0.00 ;@"
xCell.Value = xCell.Value
Next xCell
End Sub
Habe hierzu dann eine andere Syntax benutzt um diese in das entsprechende Format umzuwandeln, hierbei sind die Zellen dann zwar bereits vorformatiert mit der 2. Syntax und ich lösche lediglich den Punkt darin mit der 3. Syntax die wie folgt aussieht und einige Zahlen nehmen das gewünschte Format an:Sub dotchanger()
Dim Pusco_B As Integer, Pufo_B As Object, Pufim_B As String
Pusco_B = 2
With Columns(Pusco_B)
Set Pufo_B = .Find("*.*", LookAt:=xlPart)
If Not Pufo_B Is Nothing Then
Pufim_B = Pufo_B.Address
Do
If Pufo_B.Value Like "*.*" Then
If IsNumeric(Replace(Pufo_B, ".", "")) Then
Pufo_B.Value = Replace(Pufo_B, ".", "") * 1
End If
End If
Set Pufo_B = .FindNext(Pufo_B)
Loop While Not Pufo_B Is Nothing And Pufim_B Pufo_B.Address
End If
End With
USW
, ist nur die Syntax für eine Spalte (B) Davon gibt es noch die identischen für Spalte C,D & E. _
Was hier dann passiert ist, dass alle Zahlen die > 1000 sind, also so formatiert sind 1.000,00 in das gewünschte Format 1,000.00 formatiert werden. Alle Zahlen darunter bleiben so wie sie sind, ich vermute als Text also 999,00 = 999,00 und 0,0 ebenso. Habe auch shcon versucht mit *1 zu multiplizieren das klappt aber per vba und manuell in Excel auch nicht. Weiß keinen Rat mehr
Also wenn ihr meint ihr könnt irgendwie helfen, immer her mit den Vorschlägen ;-)
Entschuldigt wenn ich hier komische Begriffe benutze die so eigentlich gar nicht beim VBA etc _
benutzt werden, jeder Verbesserungsvorschlag ist erwünscht.
Schon mal vielen Dank!