私は多くのプログラミング言語でできるように、Excelの式で文字列を分割しようとしています。
string words = "some text".split(' ');
問題は、セルに複数の単語があることを確認できないことです。FIND()
またはSEARCH()
関数を使用しようとすると、#VALUE
スペースがない場合に返されます。個々の単語を返すように (または、最初の単語または他のすべての単語を返すように) 文字列を分割する簡単な方法はありますか?
私は多くのプログラミング言語でできるように、Excelの式で文字列を分割しようとしています。
string words = "some text".split(' ');
問題は、セルに複数の単語があることを確認できないことです。FIND()
またはSEARCH()
関数を使用しようとすると、#VALUE
スペースがない場合に返されます。個々の単語を返すように (または、最初の単語または他のすべての単語を返すように) 文字列を分割する簡単な方法はありますか?
最初の単語または他のすべての単語を返す式。
=IF(ISERROR(FIND(" ",TRIM(A2),1)),TRIM(A2),MID(TRIM(A2),FIND(" ",TRIM(A2),1),LEN(A2)))
例と結果
Text Description Results
Blank
Space
some Text no space some
some text Text with space text
some Text with leading space some
some Text with trailing space some
some text some text Text with multiple spaces text some text
フォーミュラへのコメント:
=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)
これは最初にセルにスペースが含まれているかどうかをチェックし、含まれている場合はスペースから最初の値を返し、そうでない場合はセル値を返します。
編集
上記の式に追加するだけで、セルに値がない場合は 0 が返されます。メッセージまたはユーザーに空であることを伝える何かを表示する場合は、次を使用できます。
=IF(IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)=0, "Empty", IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3))
以下は、スペースで区切られた場合、セル A1 の最初の単語を返します (Excel 2003 で機能します)。
=LEFT(A1, SEARCH(" ",A1,1))
これらのことは、一度にセルを記述して、長い数式を小さな数式に分割し、途中で確認できるようにすると、より単純になる傾向があります。次に、中間計算を非表示にするか、すべてを1つの数式にまとめることができます。
たとえば、Jamesの式をとると:
=IFERROR(LEFT(A3, FIND(" ", A3, 1)), A3)
これはExcel2007以降でのみ有効です。
次のように分割します。
B3: =FIND(" ", A3)
C3: =IF(ISERROR(B3),A3,LEFT(A3,B3-1))
一度に1チャンクずつ作業する方が少し簡単です。それが終わったら、あなたはそれをに変えることができます
=IF(ISERROR(FIND(" ", A3)),A3,LEFT(A3,FIND(" ", A3)-1))
あなたがそう望むなら。
セルを強調表示し、Dat => Text to Columns を使用します。DELIMITER はスペースです。結果は、分割がスペースを見つけるのと同じ数の列に表示されます。