[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字列の最後尾のスペースを削除したい』(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
突然ですが、とても助かる関数が掲載されていて、驚きました。
大変申し訳ないのですが
=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.