Ваша ошибка здесь:
=LEFT(B3,FIND(",",B3&",")-1)&","&RIGHT(B3,LEN(B3)-FIND("&",B3&"&")),
На данный момент, запятая не относится к Anthing, потому что правый оператор имеет соответствующие скобки
Насколько то, что вы хотите? Давайте разберем, что до в то, что вы на самом деле спросил:
если нет амперсанд в клетке, не возвращают пустую ячейку,
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))
Когда я ставлю в "Кнуд J & MARIA L Hostrup", я получаю "Hostrup, МАРИЯ" в B5.
Возможно, это поможет, если вы разделите свои очень длинные формулы на отдельные (скрытые?) Ячейки – McKay