我正在尝试将字符串长度的单元格数据验证添加到8到16之间,最大字节长度小于40(UTF8编码)。
我使用excel活动支持创建了数据验证:
数据验证(数据选项卡 - >数据验证(在excel 2016 mac中删除重复和合并之间)),在设置选项卡中,有验证
criteria:
Validation Criteria:
Allow: Text Length
Data : between
Min : 8 & Max : 16
虽然上述验证符合我的所有限制(8
对于其他语言(比如日语),虽然通过物理长度计算字符串长度(例如:"こんにちはこんにちはこんにちは"
,日语为hellohellohello),但UTF8字节值为45字节,即违反了40个字节,以为长度只有15个。
我在excel中找到了“LENB”函数,但它的值为30(而不是45)。我认为它基于不同的编码(ansi may)
我找到了UNICODE函数,它给出了上述情况下第一个字符(12371)的unicode编号。但我不明白如何从这个数字中获取字节值(3个字节是第一个字符(こ)的值)。
非常感谢在这方面的任何帮助。
答案 0 :(得分:0)
使用Unicode值,您可以计算特定字节将占用的字节数。 < 128是1字节,否则< 2048是2,否则< 65536是3,否则4。
答案 1 :(得分:0)
我遇到了同样的问题,这是基于以上答案和this文章的无VBA的解决方案。假设您在A1中有一个字符串:
=SUM(
IF(UNICODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<128, 1,
IF(UNICODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<2048, 2,
IF(UNICODE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))<65536, 3, 4
))))
离开单元格时不要忘记使用数组函数(CTRL + SHIFT + ENTER)