XLSセルの最後のスペースを見つける必要があります


17

テキスト値を含むExcelシートがあります。たとえば、A1:「これはテキストです」。最後のスペース文字の位置を見つける必要があります。希望する結果が得られるExcelの数式はありますか?FINDとSEARCHを試しましたが、これらは左から開始しますが、必要なのは右から開始することです。


ほぼ同じヴィンテージのクロスサイト複製:stackoverflow.com/q/18617349
Mathieu K.

回答:


28

空白の値が「スペース」を意味し、XLSがExcelを意味する場合、次の式を使用できます(最後のスペースを検索するテストがにあると仮定しますA1)。

=FIND("☃",SUBSTITUTE(A1," ","☃",LEN(A1)-LEN(SUBSTITUTE(A1," ",""))))

次の3つの部分に分けることができます。

  • LEN(A1)-LEN(SUBSTITUTE(A1," ",""))スペースの数を与えます、それを呼び出しましょうx
  • SUBSTITUTE(A1," ","☃",[x])x番目のスペース(最後のスペース)を雪だるまに置き換えます。
  • FIND("☃",[...])雪だるまの位置がわかります。これは最後のスペースの位置です。

完璧に動作します。ありがとう。あなたの説明
にもかかわらず

5
+1を使用すると、詳細でわかりやすい回答が得られ、最も創造的な代替文字が得られます。
ダググランシー

LibreOffice CalcとGoogleスプレッドシートの両方でも機能します。
マチューK.

8

別の方法は、A1ですべてのキャラクターを許可します(雪だるまも!)

=LOOKUP(2^15,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))))

FIND 検索の開始位置を定義する3番目の引数があります。1〜nの整数値(nはA1の長さ)の配列をそのパラメーターに適用すると、最後の数字が最後のスペース。

LOOKUP次に、その配列で検出される可能性のある値よりも大きい値を検索してその番号を抽出します。その場合、最後の番号が見つかります

ではExcel 2010以降、あなたはまた、使用することができAGGREGATE、このように機能を

=AGGREGATE(14,6,FIND(" ",A1,ROW(INDIRECT("1:"&LEN(A1)))),1)

FIND前と同じ配列を返し、最初の引数として14を使用AGGREGATEし、最後に1を使用して、エラーを無視しながら配列の最大値を取得します[6]


1
よく働く。私はしばらく前に開発者でしたが、INDIRECTがどのように、そしてなぜ動作するのかまだわかりません:)
Dheer

1
A1が12文字であると仮定すると、この部分"1:"&LEN(A1)は「1:12」と評価されます。これは、ROWが処理できない文字列ですが、INDIRECTはROW 処理できる有効な参照に文字列を変換するため、ROW(1:12)は{1 ; 2; 3; 4; 5; 6; 7; 8; 9; 10; 11; 12}
バリーフーディーニ

clarifをありがとう。今では意味があります。つまり、Find自体が暗黙的に配列を処理し、すべての値に対して開始位置として実行されます
...-Dheer

権利という、FINDは、A1が含まれている場合など、配列を返しbarry larry houdini、その後、この配列が返されますFIND {6;6;6;6;6;6;12;12;12;12;12;12;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!;#VALUE!}とLOOKUPを、および/またはAGGREGATE、すなわち12、それから、最後の/最大の数値を取る
バリー・フーディーニ

注:これはLibreOffice Calcで機能します。Googleスプレッドシートでは機能せず、代わりに最初の出現箇所を見つけます。
マチューK.
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.