22

後で連結される文字列を再フォーマットする関数を設定しようとしています。文字列の例は次のようになります。

Standard_H2_W1_Launch_123x456_S_40K_AB

S」が存在しない場合もあれば、「40K」が「60K」である場合も存在しない場合もあり、「_AB」が「_CD」または「_「EF」である場合もあります。最後に、すべてのアンダースコアをハイフンに変更する必要があります。最終製品は次のようになります。

Standard-H2-W1-Launch-123x456-

次々に実行すると、これらすべてを処理する 4 つの関数があります。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"_AB","_"),"_CD","_"),"_EF","_")

=SUBSTITUTE(SUBSTITUTE(B2,"_40K",""),"_60K","")

=SUBSTITUTE(C2,"_S_","_")

=SUBSTITUTE(D2,"_","-")

これらを 1 つの関数に組み合わせる方法をいくつか試しましたが、このレベルの Excel には比較的慣れていないため、途方に暮れています。これらすべてを組み合わせて、1 つのセルでコマンドを次々と実行する方法はありますか?

4

5 に答える 5

27

それらを単純に組み合わせるには、次のようにすべて一緒に配置できます。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A2,"_AB","_"),"_CD","_"),"_EF","_"),"_40K",""),"_60K",""),"_S_","_"),"_","-")

(これは、7 つのネストされたステートメントという古い Excel の制限を超える可能性があることに注意してください。私は Excel 2010 でテストしています。


それを行う別の方法は、LeftandRight関数を利用することです。

これは、最後の変更データが常に存在し、長さが 8 文字であることを前提としています。

=SUBSTITUTE(LEFT(A2,LEN(A2)-8),"_","-")

これにより、同じ結果の文字列が得られます


文字列が常に 8 文字で終わるとは限らない場合は、「_S」を検索して現在の場所を取得できます。これを試して:

=SUBSTITUTE(LEFT(A2,FIND("_S",A2,1)),"_","-")
于 2014-03-11T00:54:21.693 に答える