web-dev-qa-db-ja.com

Excelは文字列から部分文字列を抽出します

私は文字列から可変長部分文字列を抽出する方法を探しています。

私の細胞は次のようになります。

ABC - DEF
ABCDE - DEF
ABCD - ABC

文字列を-文字で分割したいので、セルは次のようになります。

ABC
ABCDE
ABCD

これは式ではなくVBScriptで行う必要があります。

Excel 2010を使用しています

EDIT

データセットに-という文字が常に含まれているわけではないことに気付きました。つまり、変更はないはずです。

22

この問題は2つのステップに分けられます:

  1. 目的の分割文字(この場合は"-"または" - ")の文字列でインデックスを探します。
  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が得られます。

26
Andrew Coleson

あなたの編集に基づいた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関数を実行してください。

7
Hellion

あなたの答えをありがとう@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
...
2
Kevdog777

これは、Excelでテキスト文字列から左から5番目の文字を抽出するための非常に簡単な方法です。

文字列ABCDEFGHIJがExcelスプレッドシートのセルA1に格納されているとします。

=RIGHT(LEFT(A1,5),1)

文字列の左から5番目の文字、つまりEを生成します。

1
Ken Brown

次の式は[TEXTCOLUMN_1]から部分文字列を削除します。

例:-./thumb/hello.jpgthumb/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]),)
0
Alam Zaib