在Excel 2003中将unicode分数字符(粗俗分数)转换为小数

时间:2011-08-18 15:12:01

标签: excel excel-vba excel-2003 vba

我正在尝试将以下文本转换为excel 2003中的十进制数字:

“93⅛”

输出应为:93.125

通过使用VBA中的Replace功能,我已经使用了¼,½,¾: 例如,这有效:

cur_cell = Replace(cur_cell, "½", " 1/2")

但是,VBA编辑器不支持⅛和系列字符。它们显示为??。相反,我试图直接替换unicode值:

cur_cell = Replace(cur_cell, " & ChrW$(&H215B) & ", " 1/8")

但这不起作用。

有没有一种方法可以将这些字符串转换为我可以使用的数字?

1 个答案:

答案 0 :(得分:4)

正确的语法是:

cur_cell = Replace(cur_cell, ChrW$(&H215B), " 1/8")

你的例子是:用1/8替换由空格,&符号,空格[等]组成的字符串。显然,这不是你想要做的!

我实际上建议:

cur_cell.Value = Replace(Replace(cur_cell.Value, ChrW$(&H215B), ".125")," ","")

规避Excel自动替换分数。我只是不喜欢依赖那种自动的东西。为什么不把它直接写成十进制数?此外,我喜欢明确引用单元格的.Value属性,而不是依赖它作为默认属性。