我在 Excel 中有一个宏,它正在尝试将文本转换为数字(货币)列。
单元格中的值是类似这样的文本“USD 8,765.43”,目标是获得类似这样的货币值“$8.765,43”
所以我基本上有这个宏,它可以删除空格,然后替换所有内容以使其看起来像我需要的,然后将单元格的格式更改为数字。
列(“H:H”).选择
选择.替换内容:=“”,替换:=“”,LookAt:=xlPart,_ SearchOrder:=xlByRows,MatchCase:=False,SearchFormat:=False,_ ReplaceFormat:=False
Selection.Replace What:="USD", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=",", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.Replace What:=".", Replacement:=",", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Selection.NumberFormat = "[$$-409]#,##0.00"
所有更改均正确完成,只是数字显示如下:8.765,43,但既不与其他数字相加,也不是“货币”,直到我进入单元格,并按下数字末尾的“ENTER”键,然后它才会转换为数字,计算总和并出现“$”符号。
谢谢,
答案1
在“USD 8,765.43”中,USD 和数字之间有一个空格,该空格仍会存在于末尾,并阻止 Excel 将其识别为数字。
更改你的第一个替换,以将其删除:
选择.替换内容:=“USD”,代表...
答案2
尝试将所选中的每个单元格乘以 1 。它会强制 Excel 重新计算并应用格式:
Dim cell As Range
For Each cell In Selection
If Not IsError(cell) Then cell = val(cell) * 1
Next cell
把这段代码放在你的
选择.NumberFormat = “[$$-409]#,##0.00”