从其他工作表复制货币数据时,此代码似乎无法正常工作:
Dim myprice As String
myprice = othersheet.Range("H" & c.Row).Value
ws.Range("C" & r).Value = myprice
ws.Range("C" & r).Style = "Currency"
有时单元格会发出“此数字格式为文本”的警告
答案 0 :(得分:2)
Excel的“存储为文本的数字”问题可能有点令人烦恼。
帮助建议是通过将值乘以1来执行转换操作。但是,实际上,您可能最好检查myprice是否为数字,然后相应地进行。
例如:
Dim myprice As String
myprice = othersheet.Range("H" & c.Row).Value
If IsNumeric(myprice) Then
myprice = CCur(myprice)
Else
'Catch non-numeric accordingly
myprice = "Couldn't convert to number"
End If
ws.Range("C" & r).Value = myprice
ws.Range("C" & r).Style = "Currency"
HTH
答案 1 :(得分:1)
尝试将myprice
声明为Currency
。
答案 2 :(得分:0)
您是否尝试过使用单元格的NumberFormat
ws.Range("C" & r).NumberFormat = "$#,##0.00"
答案 3 :(得分:0)
这对我有用:
For Each myprice In __your target range here__
myprice.Value = CDec(myprice.Value)
myprice.NumberFormat = "0.00" 'or whatever format you wish
Next myprice
答案 4 :(得分:0)
此代码对我有用,可根据内容转换单元格。对于包含> 800,000个单元格的工作表来说,它运行得相当快,其中包含以文本形式存储的数字,在Windows 8.1计算机上运行32位Excel 2013。它在不到2分钟的时间内完成了这项工作。
For Each aCell In ThisWorkbook.Sheets("Working data").UsedRange.Cells
If aCell.Errors.Item(xlNumberAsText).Value Then
aCell.Formula = aCell.Text
End If
Next aCell