需要以上标形式显示 1/10 美分价值的费用

需要以上标形式显示 1/10 美分价值的费用

我研究的价格与加油站的汽油价格相似。我得到的价格看起来像是 3,799 美元。

我可以rounddown(A1,2)得到 3.79 并将1000*(Round(A1,3)-Roundown(A1,2))得到 9,但我找不到将它们连接起来的方法,以便“&”符号后的所有内容都成为上标。

rounddown(A1,2)&       int(1000*(Round(A1,3)-Roundown(A1,2)))
^ This regular         ^ This in Superscript

到目前为止,我最好的办法是将 放入int(1000*(Round(A1,3)-Roundown(A1,2)))查找表中以获取 Unichar 字符,因为它们不是连续的。如果有一种适用于 1/10 美分价格的数字格式,那就容易多了。

有任何想法吗?

答案1

仅当 Excel 单元格中存在实际文本字符串(而不是公式结果的文本字符串)时,您才能对单元格中的字符进行差异格式化。

这通常意味着使用 VBA 来创建文本字符串,可以通过从其他单元格复制值或在 VBA 内进行计算。

在下面的例子中,我将结果用上标数字写在实际值的右边,但您可以用多种方式调整代码。

为了使其动态化,我使用了 worksheet_change 代码,这样每当您在 A 列中更改某些内容时,它都会在 B 列中将结果上标

您需要根据实际用途调整代码。

要输入此事件触发的宏,请右键单击工作表选项卡。从右键单击下拉菜单中选择“查看代码”。然后将下面的代码粘贴到打开的窗口中。

确保设置dataRange为您希望发生这种情况的范围。

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim dataRange As Range
    Dim c As Range
Set dataRange = Columns(1)

If Not Intersect(Target, dataRange) Is Nothing Then
    For Each c In Intersect(Target, dataRange)
        With c.Offset(0, 1)
            .NumberFormat = "@"
            .Value = Format(c, "0.000")
            .Characters(Len(.Value), 1).Font.Superscript = True
        End With
    Next c
End If
End Sub

在上面的代码中,由于函数的原因Format,值将被四舍五入为小数点后三位。如果不希望这样,您可以在应用 Format 函数之前添加一个截断函数而不是四舍五入函数

在此处输入图片描述

由于所有上标数字都有 Unicode 字符,因此您也可以在“辅助”列中使用公式:

=LET(x, TEXT(A1,"0.000"),
     y, LEFT(x,LEN(x)-1),
     z, UNICHAR(INDEX({8304;185;178;179;8308;8309;8310;8311;8312;8313}, RIGHT(x)+1)),
     y&z)

为了便于阅读,我使用了Let365 中提供的功能,但如果有必要,可以重写该功能以便在早期版本中使用。

相关内容