microsoft excel中字符串的UTF 8字节长度

microsoft excel中字符串的UTF 8字节长度,excel,validation,unicode,utf-8,Excel,Validation,Unicode,Utf 8,我正在尝试为字符串长度介于8和16之间且最大字节长度小于40(UTF8编码)添加单元格数据验证。 我使用excel活动支持创建了数据验证: 数据验证(数据选项卡->数据验证(在excel 2016 mac中删除重复项和合并之间)),在设置选项卡中,有验证 criteria: Validation Criteria: Allow: Text Length Data : between Min : 8 & Max : 16 尽管上面的验证满足我的所有限制(8 对于其他语言(比如日语),虽然

我正在尝试为字符串长度介于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可能)

在上面的例子中,我找到了UNICODE函数,它给出了第一个字符(12371)的UNICODE编号。但是我不知道如何从这个数字中得到字节值(3个字节是第一个字符的值)(こ)).


在这方面的任何帮助都将不胜感激。

使用Unicode值,您可以计算一个特定的值将占用多少字节。使用Unicode值,您可以计算一个特定的值将占用多少字节。我面临同样的问题,下面是基于上述+文章的答案的没有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
))))
=SUM(

如果(UNICODE(MID(A1,ROW(INDIRECT(“1:”&LEN(A1))),1))我遇到了同样的问题,下面是基于上面的答案+文章的没有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
))))
=SUM(

如果(UNICODE(MID(A1,ROW(INDIRECT(“1:”&LEN(A1))),1))有没有办法为单元格中的整个字符串获取此值?就像excel中的循环(而不是VBA)。@tharunreddych,我不知道。我会编写VBA函数。有没有办法为单元格中的整个字符串获取此值?像excel中的循环(而不是VBA中的循环)@tharunreddych,据我所知不是。我会写一个VBA函数。