- ベストアンサー
エクセルで末尾の空白を消したい
文字列「AB CD 」という感じで文字間と末尾に空白が入っています。 これを文字列「AB CD」という風に末尾の空白だけを消したいのですが何か良い方法は無いでしょうか? 文字長は「ABC DEF 」や「A BC 」などはマチマチです。 皆さんどうかよろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
A1セルに「AB CD 」と入っていたら。 B1セルに「=TRIM(A1)」で、出来ます。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
VB/VBAにはRTRIM,LtRIM,TRIMがあります。エクセル関数には今のところ(2000)RTRIMがないようなので、関数を自作します。実質1行です。 シート画面でALT+F11キーでVBE画面になる。 ALT+I、Mで標準モジュールの画面になります。 そこへ Function rtrm(c As String) rtrm = rtrim(c) End Function を貼りつけます。rtrmは何でもVBの関数名ステートメント名以外ならOK。 シートに戻って、例えばB1セルに=rtrm(A1)といれる。 B1の値のみを複写し、f2キーを押すと右の空白が取り除かれていることを確認してください。
お礼
回答ありがとうございます。 私はVBAは詳しくないのですが関数を自作できるのに驚きました、実質1行で済むのは魅力ですね。
- non23
- ベストアンサー率36% (7/19)
私はいつもこうしてます。 ・スペースを●に置換する→”●で終わる”でフィルタをかける→ひとつずつ消す 件数が少ないときしかできませんけど‥。
お礼
回答ありがとうございます。 件数は3000件以上あります、私も最初似た様なことをしたのですが大変でした(涙)
- yachin
- ベストアンサー率40% (2/5)
Trimだと、文字間のスペースが一つになりませんか? 質問の文面を見ると、スペースが2つある例が見受けられます。VBAを使ったほうが早いのでは? Private Sub 右側空白セル削除() Dim c As Variant For Each c In Worksheets("Sheet1").Range("A1:C100") '< ----ここで領域をセットをする c.Value = RTrim$(c.Value) Next c End Sub
お礼
>Trimだと、文字間のスペースが一つになりませんか? 質問の文面を見ると、スペースが2つある例が見受けられます。 確かにその通りなのですが実は氏名データを扱っているため間のスペースは一つになるのが助かるのでしたm(__)m。 苗字が一文字の人は逆に空白を増やして「今 一郎」のように間二つにしたいんですけど、「今 助三郎」のように名前が4文字以上の場合空白は一文字にしています。よって空白2文字は極端に少ないのでとりあえずTRIMをかけて後で調整が良いようです。 ご回答ありがとうございました!
- taknt
- ベストアンサー率19% (1556/7783)
TRIM では 残念ながら 末尾だけの空白を削除というわけには いきません。 先頭についている 空白も削除されてしまうからです。 そこらへんを考慮して使う必要があります。 なお、末尾だけ削除にするには A1に入ってるものと前提して =RIGHT(TRIM("a" & A1),LEN(A1)-1) という風に 先頭にダミーの一文字をつければ 末尾の空白だけ削除ができます。
お礼
お答えありがとうございます。 先頭にダミーをつける考え方が自分にとって斬新でした。
お礼
早速のお答えありがとうございます! いろいろな方のすばらしいお答えがあったのですが1番目の書き込みに敬意を表して20ptとさせて頂きます。 実はこの処理は氏名に対して行なうもので間に空白1文字以上は必ず入れています(一文字の苗字や一文字の名前などの場合空白を増やして他氏名とのバランスをとっていますが)。この関数で十分助かりました。ありがとうございました。