web-dev-qa-db-ja.com

文字列内の文字の最後のインスタンスを検索し、前に来るものはすべて保持します

私は次のデータを持っています、そして私は数字を取り除く必要があります。これは、文字 ""の最後の出現を見つけて、前に来るすべてのものを保持する必要があることを意味しますが、式の書き方がわかりません。

テキストの長さはさまざまで、複数の単語にすることもできます。数字は3桁以下です。

**String**
abc 61
abc 79
ac 1
ab 123
a bc 12

ありがとう!

2
user2681550

この式を試してください:

_=SUBSTITUTE(A1, TRIM(RIGHT(SUBSTITUTE(A1, " ", REPT(" ", 99)), 99)), "")
_

結果:

enter image description here
(スクリーンショットの数式は、地域の設定によりセミコロンを使用しています。)


それを分解する:

  1. =SUBSTITUTE(A1, " ", REPT(" ", 99))

    これにより、目的の区切り文字(この場合はスペース)が出現するたびに99個のスペースに置き換えられます。正確な数は、最も長い個々の単語の長さよりも大きい限り、重要ではありません。

  2. =TRIM(RIGHT(..., 99))

    これは、右端の99文字を取り(ここでは手順1と同じ番号を使用することが重要です)、それらをトリミングします(最初と最後から空白を削除します)。本質的に、これはあなたにテキスト最後の空白を与えます。

  3. =SUBSTITUTE(A1, ..., "")

    テキストbefore最後の空白が必要だったので、これは単にステップ2の結果を取得し、それを空の文字列に置き換えて削除します。これで、セルの内容が残りますまで最後の空白文字。末尾のスペースも削除したい場合は、もう一度=TRIM()を実行できます。

4
Indrek

私はこの式を使用します-

=LEFT(A1,LOOKUP(9.9999999999E+307,FIND(" ",A1,ROW($1:$1024))))

の最後のインスタンスを見つけ、それを使用して、leftから始まる印刷する文字数を定義します。

編集-何らかの理由でROW()が短い文字列で失敗したため、$1:$1024を追加しました。

enter image description here

1
Raystafarian

最後の機能の前に保持:

=TRIM(LEFT(SUBSTITUTE(A1;"TARGETCHAIN";REPT(" ";LEN(A1)));LEN(A1)))

フランス語版: ;-)

=SUPPRESPACE(GAUCHE(SUBSTITUE(A1;"TARGETCHAIN";REPT(" ";NBCAR(A1)));NBCAR(A1)))

..「TARGETCHAIN」が空白に設定されている場合は完全に機能します:「」

0
user1767316