作业帮 > 综合 > 作业

excel已知B1:B1999是一列文字,在C1单元格输入请教某数组函数意义INDEX(B:B,SMALL(IF(MAT

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/25 21:39:13
excel已知B1:B1999是一列文字,在C1单元格输入请教某数组函数意义INDEX(B:B,SMALL(IF(MATCH($B$2:$B$1999&"",$B$2:$B$1999&"",0)=ROW($B$2:$B$1999),ROW($B$2:$B$1999),4^8),ROW(B2)))&"" 再按CTRL+SHIFT+ENTR再往下拖,就能在C列得到B列中不重复的名称列表,谁能帮我解释下这个数组,表达成白话文……
另外如果B列是从B2:B1999有文字,想在C2:C1999得到B2:B1999中不重复的文字列表,该怎样更改上面的数组公式?
INDEX(B:B,SMALL(IF(MATCH($B$2:$B$1999&"",$B$2:$B$1999&"",0)=ROW($B$2:$B$1999),ROW($B$2:$B$1999),4^8),ROW(B2)))&""
改成什么样
函数的意思是INDEX(b:b 意思是 在B:B里面返回有一个值 INDEX 函数 你搜索一下INDEX(区域,行,列)
一般是怎么写的 你看你的公式里面 SMALL(IF(MATCH($B$2:$B$1999&"",$B$2:$B$1999&"",0)=ROW($B$2:$B$1999),ROW($B$2:$B$1999),4^8) 这个其实是返回一个值 就是对应的行数 INDEX区域是一列的时候 列数可以省略不写
INDEX写好了 那就给你说行数了
SMALL是一个数组
SMALL(IF(MATCH($B$2:$B$1999&"",$B$2:$B$1999&"",0)=ROW($B$2:$B$1999),ROW($B$2:$B$1999),4^8)
这个意思是 如果在B2:B1999里面查找B2:B1999 0是精确匹配的意思 返回的顺序号和B2:B1999的行号一样的话 就返回b2:b1999的行号 要不就返回4^8 就是返回无穷大 你复制来的函数应该还少了一个small(数据区域,ROW(A1))
MATCH 意识是查找区域内 某个值出现的顺序号 也可以是数组形式
这是这个函数难点
你理解一下A1:A10分别是 1 2 3 4 5 6 7 8 9 1
你match(1,a1:a10,0)
就返回1 在A1:A10第一次出现的地方就是 第一个 最后一个1被忽略掉了
联系上面公式意思就是 B2:B1999里面第一次出现的地方和行号一样 就返回行号
你的公式应该有点错误 你是走B2:B1999开始的,所有 行号应该减去1 才会和MATCH 返回结果一样
上面说的你的 SMALL 贴上来的公式少了个参数 你下拉的时候其实
small(数据,ROW(A1))
是要一次返回数据里面第一个 第2个 第3个最小行号的意思
还有B2:B1999 后面&"" 是为了规避空值 而写的 !
我给你写个完整的公式
如下
=INDEX($B$2:$B$1999,SMALL(IF(MATCH($B$2:$B$1999&"",$B$2:$B$1999&"",0)=ROW($B$2:$B$1999)-1,ROW($B$2:$B$1999)-1,2^8),ROW(A1)))你一直拉
就是没有了的意思
注意我写的时候按你区域写的行号减去1了
最后 似乎回答过你问题 都不及时采纳的 我也要赚积分的哇~