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


22

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

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

ABC - DEF
ABCDE - DEF
ABCD - ABC

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

ABC
ABCDE
ABCD

これは、VBScriptではなく式を使用して行う必要があります。

Excel 2010を使用しています

編集

データセットに常に-文字が含まれているわけではないことがわかりました。つまり、変更はありません。

回答:


26

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

  1. 目的の分割文字の文字列でインデックスを見つけます(この場合、"-"または" - ")。
  2. 元のテキストの先頭から分割インデックスまでのプレフィックスサブストリングを取得します。

FINDそしてSEARCH、それぞれが所与のインデックス返すコマンドneedlehaystackFIND大文字と小文字が区別され、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 - DEFgiveの場合ABC


7

編集に基づいた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セルを使用します。それ以外の場合は、MIDAndrewが既に提供している機能を実行します。


2

@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
...

これはまた、トリックを行います=MID(a1,FIND("-",a1)+1,LEN(a1)))任意の「細胞外」の言及なし
マイキー

1

Excelのテキスト文字列から左から5番目の文字を抽出する非常に簡単な方法を次に示します。

文字列ABCDEFGHIJがExcelスプレッドシートのセルA1に格納されていると仮定すると、次の式

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

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


MIDExcelに関数はありませんか?レガシーVisual Basicに存在するはずです、そしてそれは次のようなものになるでしょう=MID(A1, 5, 1)
Valmiky Arquissandas 14

0

次の式は、からサブストリングを削除します [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]),)
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.