在Excel中使用VBA将文本转换为数字

3
由于某些原因,Excel将我的数字转换为文本,并在列E3和F3的每个单元格中添加一个前置撇号。
我需要将列E3:F3转换回数字并将它们格式化为货币。我该怎么做?
A1:K2是标题。
以下代码无效:
Set wb = objApp.Workbooks.Open("aFile.xls", True, False)
wb.Sheets(1).Rows(2).Delete
wb.Sheets(1).Range("E3:F3") = Mid(wb.Sheets(1).Range("E3:F3"), 2,
                              Len(wb.Sheets(1).Range("E3:F3")) - 2)
wb.Sheets(1).Range("E3:F3").NumberFormat = "$#,##0.00"
6个回答

2
如果你的文本只是一个数字,答案很简单。将它乘以1即可。
例如,单元格A1='00001234'或公式/宏返回一段文本,则将答案乘以1。"00001234" * 1 = 1234.
我想从VBA表单中提取标签或txtBox的值。
Num = lblText * 1
另一个例子:If .txtLevel10 * 1 > 50 Then...等等。
还适用于其他某些数据类型:"16-Jan-15" *1 = 16/1/15
在Excel和VBA中有效,但前提是原始文本中没有其他字符。 祝好!

1

尝试:

Range("E3:F3").Style = "Currency"

没有起作用,但还是谢谢。 - Bruno

1

假设您想要与工具栏获得相同的货币格式,可以使用以下方法:

wb.Sheets(1).Range("E3:F3").Formula = wb.Sheets(1).Range("E3:F3").Value
wb.Sheets(1).Range("E3:F3").Style = "Currency"

如果使用worksheet.Range()而没有指定属性,Excel会猜测你实际需要的属性(这被称为“默认属性”),结果会不一致。


不错,它确实起作用了。您如何使整个列以这种方式格式化,除了E1、E2、F1、F2(这是该列的标题)之外?谢谢! - Bruno
你可能需要执行类似于 Range("E:F").Style = "Currency" 的操作,然后修复标题:Range("E1:F2").Style = "Normal" - BradC
这似乎已经起作用了:wb.Sheets(1).Range("E:F").Formula = wb.Sheets(1).Range("E:F").Value wb.Sheets(1).Range("E:F").Style = "Currency" - Bruno

0

尝试突出显示该列并执行数据-> 文本到列(Excel 2003; 在2007+中,文本到列在其中一个功能区中)。 点击“分隔符”,然后“下一步”,再次“下一步”,然后选择常规格式。 这应该将整个列转换为数字。

如果这有效,它很容易自动化。 如果您需要代码,请告诉我。

编辑-您必须逐列进行操作。


0

这个实际上可行。关键是在设置值之前应用格式:

Set wb = objApp.Workbooks.Open("aFile.xls", True, False)
wb.Sheets(1).Rows(2).Delete

wb.Sheets(1).Range("E3:F3").NumberFormat = "$#,##0.00"

For Row = 3 To 3 'your rows range in case you need iterate through (1 row only in your case)
    For Column = 5 To 6 'E3:F3
        wb.Sheets(1).Cells(Row, Column) = Mid(wb.Sheets(1).Cells(Row, Column), 2, Len(wb.Sheets(1).Cells(Row, Column)) - 2)
    Next Column
Next Row

0
Len(wb.Sheets(1).Range("E3:F3"))

对我来说,这只是(意料之中)抛出了一个错误。您必须逐个处理每个单元格才能使用您的方法。

Dim c as Range
Set wb = objApp.Workbooks.Open("aFile.xls", True, False)    

With wb.Sheets(1)
   .Rows(2).Delete    
   For each c in .Range("E3:F3").cells
     c.Value = Mid(c.value, 2, Len(c.value)-2) 
     c.NumberFormat = "$#,##0.00"
   next c
End With

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接