Ваша ошибка здесь:
=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.