あなたのエラーはここにあります:
=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)
(しかし、実際にはA1ではなくB3を意味していると思います)
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」と入れると、B5に「HOSTRUP,MARIA」と出ます。