[[20061016141906]] 『文字列の最後尾のスペースを削除したい』(YY) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『文字列の最後尾のスペースを削除したい』(YY)

商品一覧表があり、下記の様にA列に商品名が入っています。

   A列

 ボールペン_赤_______
 ボールペン_黒_______
 シャープペン_太_____
 シャープペン_細_____

(※スペースを _ で表示してあります)

文字列の途中のスペースは削除せずに、最後尾にあるスペースをすべて削除したのですが、いい方法はありますでしょうか?最後尾のスペースの数はバラバラです。
よろしくお願いいたします。



 TRIM(A1)

 このようなものは、どうでしょう?                      (LOOKUP)
 =LEFT(A1,MAX(,LEN(A1)+SUMPRODUCT(-(TRIM(RIGHT(A1,COLUMN(1:1)))=""))))

 マクロ関数では、下のようにして、=RTTRIM(A1) でしょう?
 Function RTTRIM(RNG As Range) As String
 RTTRIM = RTRIM(RNG.Value)
 End Function

TRIM()の場合、文字列中の2連続のスペースが1つになってしまいます。例題が不十分でごめんなさい。
(LOOKUP)さんの方法で、できました!理解できませんが・・。
ありがとうございました。

すみません。

突然ですが、とても助かる関数が掲載されていて、驚きました。

大変申し訳ないのですが
=LEFT(A1,MAX(,LEN(A1)+SUMPRODUCT(-(TRIM(RIGHT(A1,COLUMN(1:1)))=""))))
の解説をしていただけませんでしょうか。

よろしくお願い致します。
(sk) 2013/11/27(水) 21:12


 対象文字列(例:"黒□赤□□")を右から1文字、2文字、3文字・・・と切り出していく、すると
 □、 □□、赤□□、・・・と云う文字が得られる。□がスペースの場合、それらをTrim関数で処理すると 、
 ""、 ""、  赤、   ・・・と云う文字に変化する。

 それらが「=""」かテストすると
 True、 True、False ・・・と云う真偽値が得られる。

 Trueの数は、対象文字列の右にあるスペースの数と一致する。
 そこで、上述真偽値に-1を掛けると
 -1 、-1 、0  ・・・と云う数値が得られる。

 それをSumproduct関数で合計すれば、スペースの合計数が得られる(ただし、マイナスが付く)。

 その合計数を対象文字列の長さから引いた文字数で、左から切り出せば、
 丁度右端のスペースの数だけ切り落した文字列が得られる。

 バージョンが2007以降は、こう云うものを使うのは非常識です。
              ↓
         >COLUMN(1:1) ←昔、{1,2,3・・・・256}の配列を得ていたもの

 2003までは256列しかなかったので、大勢に影響ないので使われていましたが、
 2007以降は16,384列もありますから、切り出す文字数が無駄に多すぎです。

 じゃ、何を使うのか? と聞かれると返事に困りますけど、
 例えば、ROW(A$1:A$99) の様なものになります。
          ↑
          ここの数値は文字列の全長分以上あればいい。
         (厳密には右端のスペースの数以上) 

(半平太) 2013/11/27(水) 23:10 → 11/28 6:48 一部修正しました


 別案です。

 =LEFT(A1,MATCH(1,INDEX(0/(MID(A1,ROW($1:$50),1)>" "),)))
 
(GobGob) 2013/11/28(木) 07:45

 過去の回答、エラー処理されてますなぁ。
 なのでエラー処理してみました。

 =LEFT(A1,MATCH(1,INDEX(0/(MID(0&A1,ROW($1:$50),1)>" "),))-1)
 
(GobGob) 2013/11/28(木) 09:26

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.