我使用CHAR()
函数将扩展 ASCII 值转换为字符。我使用什么将 Unicode 代码点转换为字符?
我正在制作希伯来语转换表。例如,代码点 1489 ( U+05D1 )是字母“Bet”。我在 A 列中有 1489,并且想在 B 列中显示 Bet。
答案1
我认为你必须自己做函数,VBA 有一个从代码中获取字符的函数,但我不知道工作表函数。因此,只需在 Excel 文件的模块中放入此函数:
Function Unicode(val As Long)
Unicode = ChrW(val)
End Function
然后你可以从你的工作表中调用它=Unicode(A1)
如果您的 Excel 具有能够显示您的字符的字体,那么您将看到它。
(如果您的数字是十六进制):
Function Unicode(val As String)
Unicode = ChrW("&H" & val)
End Function
答案2
我今天遇到了这个小问题,因此这里有一个更新:
Excel 2013引入了函数 UNICHAR(),该函数返回以十进制表示的 Unicode 值的字符。函数 UNICODE() 则相反,返回字符的 Unicode 值。此功能在早期 Excel 版本(包括 Office for Mac 2011)中不可用。
然而,在开源软件的当前版本中,仍提供完全相同的功能LibreOffice Calc(和OpenOffice Calc, 我想)。
例如,您有一个很长的列“A”,其中包含十六进制 Unicode 值(不带“U+”),并且想要列“B”中的字符。由于 UNICHAR 需要十进制值,因此在公式中将其与转换函数 HEX2DEC() 结合使用。因此,在单元格 B1 中输入公式:
=UNICHAR (HEX2DEC ($A1))
或者,如果值已经是十进制格式:
=UNICHAR ($A1)
要将公式应用于 B1 下方的所有单元格,请双击突出显示的单元格框架左下角的小手柄(适用于 Calc 和 Excel)。使用尽可能多覆盖 Unicode 字形的字体格式化该列,例如 MS Arial Unicode(而不是“普通”的 Arial)。就是这样。
(可能会出现问题,单元格显示公式本身而不是结果。在这种情况下,需要将列格式化为内容类型“文本”或“常规”。)
附言:
在苹果数字 '09CHAR() 确实适用于 Unicode 值。公式为:
=CHAR (HEX2DEC(A))
或者
=CHAR (A)
答案3
只是为了向任何需要创建补充字符的人澄清:
对于 Excel 2013 及更高版本,该
UNICHAR()
函数(如TehMacDawg 的回答) 可以很好地处理这个问题。您只需传入所需的 Unicode 代码点:=UNICHAR(128126)
应产生: