我有成千上万的数字是以无法用的格式提供给我的:
9⅝, 9¼, 9¾, 10¼在Excel的每一行中,它们都是这样显示的。我想把它们转换成十进制。我试过了=FIXED(A2, 3),但这并没有起作用。问题的出现是因为分数的格式很奇怪。
是否有可实现的公式或宏以获得所需的十进制结果?
非常感谢,复活节快乐!
发布于 2016-03-27 11:09:24
问题是,每个分数都是单个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

您必须展开此代码以包括其他分数。以下是一些常见的问题:

发布于 2016-03-27 10:55:55
所以这里有一个解决办法。我假设数字的格式是设定的,你不能把分数分开。
它需要一些体力劳动,只有当你有合理数量的分数可以手动调整时,它才能真正可行。
来了..。
假设原始数据位于A列中,则创建一些助手列:
=RIGHT(A2, 1)=SUBSTITUTE(A2, B2, "")创建从不可用的分数格式到可在excel中使用的查找:

现在在主表中查找调整后的分数。
=VLOOKUP(B2, $G$2:$H$4, 2, 0)=C2 +D2完整的解决方案屏幕截图如下:

https://stackoverflow.com/questions/36245894
复制相似问题