多年来一直在使用这个网站,并享受使用vba自动执行繁重的任务。但现在我需要拜访专家。 我已经录制了一个宏来将我的csv文件转换为列,它工作正常 我不能用数字格式化两列。我尝试过录制几个场景并添加不同的命令。没有任何作用 我在丹麦工作。我必须每天执行12次以上。请帮助,thx。
数据如下所示:Before formatting
格式化后 After Formatting
我的代码适用于Text to Columns:
Selection.TextToColumns Destination:=Range("A1"),DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1)), TrailingMinusNumbers:=True
Columns("E:F").Select
Selection.Replace What:=".", Replacement:=","
我尝试使用键盘快捷键格式化单元格,并试图编写一些代码;其中包括:
'NumberFormat = "#.##0,00"
Columns("E:F").Value = Columns("E:F").Value
With Range("E:F")
.NumberFormat = "0"
.Value = .Value
End With
但他们不起作用。 是因为我正在使用丹麦语键盘吗?
答案 0 :(得分:0)
尝试使用.value=val(.value)
代替.Value = .Value
,如果它不起作用,请将格式行更改为.NumberFormat = "General"
如果它不起作用,则需要逐个循环遍历单元格并将它们转换为Numbers,代码下面肯定会有效。
Sub ConvertTextToNumbers()
Dim rng As Range
Dim cell As Range
Dim WS As Worksheet
Set WS = ActiveSheet 'change as needed
On Error Resume Next
Set rng = UsedRange.SpecialCells(xlCellTypeConstants)
On Error GoTo 0
If Not rng Is Nothing Then
For Each cell In rng
If IsNumeric(cell.Value) Then
cell.NumberFormat = "General"
cell.Value = Val(cell.Value)
End If
Next cell
End If
End Sub
答案 1 :(得分:0)
代替
.Value = .Value
使用
.TextToColumns
示例:
Columns("A:A").NumberFormat = "General"
Columns("A:A").TextToColumns
这项工作可以立即在整个范围内进行,不需要为单个单元格逐个循环运行。