AW: Spalten umkopieren >> Update
23.04.2015 15:33:33
UweD
hallo nochmal
Das Dez steht schon in der Txt-Datei drin.
Ich vermute, DEZ 55 war ursprünglich 12.55
- - -
Ich gehe jetzt davon aus, dass der Punkt als Dezimaltrennzeichen angesehen werden soll...
Das brauche ich zum größenmäßigen sortieren. Also lese die die Daten mit Komma anstelle Punkt ein.
Kann das nachher so bleiben?
Sub Spektrum()
On Error GoTo Fehler
Dim Dlg As FileDialog
Dim Pfad, Ext1$, Ext2$, Datei$
Dim i&, j%, LR&
Set Dlg = Application.FileDialog(msoFileDialogFolderPicker)
Dlg.InitialFileName = "C:\Temp\" 'Start-Verzeichnis
If Dlg.Show Then
Pfad = Dlg.SelectedItems(1)
Pfad = IIf(Right(Pfad, 1) = "\", Pfad, Pfad & "\")
Ext1 = ".txt": Ext2 = ".dat"
Datei = Dir(Pfad & "*" & Ext1)
Do While Len(Datei) > 0
Workbooks.OpenText FileName:=Pfad & Datei, Origin:=xlMSDOS, StartRow:=1, _
DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False, _
Space:=False, Other:=False, FieldInfo:=Array(Array(1, 9), Array(2, 9), _
Array(3, 1), Array(4, 1)), DecimalSeparator:=".", ThousandsSeparator:=",", _
TrailingMinusNumbers:=True
Application.ScreenUpdating = False
With ActiveWorkbook.Sheets(1)
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A:A"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
.Sort.SortFields.Add Key:=Range("B:B"), _
SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
.Sort.SetRange Range("A:B")
.Sort.Header = xlNo
.Sort.MatchCase = False
.Sort.Orientation = xlTopToBottom
.Sort.SortMethod = xlPinYin
.Sort.Apply
LR = .Cells(Rows.Count, 1).End(xlUp).Row 'letzte Zeile der Spalte jetzt A
j = 3
For i = LR To 2 Step -1
If .Cells(i, 1) = .Cells(i - 1, 1) Then
.Range(.Cells(i, 2), .Cells(i, j)).Copy .Cells(i - 1, 3)
.Rows(i).Delete xlUp
j = j + 1
Else
j = 3
End If
Next
End With
ActiveWorkbook.SaveAs FileName:=Pfad & Replace(Datei, Ext1, Ext2), _
FileFormat:=xlText, CreateBackup:=False
ActiveWindow.Close SaveChanges:=False
Datei = Dir() ' nächste Datei
Loop
End If
Err.Clear
Fehler:
If Err.Number 0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
End Sub
Gruß UweD