请问Excel怎样才能实现: 表1 a列如果包含有表2 a列里的数据则自动在表2 b列做个记号

2025-04-15 21:08:36
推荐回答(3个)
回答1:

下图为表1,公式为:

ISERROR(VLOOKUP(MID(A1,FIND("||",A1,1)+2,LEN(A1)-FIND("||",A1,1)),Sheet2!A:A,1,0))

1、len用于计算表1中A列字条的长度

2、find用于查找||在表1中A列出现的位置

3、len的结果加2表示||后的字符在表1中A列字符里出现的位置

4、len的结果减find的结果表示||后面字条的长度

有了以上的计算结果,就可以很容易的把||后面的字条单独剔除出来,那么接下来就可以直接用你熟悉的vlookup在表2中查找了,显示数值的就表示有包含表2中的数据,出现#N/A的就表示没有包含。如果不介意美观的问题,到这里就算是OK了,如果想更美观些就,就配合iserror和if,以下简单对这两个函数说明:

1、iserror用于判断参数是否为错误值,如果是返回true,如果不是返回false,错误包括#N/A、#VALUE!、#NUM!等等

2、如果iserror返回的是true,那么if得出的结果为空值;如果返回false,那么if得出的结果为“有包含!”


回答2:

请用公式:=RIGHT(SHEET1!A1, LEN(SHEET1!A1)-FIND("||", SHEET1!A1)-1))

公式说明:
FIND("||", SHEET1!A1):在A1中找到字符“||”的位置,比如“110526||000000”中,“||”是第7个字符

LEN(SHEET1!A1):计算A1整个文本的长度,比如“110526||000000”,共有14个字符

RIGHT(SHEET1!A!, N):从A1中截取右边的N个字符,N=全长-“||”的位置-1

比如“110526||000000”,“||”右边的内容为“000000”共6个字符,即全长14个字符-“||”所在的位置7-1(因为“||”是两个字符,所以还要再减1)=6

回答3:

在sheet2的b2输入:
=if(countif(sheet1!a:a,"*"&a2&"*"),1,"")
下拉填充
凡sheet2表b列显示1的均为包含在sheet1表a列数据.