Excel 中 Unicode 字符串的长度

问题描述 投票:0回答:1

如何在Excel中计算Unicode字符串的长度?

我试过 LEN 和 LENB,但他们都给出了相同的结果。
对于非英语单词,结果是正确的,5.

=LENB("こんにちは")

但是对于其他字符串,结果是错误的,4而不是3。

=LENB("^🚀^")

我找到的唯一解决方案是比较使用函数 LEFT 创建的所有子字符串,但这看起来有点过分了。

=1-SUM(-(LEFT(A1,SEQUENCE(LEN(A1)))<>LEFT(A1,SEQUENCE(LEN(A1),,2))))

同样的问题是函数 MID 或 MIDB。而不是 =MID("^🚀🌍^",2,2),我必须写

=RIGHT(LEFT("^🚀🌍^",3),2)

有人知道更好的方法吗?

excel-formula unicode
1个回答
0
投票

与🚀和🌍关联的不间断字符不相同(unicode:56960和57101 resp.);所以不能使用简单的替代函数。通常,Excel 中的本机文本函数不能很好地处理此类字符(即表情符号、图标等)。

您的主要两个选择是:

  • 以某种方式处理每个角色的矫枉过正方法
  • VBA 中的 UDF

为此,这里有一个稍微更简约的方法,但可以说就像你所说的那样“矫枉过正”:

=SUM(--ISNUMBER(UNICODE(MID(A1,SEQUENCE(LEN(A1)),1))))

额外有趣的点/笔记:

但是,对于某些“特殊情况”的表情符号,例如具有诸如“性别”或“肤色/肤色”等伴随属性的表情符号,此功能和您的功能仍然会失败。

以下面为例(在Excel中按Win和'>'复制):

🤷u200d♀️

Excel 的上下文描述描述为“女人耸肩”。正如所料,还有一个“男人耸肩”对应物:

🤷u200d♂️

令人失望的是,虽然 Excel 提供了这种变体,但两种表情符号都以黑白显示并且看起来非常相似:

当出现另一个表情符号时(例如✌️),当点击任一单元格并按 F2 进行编辑时,会发生一些非常有趣的事情:

女人耸肩显示:

男人耸肩表明:

(在逃脱额外的女性/男性属性图标后神奇地消失了!虽然没有额外的表情符号这不会发生 - 可能是某种类型的错误,下次我们打高尔夫球时我必须向比尔提出☺).

上述功能(col B,'mid fn')和您的功能(col C,'left fn')的含义:

虽然 C 列中的“你的”函数更接近正确答案,但两者显然都不正确(错误就是错误!


© www.soinside.com 2019 - 2024. All rights reserved.