在Excel中将文本转换为数字

出于某种原因,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" 

假设你想要从工具栏获得相同的货币格式,这个工作原理:

 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猜测你实际上意味着哪个属性(这称为“默认属性”),并且会得到不一致的结果。

尝试:

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

如果你的文本只是一个数字 ,答案很简单。 乘以1。
说单元格A1 ='00001234或公式或macros返回一段文字,乘以答案“00001234”* 1 = 1234。
我想提取VBA表单上的Label或txtBox的值。
Num = lblText * 1
另一个例子: 如果.txtLevel10 * 1> 50 Then …等。
也适用于其他一些数据types“16-Jan-15”* 1 = 16/1/15
在Excel和VBA中工作,但只有原始文本中没有其他字符。 干杯

尝试突出显示该列,并执行数据 – >文本到列(Excel 2003;在2007+文本到列是在其中一个function区)。 点击'分隔',然后'下一步',再次下一步,然后select一般作为格式。 这应该把整个列转换成一个数字。

如果这样做,它很容易自动化。 让我知道如果你需要代码。

编辑 – 你必须一次做一列。

 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 

这实际上是有效的。 关键是设置值之前应用格式:

 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