0

この 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," ",""))))),""))

大きな数式のように見えるかもしれませんが、セルにアンパサンドがない場合は空のセルを返し、カンマがなくアンパサンドが存在する場合は、これを返すことを意図しています。たとえば、次のようになります。

クヌード J & マリア L ホストラップ

これに:

ホストラップ、マリア・L

それ以外の場合、アンパサンドはありませんがコンマがあるため、LEFT(A1,FIND("&",A1,1)-1) を返すだけです。

基本的なように見えますが、数式はエラー メッセージを表示しており、問題を指摘していません。

4

1 に答える 1

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 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」と出ます。

于 2010-11-10T22:56:50.760 に答える