excel中indirect函数
发布网友
发布时间:2022-04-25 22:53
我来回答
共1个回答
热心网友
时间:2022-06-18 10:28
这个公式本身就是错误的,所以不可能得出结果来。
从公式来判断,正确的公式应该是
{=CHAR(MODE(CODE(MID($A12,ROW(INDIRECT("1:"&LEN($A12))),1))))}
注意,大括号不是手工输入的,是按Ctrl+Shift+Enter产生的。
公式的含义是,取A12的字符串里出现次数最多的那个字符
LEN($A12)得到字符串长度。
"1:"&LEN($A12)就得到1:14
所以应该是ROW(1:14),但实际上1:14这时还是一个字符串,而ROW的参数要求是一个引用地址,用以用INDIRECT将其转换为引用地址。
ROW(INDIRECT("1:"&LEN($A12)))的结果是{1;2;3;4;5;6;7;8;9;10;11;12;13;14}
用MID($A12,{1;2;3;4;5;6;7;8;9;10;11;12;13;14},1)按位列出每位的字符,结果是
{"A";"S";"A";"D";"S";"A";"1";"2";"5";"4";"A";"S";"X";"Z"}
用CODE将其转换为ASCII码,即
{65;83;65;68;83;65;49;50;53;52;65;83;88;90}
再用MODE取出众数,即出现次数最多的那个数,结果为65
最后用CHAR将其转换为字符。