在excel里,逐个比对B列单元格内的文本,是否包含于A列的单元格

如图,A列是姓名+案件,C列是姓名,如果C列中的人有案底,请将其姓名显示在F列。请大神们帮忙啊~~~~... 如图,A列是姓名+案件,C列是姓名,如果C列中的人有案底,请将其姓名显示在F列。请大神们帮忙啊~~~~ 展开
 我来答
wykcorp
2016-09-19 · TA获得超过1.4万个赞
知道大有可为答主
回答量:5839
采纳率:85%
帮助的人:3251万
展开全部

F1数组公式,输入完成后不要直接回车,要按三键  CTRL+SHIFT+回车  下拉。

=INDEX(C:C,SMALL(IF(COUNTIF(A$1:A$3000,"*"&C$1:C$3000&"*")*(C$1:C$3000<>""),ROW($1:$3000),4^8),ROW(A1)))&""



注意:建议表格改为本例这样,姓名需要单独存放在一列,像提问那样会产生冤案,假设A列有名字张三峰,而C列只有张三,那么张三会被误认为是有案底的。


改为本例这样可避免这个问题:

F2数组公式

=INDEX(D:D,SMALL(IF(ISNA(MATCH(D$2:D$3000,A$2:A$3000,)),4^8,ROW($2:$3000)),ROW(A1)))&""

追问
超级感谢!用你的方法,跟我手动的比对结果完全一样!佩服佩服~
我需要再追问一下:A列案件共有9000件,C列需比对的名字有7000个,那么这个数组公式应改写为??(其实就是不明白公式最后的ROW($1:$3000),4^8)什么时候需要修改)
追答
4^8不用理会。

ROW($1:$3000)中的1:3000与C列对比的名字行数相同,如C1:C7000就是1至7000行,所以就改为ROW($1:$7000)。再例如是 C9:C8000,那么就是ROW($9:$8000)
凌文元LWY
高粉答主

2016-09-19 · 每个回答都超有意思的
知道大有可为答主
回答量:3.6万
采纳率:76%
帮助的人:1.2亿
展开全部
以截图为例,在F1单元格输入以下数组公式,按Ctrl+Shift+Enter组合键结束,然后向下填充公式
=INDEX(B:B,SMALL(IF(ISNUMBER(FIND(C$1:C$6,A$1:A$10)),ROW($1:$6),4^8),ROW(A1)))&""

如果实际行数较多,再修改公式中对应列的行号,即可。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式