要求:只要c字段中的字符串包含d字段中以逗号分隔的任一字符串,就提取出改行。在下例中,c1中包含“母的”,和d1中第1、2个逗号分隔的“母的“相同;c3中包含”雌“,和d3中第3、4个逗号分隔的”雌“相同,因此提取出第1、3条数据。
ID a b c d
1 草 草马 母的马 ,草,母的,雌,
2 草 草稿 初步写出的文稿或初步画出的画稿。 ,草,母的,雌,
3 草 草马 雌马 ,草,母的,雌,
首先使用分列操作,将d列的数据按照“,”分开,分成分列1,2,3三个新列,然后再在右侧新建三列,分别判断分列1,2.3三列中的字符有没有在c中出现,出现为1,未出现为0,然后新建提取列,将三个判断值进行或运算,即可得到是否该提取该列内容,最后使用自动筛选,筛选出提取列为TRUE的数据。
你说的倒是不错,可是实际应用中,d字段以逗号分隔的字符串会有200多个,以这个方法excel运算极慢不说,分列的工作量也很大。而且d列中的字符串可能出现在c列字符串的前、中、后任何地方。有没有更好的方法?
追答可能你还没有完全理解我的方法。
分列操作不是手动的,是使用Excel2010中的分列功能,自动完成的,整个过程不超过10s
后续的判断列,是查找d列的每个字符是否有在c列字符串中出现过,不存在前中后的问题,出现过为1,未出现为0,而且这个公式是可以直接往后拖拽填充的,所花时间不超过30s,然后最后一个提取列,则综合前面所有判断,只有d列中有一个字符出现过,即判断为真。最后达到你要的效果。
不过这里有一个小问题,不知道你d字段分隔的字符数目是不是一样的,如果不一样,后续的判断语句可能要更改一下。
改成这样:
=IF(F2="",0,IF(IFERROR(FIND(F2,$D2,1),0),1,0))