2010-11-10 94 views
0

我有一個錯誤這個Excel公式中,我不能只圖出來:Excel公式包含錯誤

=LEFT(B3,FIND(",",B3&",")-1)&","&RIGHT(B3,LEN(B3)-FIND("&",B3&"&")),RIGHT(B3,LEN(B3)-SEARCH("@",SUBSTITUTE(B3," ","@",LEN(B3)-LEN(SUBSTITUTE(B3," ",""))))&", "&SUBSTITUTE(RIGHT(B3,LEN(B3)-FIND("&",B3&"&")-1),RIGHT(B3,LEN(B3)-SEARCH("@",SUBSTITUTE(B3," ","@",LEN(B3)-LEN(SUBSTITUTE(B3," ",""))))),"")) 

它可能看起來像一個大的公式,但所有它打算做的是,如果沒有符號在細胞中,則返回一個空單元格,如果沒有逗號但符號存在,則返回此,例如:

KNUDĴ& MARIA大號HOSTRUP

成這樣:

HOSTRUP,MARIA L

否則,沒有&字符,但有一個逗號,所以我們只返回:LEFT(A1,FIND(「&」,A1,1)-1)。

似乎基本,但公式一直給我錯誤消息,並沒有指出問題。

+0

如果你把你很長的公式分解成單獨的(隱藏的)單元格,它可能會有所幫助 – McKay 2010-11-10 22:55:10

回答

4

你的錯誤是在這裏:

=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。

+0

@JohnMerlino我已經更新它來獲得你說你想要的答案。 – McKay 2010-11-10 23:29:58

+0

我必須將它應用於單列800000條記錄 – JohnMerlino 2010-11-10 23:50:40

+0

@JohnMerlino哦,然後首先將計算單元移動到數據右側,並將所有計算記錄複製到所有800,000 – McKay 2010-11-10 23:52:13