
注意: これは単なる簡略化された例です。私の完全なスプレッドシートには、多数の列と 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()
。