EXCEL中,对比两个字符串,第二个字符串中如果包含第一个字符串中的任何一个字符,那就给予提示

看图比较直观,会的同学给答案,在线等!谢谢!!

我想先请教楼主:如果遇到这两种情况如何判断:
①、如果B1是“桃”,而A2单元格是“羊桃猕猴桃毛桃菠萝蜜桃”,怎么办?
②、如果A2是“菠萝蜜桃”,你认为怎样理解:是“菠萝”+“蜜桃”,还是“菠萝蜜”+“桃” ?

你提问的标题是“对比两个字符串,第二个字符串中如果包含第一个字符串中的任何一个字符”,但实际上,你的具体问题是“对比两组水果名称,看两者是否有任意共同的水果名称”,这两个问题是不等价的。如果要用函数语言把你的问题准确概括起来,应该是:“两个字符串中都包含若干个以空格为间隔区分的子字符串,看两者是否有任意共同的子字符串”。

你提的实际问题看起来简单,但是用函数公式解决并不容易,因为,需要循环地依次取出第一个字符串中的每个子符串,再循环地依次对比第二个字符串中的每个子符串,它至少包含了两重循环,普通公式绝对是无能为力的,即使用数组公式求解也不易处理。而且,在EXCEL的内置函数中,并没有把长字符串按指定分隔符号拆分成多个字符串的现成的函数。

这种循环判断的问题,用VBA处理则非常简单,虽然用了4层“for……next”循环:
Sub 找相同水果名()
Dim frts1() As String
Dim frts2() As String
arr = [a1].CurrentRegion.Value
For i = 2 To UBound(arr, 1)
For j = 2 To UBound(arr, 2)
flag = False
frts1 = Split(arr(1, j), " ")
frts2 = Split(arr(i, 1), " ")
For Each frt1 In frts1
For Each frt2 In frts2
If frt1 = frt2 Then flag = True: Exit For
Next
If flag Then Exit For
Next
arr(i, j) = IIf(flag, "是", "否")
Next
Next
[a1].CurrentRegion.Value = arr
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-12-06
C2输入公式
=IF(SUMPRODUCT(--ISNUMBER(FIND(MID(a2,ROW(INDIRECT("1:"&LEN(a2))),1),b2))),"包含","未包含")
公式下拉即可
两个字符串字符个数无限制.追问

哇,这个好像起作用!但是空格也会算做包含,能不能把空格去了,不仅是去两头的空格,中间的也要去除掉!
我用SUBSTITUTE函数去掉空格后,公式表现良好!thank you!!

本回答被提问者采纳
第2个回答  2011-12-06
C2=AND(ISERR(SEARCH(MID(B$1,1,FIND(" ",B$1,1)-1),A2)),ISERR(SEARCH(MID(B$1,FIND(" ",B$1,1)+1,FIND(" ",B$1,FIND(" ",B$1,1))-1),A2)),ISERR(SEARCH(IF(MID(B$1,LEN(B$1)-1,1)=" ",RIGHT(B$1,1),IF(MID(B$1,LEN(B$1)-2,1)=" ",RIGHT(B$1,2),IF(MID(B$1,LEN(B$1)-3,1)+" ",RIGHT(B$1,3)))),A2)))
b2=if(c2,0,1)
公式嵌套太多,且B1不能超三个词
第3个回答  2011-12-06
能用公式做出如下所示的判断结果吗?(菠萝、菠萝蜜、蜜桃、桃 是4种不同的水果)
菠萝蜜 桃 菠萝 蜜桃
菠萝 蜜桃 否 是
菠萝蜜 桃 是 否
菠萝 否 是
蜜桃 否 是
菠萝蜜 是 否
桃 是 否
葡萄 否 否
第4个回答  2011-12-07
用vba写个小程序处理一下就好了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网