用excel如何提取出两字段中字符串部分相同的数据

要求:只要c字段中的字符串包含d字段中以逗号分隔的任一字符串,就提取出改行。在下例中,c1中包含“母的”,和d1中第1、2个逗号分隔的“母的“相同;c3中包含”雌“,和d3中第3、4个逗号分隔的”雌“相同,因此提取出第1、3条数据。

ID a b c d
1 草 草马 母的马 ,草,母的,雌,
2 草 草稿 初步写出的文稿或初步画出的画稿。 ,草,母的,雌,
3 草 草马 雌马 ,草,母的,雌,

要先把D列以中文逗号作分隔符,分列成3列,再用公式判断、提取符合条件的行。达到下图效果之后,再进一步完成。

温馨提示:内容为网友见解,仅供参考
第1个回答  推荐于2016-07-15
亲,您这规则不对呀。A2包含“草”,为什么不提取呢?
还有,D列用“,”分隔的词组最多有多少个?前面需要判断的A/B/C/……,最多会到多少列?如果太多的话,辅助列会加N多,公式要占N多列,不如用VBA了。
例如:现在您的D列有三个词组,前面A/B/C有三列需要判断,一共就是3x3=9,需要判断9次,后面加辅助列不说,每个辅助列里面的公式至少得把A/B/C判断一次。追问

其实跟a、b列没什么关系,就是c、d列的事儿。D列用“,”分隔的词组最多有200多个,恐怕用辅助列不现实。vba您知道怎么写吗?

追答

VBA已经写好了,附件已上传,看不见按Ctrl+F5刷新页面

本回答被提问者采纳
第2个回答  2014-05-07

首先使用分列操作,将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))

第3个回答  2018-03-01
提取出改行是真的没有弄明白意思,大概估计了一下,e1单元格的公式这样{=IF(SUM(IFERROR(FIND({"草","母的","雌"},D2),0)),PHONETIC(A2:D2),"")},前提是你的id列要文本格式,或者phonetic函数换成CONCATENATE(A2,B2,C2,D2)表达本回答被网友采纳
第4个回答  推荐于2016-03-25
应该用到三个字符串函数:LEFT、RIGHT、MID
1、LEFT函数:
用法:LEFT(要提取字符所在单元格,从左侧开始提取的个数)
例如:=LEFT(A1,2) 意思是从A1单元格提取前两个字符。
2、RIGHT函数:
用法:RIGHT(要提取字符所在单元格,从右侧开始提取的个数)
例如:=RIGHT(A1,2) 意思是从A1单元格提取最后两个字符。
3、MID函数:
用法:MID(要提取字符所在单元格,开始位置,提取个数)
例如:=MID(A1,2,2) 意思是从A1单元格提的第二个单元格开始,提取两个字符,也就提取A1单元格第2个和第3个字符。
注:用MID函数,也可以替代前两个函数,比如:=MID(A1,1,2)与=LEFT(A1,2)的结果是一样的,再比如:=MID(A1,LEN(A1)-2+1,2)与=RIGHT(A1,2)的结果是一样的只是这里用到LEN函数,其作用是取得单元格字符串的长度。
4、提取后的字符合并:
字符合并要用到连接符号:&
比如:=LEFT(A1,2)&RIGHT(A1,2) 意思是把A1单元格的前两个和最后两个字符,提取出来组成一个新的字符。

用excel如何提取出两字段中字符串部分相同的数据
要先把D列以中文逗号作分隔符,分列成3列,再用公式判断、提取符合条件的行。达到下图效果之后,再进一步完成。

excel中一个表内如何找出两列数据里相同的数据,并自动匹配?
步骤1:打开Excel,定位到你需要比较的表格,比如A列和B列。在这两列中,你想要找出那些在两列中都出现的数据。步骤2:在C列的第一个单元格(C1)中,输入以下公式来实现匹配:`=IF(COUNTIF(B1:B10,A1),A1,"")`。这个公式的意思是,如果B1到B10范围内的某个单元格与A1中的值相同,那么就显...

excel中一个表内如何找出两列数据里相同的数据,并自动匹配?
步骤一,打开您的Excel表格,将两组需要比较的数据分别输入到A列和B列。确定您想要查找的重复数据范围,例如从A1到A10,B1到B10。步骤二,为了在C列显示匹配结果,选择单元格C1,然后输入公式:`=IF(COUNTIF($B$1:$B$10, A1), A1, "")`。这个公式的作用是检查A1单元格的值在B列中出现的次数...

如何在Excel中快速统计出重复的字符串?
1、进入Excel页面后,单击需要编辑的单元格。2、首先在编辑栏中输入“=countif(”。3、接着直接选中需要统计的数据区域。4、随后编辑“=countif(C3:C18,7)”,其中7代表需要统计重复数目的字符。5、按下enter回车键即可。6、同理,在第二个编辑栏中输入“=countif(”。7、选中同样区域,再将其编...

如何在EXCEL里把两列数据中相同的提取出来?
材料\/工具:Excel2010 1、如下图两列数据首先在开始菜单下面选择条件格式。2、点击之后出现框框,选择第一个:突出显示单元格规则,然后再选择重复值。3、选择好之后他会提示你设置格式,里面有很多的设置选项 4、选择好之后点击确定,然后表格中就会将两列相同数据显示出自己所设置的样子 5、选中这列...

Excel利用自定义函数提取字符串中的重复字符
有时需要将Excel单元格内字符串中的重复字符提取出来,例如提取字符串“abcdeAbcDe”中重复的几个字符“bce”,如图所示,可以用自定义函数实现。1.按Alt+F11,打开VBA编辑器。2.单击菜单“插入→模块”,在代码窗口中粘贴代码:Function GetDupChar(theString As String) As String Dim i As Integer ...

excel中如何提取两个字符串中间的内容(字符串有重复)?
可以用Ctrl+E,OFFICE 2006以上,WPS,都可以用,如下图,输入第一个数字,第二行直接按Ctrl+E,可以智能填充,如果提示缺少示例,在输入了两行后就Ctrl+E就可以实现智能填充了。

如何在Excel中从两个特定字符串中提取数字?
要从Excel表格中提取两个特定字符之间的数字,首先确保需要提取的数据已放置在合适的列或行中。以一个具体的例子说明,假设在A列中,我们有“共,2860元”这样的数据,你想要提取“共”和“,”之间的金额2860。首先,使用MID和LEFT函数进行操作。在B1单元格输入公式,例如:=MID(A1,FIND("共",A1)+...

excel,怎么截取两个指定字符中间的字符串。如图?
=SUBSTITUTE(SUBSTITUTE(A2,LEFT(A2,FIND("朝代:",A2)+2),""),RIGHT(A2,LEN(A2)-FIND("出现作品:",A2)+1),""),同时按三键。

如何在excel中比较两个字符串文本单元格,取相同结果的字符?
可以用自定义函数(vba)按alt+f11 右键新建一个模块 粘贴以下代码 Function 查找相同(rg1 As Range, rg2 As Range)For i = 1 To Len(rg1.Value)If InStr(rg2, Mid(rg1.Value, i, 1)) > 0 Then a = a & Mid(rg1, i, 1)End If Next 查找相同 = a End Function 再回到excel...

相似回答