求高手帮助,如何将EXCEL中,某一列包含特定关键词,其所在的所有行的内容依次都提取出来,到特定区域?
2018-03-03
麻烦解释下公式原理呗?另外,外面的大括号手输入就行?现在在外面,一会儿用电脑看看。这个公式应该是对的,我就是不会用
大括号是ctrl+shift+enter三键结束的来的,我从内层讲解一下:
IF($B$21:$B$29=$B3,ROW($1:$9),"")判断与查找值相符的所有数据的行号:如果在数据区域首列$B$21:$B$29的数据等于查找值$B3(绝对引用列号,防止向后填充时数据偏移),查找到,就等于1到9的行号(因为index函数引用的行号是数据本身所在的行号,不是实际行号),否则就返回空值
SMALL(IF($B$21:$B$29=$B3,ROW($1:$9),""),COUNTIF($B$2:$B3,$B3)))统计出本次查找为第几次查找并检索出该次查找对应的行号:COUNTIF($B$2:$B3,$B3)这个在small里面做索引值,small函数是查找第几小的函数,放在之前if的运算结果就是1到9的数值顺序查找。countif在这里的意思是统计本次查找是在整个查找中的第几次相同的查找,$B$2:$B3使用的是首格绝对引用向下扩展的活动区域
INDEX(C$21:C$29,SMALL(IF($B$21:$B$29=$B3,ROW($1:$9),""),COUNTIF($B$2:$B3,$B3)))根据已检索到的行号在数据区查找值:small部分已经根据在已知部分查找到对应的行号,就用index在数据里面查找对应的值,查找区域行号绝对引用,在向右填充一列,数据区相应右移一列
IFERROR(……,“”)将没有查找到返回的错误值换成空值,因为数据区只有9行,相同条目查询次数多的有6次,数据区只有3条,那么剩下的3条查询肯定会出错,所以用iferror容错
因为是数组运算,所以公式结尾ctrl+shift+enter,注意大括号不是手写的!