你的错误是在这里:
=LEFT(B3,FIND(",",B3&",")-1)&","&RIGHT(B3,LEN(B3)-FIND("&",B3&"&")),
此时,逗号并不适用于参选,因为右操作具有匹配的括号
至于你想要什么?让我们打破了成什么样,你居然问:
如果在一个小区中没有符号,返回空单元格,
B4=Find("&", B3&"&")
B5=IF(B4>LEN(B3),"",B6)
如果没有逗号,但符号存在
B6=IF(FIND(",", B3&",")>LEN(B3),B8,B7)
然后打开它,例如:
KNUDĴ& MARIA大号HOSTRUP 到这一点: HOSTRUP,MARIA大号
我假定你的意思是把最后整个单词?让我们来纪念过去的整个词:
B9=SUBSTITUTE(B3," ","@",LEN(B3)-LEN(SUBSTITUTE(B3," ","")))
B10=RIGHT(B7,LEN(B9)-FIND("@",B9))
而且连字符和最后一个字之间的东西
B11=TRIM(MID(B9,B4 + 1, LEN(B9)-FIND("@",B9)-1))
然后计算很容易
B7=B10&","&B11
否则,没有&符号,但有逗号,所以我们只返回: LEFT(A1,FIND(“&”,A1,1)-1)。
好吧,如果你想要的,我们只是把在B8
B8=LEFT(A1,FIND("&",A1,1)-1)
(但我认为你实际上意味着B3代替A1)
B8=LEFT(B3,FIND("&",B3,1)-1)
有你有它(B5包含您要查找的信息)它花了几个单元,但这样更容易调试。如果你想折叠它,你可以(但是这样做是更多的代码,因为我们可以通过不止一次引用先前计算的单元格来减少重复)。
摘要:
B3=<Some Name with & or ,>
B4=FIND("&", B3&"&")
B5=IF(B4>LEN(B3),"",B6)
B6=IF(FIND(",", B3&",")>LEN(B3),B7,B8)
B7=B10&","&B11
B8=LEFT(B3,FIND("&",B3,1)-1)
B9=SUBSTITUTE(B3," ","@",LEN(B3)-LEN(SUBSTITUTE(B3," ","")))
B10=RIGHT(B9,LEN(B9)-FIND("@",B9))
B11=TRIM(MID(B9,B4 + 1, LEN(B9)-FIND("@",B9)-1))
当我把 “KNUDĴ& MARIA大号HOSTRUP”,我得到 “HOSTRUP,MARIA” 在B5。
如果你把你很长的公式分解成单独的(隐藏的)单元格,它可能会有所帮助 – McKay 2010-11-10 22:55:10