私は文字列から可変長部分文字列を抽出する方法を探しています。
私の細胞は次のようになります。
ABC - DEF
ABCDE - DEF
ABCD - ABC
文字列を-
文字で分割したいので、セルは次のようになります。
ABC
ABCDE
ABCD
これは式ではなくVBScriptで行う必要があります。
Excel 2010を使用しています
EDIT
データセットに-
という文字が常に含まれているわけではないことに気付きました。つまり、変更はないはずです。
この問題は2つのステップに分けられます:
"-"
または" - "
)の文字列でインデックスを探します。FIND
およびSEARCH
コマンドは、それぞれneedle
内の指定されたhaystack
のインデックスを返します(FIND
は大文字と小文字を区別し、SEARCH
は大文字と小文字を区別せず、ワイルドカードを使用できます)。それを考えると、我々は持っています:
FIND(search_text, source_cell, start_index)
またはこの場合:
FIND(" - ", A1, 1)
インデックスを作成したら、「分割」するためにsource_cell
のプレフィックスが必要です。 MID
はちょうどそれをします:
MID(source_cell, start_index, num_characters)
両者をまとめると、次のようになります。
=MID(A1,1,FIND(" - ",A1,1))
a1がABC - DEF
のテキストを持つ場合、ABC
が得られます。
あなたの編集に基づいたAndrewの答えを拡張します。分割する文字列を見つけるために、FIND
関数を使います。 FIND
が与えられた文字列を見つけられない場合、#VALUE?
エラーを返します。そのため、この値を確認して代用値を使用する必要があります。
#VALUE
を含むエラー値をチェックするには、ISERROR
関数を使用します。
=ISERROR(FIND(" - ", A1, 1))
FIND
関数がA1セルに " - "という文字列を見つけられない場合は、これが当てはまります。だから我々はそれを使用して使用する値を決定するために使用します。
=IF(ISERROR(FIND(" - ", A1, 1)), A1, MID(A1, 1, FIND(" - ", A1, 1)))
つまり、findコマンドがエラーを返す場合は、修正されていないA1セルを使用します。そうでなければ、Andrewがすでに提供しているMID
関数を実行してください。
あなたの答えをありがとう@AndrewColeson。
-
の右側にすべてが欲しいのであれば、それに加えて、以下のコードを使用してください。
= MID(A1、LEN(B1)+ 3、LEN(A1))
それは:
A1 = ABC - DEF
B1 = =MID(A1,1,FIND(" - ",A1,1))
B1 = ABC
Therefore A1 = DEF
-
の後に未定義の文字数がある場合、このコードは素晴らしいです。
例えば:
あなたが持っている場合:
ABC - DEFG
AB - CDEFGH
...
これは、Excelでテキスト文字列から左から5番目の文字を抽出するための非常に簡単な方法です。
文字列ABCDEFGHIJ
がExcelスプレッドシートのセルA1に格納されているとします。
=RIGHT(LEFT(A1,5),1)
文字列の左から5番目の文字、つまりE
を生成します。
次の式は[TEXTCOLUMN_1]
から部分文字列を削除します。
例:-./thumb/hello.jpg
をthumb/hello.jpg
に変換したい場合は、以下の式を使用してください。
=SUBSTITUTE([TEXTCOLUMN_1],LEFT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)
[TEXTCOLUMN_1]
=変更したい列名[NUM_OF_CHARACTERS]
=削除したい左側からの文字数
あなたが右側から削除したい場合は、以下を使用してください
=SUBSTITUTE([TEXTCOLUMN_1],RIGHT([TEXTCOLUMN_1],[NUM_OF_CHARACTERS]),)