スプレッドシート: 特定の文字列が含まれている場合に列を分割する

スプレッドシート: 特定の文字列が含まれている場合に列を分割する

以下は私のスプレッドシートからの抜粋です: ここに画像の説明を入力してください

注意: これは単なる簡略化された例です。私の完全なスプレッドシートには、多数の列と 10,000 を超える行があります。

LIT:私のスプレッドシートには、 (画像のように)で始まる角括弧内のテキストを含む行が頻繁にあります。

このテキストを自動的に抽出し、スプレッドシートの別の列に配置することは可能ですか?

(たとえば、上記の例では、[Lit: Next of hotel]別の列に入りますが、同じ行に残ります)。 


注: 例に示すように、すべての行に [Lit:] の例があるわけではありません。

現在、Apple Pages を使用しています。ただし、可能であれば Google Docs や Open Office、または別のパッケージを試してみたいと思います。

答え1

あなたの例では、必要な文字列が で始まる[LIT:か で始まるかについて矛盾しています[Lit:。私は大文字の であると想定しました[LIT:

LibreOffice (およびおそらく他の Excel の同等機能、ただし Apple Pages や Google Docs についてはわかりません) では、このFIND()関数を使用してテキスト フィールド内の部分文字列を見つけることができますが、部分文字列が見つからない場合はエラーが返されるため、 も使用する必要がありますIFERROR()

[LIT:まず、任意のフィールドが常に文字列の末尾にあり、 が最後の文字である簡単な例を考えてみましょう]。データが 列 にありA、 から始まっている場合A1、次の数式で目的の動作が実行されます。

=IFERROR(MID(A1,FIND("[LIT:",A1),LEN(A1)),"")

ここで、 が値を返す場合FIND()、その位置から文字列の末尾までの部分文字列が返されます。それ以外の場合は、FIND()エラーMID()が生成され、空の文字列が返されます。

[LIT:フィールドが文字列の途中に出現する可能性のあるより複雑なケースでは、式を詳しく説明する必要があります。

=IFERROR(MID(A1,FIND("[LIT:",A1),FIND("]",MID(A1,FIND("[LIT:",A1),LEN(A1)))),"")

この場合、文字列[LIT:の末尾までの部分文字列が見つかりますが、元のセルから生成される文字数は]部分文字列内の位置によって制限されます。この場合も、エラーが発生すると空の文字列が生成されます。

[LIT:どちらの数式を使用する場合でも、その数式が含まれているセルをコピーして、列の残りの部分に貼り付けます。 またはのいずれかを処理する必要がある場合は[Lit:FIND("[LIT:",A1)に置き換えますSEARCH("\[L[Ii][Tt]:",A1)。一方、 はFIND()リテラルで大文字と小文字を区別した一致を検索し、SEARCH()正規表現の一致を使用します。

[LIT:元の列から部分文字列を削除する必要がある場合はA、抽出した[LIT:フィールドを列に配置しC、次のように配置しますB1

=SUBSTITUTE(A1,C1,"",1)

これを列の残りの部分にコピーしてB、列を非表示にしますA。もちろん、任意の列と開始行を使用できますが、私の例では、ヘッダー行のない隣接する列を使用しました。

=SUBSTITUTE()はエラーを生成しないので、 を使用する必要がないことに注意してくださいIFERROR()

関連情報