我研究的价格与加油站的汽油价格相似。我得到的价格看起来像是 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)
为了便于阅读,我使用了Let
365 中提供的功能,但如果有必要,可以重写该功能以便在早期版本中使用。