我有数以千计的数字以无法使用的格式提供给我:
9⅝, 9¼, 9¾, 10¼
这是它们在Excel中每行中的显示方式。我想将这些转换为小数。我已经尝试了=FIXED(A2, 3)
,但这并没有成功。问题出现是因为分数是这种奇怪的格式。
我是否可以使用公式或宏来获得所需的小数结果?
非常感谢和复活节快乐!
答案 0 :(得分:3)
问题是你的每个分数都是一个unicode字符。如果我们在单元格中隔离单个字符并运行:
Sub WhatsIt()
Dim v As Variant
v = ActiveCell.Value
MsgBox Asc(v) & vbCrLf & AscW(v) & vbCrLf & Application.WorksheetFunction.Dec2Hex(AscW(v))
End Sub
我们看到了:
现在可以轻松地将这些项目转换为实际值。这是一个开始:
Public Function Konvert(s As Variant) As Double
Dim d As Double
d = CDbl(Mid(s, 1, Len(s) - 1))
If AscW(Right(s, 1)) = 8541 Then d = d + 0.625
Konvert = d
End Function
您必须展开此代码才能包含其他分数。以下是一些常见的内容:
答案 1 :(得分:1)
所以这是一个适合你的解决方案。我假设数字的格式已设置,并且您无法将该分数分开。
它需要一些手动工作,如果您有合理数量的可以手动调整的分数,它们才真正可行
这里......
假设原始数据在A列中,请创建一些帮助列:
=RIGHT(A2, 1)
=SUBSTITUTE(A2, B2, "")
创建从不可用的分数格式到可以在excel中使用的格式的查找:
现在在主表中查找调整后的分数
=VLOOKUP(B2, $G$2:$H$4, 2, 0)
=C2 +D2
以下完整解决方案屏幕截图: