Формула Excel содержит ошибку - PullRequest
0 голосов
/ 11 ноября 2010

У меня есть ошибка в этой формуле 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 J & MARIA L HOSTRUP

в это:

HOSTRUP, МАРИЯ L

В противном случае амперсанд отсутствует, но есть запятая, поэтому мы просто возвращаем: ВЛЕВО (A1, НАЙТИ ("&", A1,1) -1).

Кажетсяпростой, но формула выдает сообщение об ошибке и не указывает на проблему.

1 Ответ

4 голосов
/ 11 ноября 2010

Ваша ошибка здесь:

=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 J & MARIA L HOSTRUP в это: HOSTRUP, MARIA L

Полагаю, вы хотите сказать последнее слово?Давайте отметим последнее целое слово:

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 J & MARIA L HOSTRUP», я получаю «HOSTRUP, MARIA» в B5.

...