MS Excel 自定义 unicode 函数

MS Excel custom unicode function

我的 Excel 文件的一列中有一个如下所示的 IPA 符号列表:

a
ɒ
ɒ̃
ɑː
æ
aɪ
aʊ
aʊə
b
ɔː

我正在使用 unicode 函数来获取每个字符的值。这仅适用于单个字符,因此我正在尝试编写一个自定义函数,该函数将 return 每个字符的值由 .

分隔

但是,该函数无法识别某些(非字母)字符,例如 ɒ̃ 和 æ。

有谁知道我做错了什么吗?

我已经粘贴了下面的代码:

Public Function UnicodeText(text2convert As String)
Dim textLen As Integer
UnicodeText = ""
textLen = Len(text2convert)

If Len(text2convert) = 1 Then
    UnicodeText = Asc(text2convert)
Else
    For i = 1 To textLen
        If i = 1 Then
           UnicodeText = UnicodeText & Asc(Left(text2convert, 1)) & "."
        Else
           If i = textLen Then
              UnicodeText = UnicodeText & Asc(Right(text2convert, 1))
           Else
              UnicodeText = UnicodeText & Asc(Mid(text2convert, i, 1)) & "."
           End If
       End If
 Next i

End If

End Function

此外,它识别字符 ɒ̃ 的长度为 2

这样做的原因是为了确保使用的字符完全相同,因为有些字符如 ɡ 和 g 在某些字体中看起来相同,但实际上是 2 个不同的字符。

如果我正确理解你想要做什么,你可以使用 AscW 功能。 AscW 函数 returns 字符串的 Unicode 字符。

您可以将代码中的 Asc 替换为 AscW,或者使用以下代码:

Option Explicit
Function uni(S As String) As String
    Dim I As Long
    Dim sTemp As String

sTemp = ""
For I = 1 To Len(S)
    sTemp = sTemp & "." & AscW(Mid(S, I, 1))
Next I

uni = Mid(sTemp, 2)

End Function

顺便说一句,如果您有 O365 以及 TEXTJOINSEQUENCE 函数,您可以使用此工作表公式:

=TEXTJOIN(".",TRUE,UNICODE(MID(A1,SEQUENCE(LEN(A1)),1)))

如果您有 TEXTJOIN 但没有 SEQUENCE 函数,您可以将 SEQUENCE 函数调用替换为 ROW(INDEX($A:$A,1):INDEX($A:$A,LEN(A1)))

=TEXTJOIN(".",TRUE,UNICODE(MID(A1,ROW(INDEX($A:$A,1):INDEX($A:$A,LEN(A1))),1)))

CHAR(CODE) 与 UNICHAR(UNICODE)

这里没有解决方案。这只是对这里发生的事情的视觉解释。它显示 AC 列的 'transformation',CODEEFG 列,UNICODEHIJ 列,然后再返回 [=15] =] 到 KLM 列,UNICHARNOP 列。 Q 列代表 OP 函数的结果,而 RS 列代表 Jon Rosenfeld 的解决方案的结果。下面我添加了我的语言中的关键字符。