如何在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)
有人知道更好的方法吗?
与🚀和🌍关联的不间断字符不相同(unicode:56960和57101 resp.);所以不能使用简单的替代函数。通常,Excel 中的本机文本函数不能很好地处理此类字符(即表情符号、图标等)。
您的主要两个选择是:
为此,这里有一个稍微更简约的方法,但可以说就像你所说的那样“矫枉过正”:
=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 列中的“你的”函数更接近正确答案,但两者显然都不正确(错误就是错误!