excel中用indirect函数怎样对一列中的部分数据引用
答案:2 悬赏:20 手机版
解决时间 2021-02-20 04:55
- 提问者网友:刺鸟
- 2021-02-19 04:21
比如SUMIF(INDIRECT("'"&ROW(INDIRECT("1:31"))&"'!C:C"),$C14,INDIRECT("'"&ROW(INDIRECT("1:31"))&"'!F:F")) 这个计算中是计算的工作表1到工作表31中C列里与C14相同的值对应的F列的值的和,但是如果不是在整个C列寻找与C14相同的值,而是只在C14到C20中寻找,我用"'!C14:C20"代替"'C:C"结果计算出来全是0,为什么呢?正确的该怎么用呢?刚学函数,只会套用公式,对公式的内涵还不够理解,请高手多多指教。
最佳答案
- 五星知识达人网友:毛毛
- 2021-02-19 05:36
不知道楼主的数据在怎么存在的,没有验正公式,你把后面的!F:F也换成!F14:F20试试。
全部回答
- 1楼网友:傲气稳了全场
- 2021-02-19 06:21
这个公式本身就是错误的,所以不可能得出结果来。
从公式来判断,正确的公式应该是
{=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将其转换为字符。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯