我想在Excel中使用一个连接公式,其中还包括上标数字2(平方符号),但这不适用于以下输入。公式大致是这样的:第一个月我想得到这样的输出:13²个我尝试在字体上使用上标函数,但当文本在串联中时,它不起作用。我必须使用concatenate,因为我想自动化。Excel 2019可以用吗?还是可能,但需要VBA?
13²
e0bqpujr1#
通过udf使用上标数字
从0到9范围内的上标数字在不同的unicode节中具有代码值。因此,使用下面的 * 用户定义函数**(udf)*,您可以将0到9中的每个数字 * 作为上标字符,而无需一次又一次地检测和记住每个代码值。
Function sup(ByVal digit As Long)Dim n As LongSelect Case digit Case 0: n = &H2070 ' dec 8304 Case 1: n = &HB9 ' dec 185 Case 2: n = &HB2 ' dec 178 Case 3: n = &HB3 ' dec 179 Case Else ' <super> 4 .. 9 n = &H2074 + digit - 4 ' dec 8308 .. 8313End Selectsup = ChrW(n)End Function
Function sup(ByVal digit As Long)
Dim n As Long
Select Case digit
Case 0: n = &H2070 ' dec 8304
Case 1: n = &HB9 ' dec 185
Case 2: n = &HB2 ' dec 178
Case 3: n = &HB3 ' dec 179
Case Else ' <super> 4 .. 9
n = &H2074 + digit - 4 ' dec 8308 .. 8313
End Select
sup = ChrW(n)
End Function
字符串
部分示例(~~> output x³)
x³
="x" & sup(3) =CONCAT("x",sup(3)) =CONCAT("x",sup(Sheet1!A2)) ' assuming a digit value of 3 in Sheet1!A2
="x" & sup(3)
=CONCAT("x",sup(3))
=CONCAT("x",sup(Sheet1!A2)) ' assuming a digit value of 3 in Sheet1!A2
型x1c 0d1x或在VBA赋值中,例如
Sub ExampleCall()Dim i As LongFor i = 0 To 9 Sheet1.Range("A2").Offset(i).Value = "x" & sup(i)NextEnd Sub
Sub ExampleCall()
Dim i As Long
For i = 0 To 9
Sheet1.Range("A2").Offset(i).Value = "x" & sup(i)
Next
End Sub
型
dohp0rv52#
Try =CONCATENATE(“13”; CHAR(178))
gdrx4gfi3#
你按下面的方法做。=13&char(178)立方体179。subscript use
ogsagwnx4#
我还发现了一种不使用concatenate的方法,它只需要制作一个Map到上标数字的表。步骤1:字符表在其他地方,建立一个简单的表,从“数字”数字Map到“上标”数字。在第一列“Digit”中,只需键入以下内容:-9-8-7-6-5-4-3-2-10123456789在第二列“上标”中,转到Excel功能区插入>符号。在“符号”选项卡中,将组合框“字体”更改为“(普通文本)”,将“子集”更改为“上标和下标”。现在插入每个字符在其相应的单元格中,请确保使用“上标减号”表示负数。上标1、2和3位于子集“Latin-1 Supplement”中。-9-8-7-6-5-4-3 ³-2 ²-1 ¹ 0 1 ¹ 2 ² 3 ³ 4 5 6 7 8 9请注意,这些不是“格式化”的数字,而是没有数值的特殊符号。步骤2:Vlook函数将您希望正常显示的数字放在一列中,设置如下“A1”中所示,即:细胞A1:13然后,将您希望显示的数字以上标格式显示,即:细胞B1:3然后,使用此函数创建最终输出。单元格C1:= A1 &VLOOKUP(B1,Sheet2!$A$1:$B$20,2,FALSE)
4条答案
按热度按时间e0bqpujr1#
通过udf使用上标数字
从0到9范围内的上标数字在不同的unicode节中具有代码值。因此,使用下面的 * 用户定义函数**(udf)*,您可以将0到9中的每个数字 * 作为上标字符,而无需一次又一次地检测和记住每个代码值。
字符串
部分示例(~~> output
x³
)型
x1c 0d1x或在VBA赋值中,例如
型
dohp0rv52#
Try =CONCATENATE(“13”; CHAR(178))
gdrx4gfi3#
你按下面的方法做。
=13&char(178)
立方体179。
subscript use
ogsagwnx4#
我还发现了一种不使用concatenate的方法,它只需要制作一个Map到上标数字的表。
步骤1:字符表
在其他地方,建立一个简单的表,从“数字”数字Map到“上标”数字。在第一列“Digit”中,只需键入以下内容:
-9
-8
-7
-6
-5
-4
-3
-2
-1
0
1
2
3
4
5
6
7
8
9
在第二列“上标”中,转到Excel功能区插入>符号。在“符号”选项卡中,将组合框“字体”更改为“(普通文本)”,将“子集”更改为“上标和下标”。现在插入每个字符在其相应的单元格中,请确保使用“上标减号”表示负数。上标1、2和3位于子集“Latin-1 Supplement”中。
-9-8-7-6-5-4-3 ³-2 ²-1 ¹ 0 1 ¹ 2 ² 3 ³ 4 5 6 7 8 9
请注意,这些不是“格式化”的数字,而是没有数值的特殊符号。
步骤2:Vlook函数
将您希望正常显示的数字放在一列中,设置如下“A1”中所示,即:
细胞A1:13
然后,将您希望显示的数字以上标格式显示,即:
细胞B1:3
然后,使用此函数创建最终输出。
单元格C1:= A1 &VLOOKUP(B1,Sheet2!$A$1:$B$20,2,FALSE)