如何将带 "subscript" 分数的数字转换为 Excel 中的小数?

How can I convert numbers with "subscript" fractions to decimal in Excel?

我有成千上万的数字以无法使用的格式提供给我:

9⅝, 9¼, 9¾, 10¼

这是它们在 Excel 中每一行中的显示方式。我想将这些转换为小数。我试过 =FIXED(A2, 3) 但没有成功。出现问题是因为分数采用这种奇怪的格式。

是否有我可以实现的公式或宏来获得所需的小数结果?

非常感谢,复活节快乐!

因此,这是适合您的一种解决方案。我假设数字的格式已设置,并且您无法将分数分开。

它需要一些手动工作,只有当你有合理数量的可以手动调整的分数时才真正可行

这里...

假设原始数据在 A 列中,创建一些辅助列:

  • B列:提取分数,例如:=RIGHT(A2, 1)
  • C 列:使用此信息现在提取整数,例如:=SUBSTITUTE(A2, B2, "")

创建一个从无法使用的分数格式到您可以在 excel 中使用的分数格式的查找:

  • 查找中的第一列应该是格式不可用的分数
  • 第二列应该是可用格式的分数,首先格式化第二列中的单元格 > 单元格格式菜单 > 数字选项卡 > 类别为分数 > 类型 "Up to one digit (1/4)"
  • 在相应的单元格中手动输入等效值(例如,在下面的单元格 H2 中写入 5/8)

现在在主table

中查找调整后的分数
  • D列:查找调整后的分数,例如:=VLOOKUP(B2, $G:$H, 2, 0)
  • E列:重新计算可用整数,例如:=C2 +D2

下面是完整的解决方案屏幕截图:

问题是您的每个分数都是单个 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

您必须扩展此代码以包含其他分数。以下是一些常见的: