[[20180402124705]] 『不特定多数のスペースの統一方法』(ツバメ) ページの最後に飛ぶ

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

 

『不特定多数のスペースの統一方法』(ツバメ)

不特定多数のスペースを持ったテキストファイルのスペースを置換する方法に苦労しております。
例)
1 2 3 4 5 6

論理式で=TRIM(テキストファイルの1行)とすると上手くスペースが1つに統一されリプレスできるのですが、
vbaでTRIMを行った場合前後のスペースしか削除されずリプレスが出来ません。
VBAで不特定多数のスペースの数を統一する方法をご存知でしたらご教授ください。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


 ワークシート関数をVBA内で使えるWorksheetFunctionを使って
 WorksheetFunction.Trim(〜)
 としてはどうか
(ねむねむ) 2018/04/02(月) 13:05

ありがとうございます。無事に解決いたしました。WorksheetFunctionで論理式がつかえるのですね。
(ツバメ) 2018/04/02(月) 13:24

 すべてのワークシート関数が使えるわけではないのでそこはヘルプで確認してくれ。

(ねむねむ) 2018/04/02(月) 13:34


違っていたらごめんなさいですが、今回のケースってVBAにもワークシート関数にも「TRIM関数」があり、それぞれが微妙に違う動きをするのを知らずに同一視しちゃったのが、混乱の原因じゃないでしょうか?
●VBAのTrim関数
 http://officetanaka.net/excel/vba/function/Trim.htm
引数stringで指定した文字列から先頭のスペースと、末尾のスペースを削除した結果を返します。

●ワークシート関数のTRIM関数
 https://azby.fmworld.net/usage/excel-function/007/
文字列の先頭や末尾に挿入されているスペースはすべて削除
文字列の間に挿入されているスペースは、1つだけを残してすべて削除 ←コレ

このような違いがあるので、VBAのTRIM関数では、文字列の間に挿入されているスペースはそのままになるとおもいます。(違っている場合はツッコミお願いします。>他の回答者さん)

また、これまた違っていたらごめんなさいですが、「論理式」とは、2つの要素(セル参照、定数、関数(、変数))を比較演算子でつないだものって表現されることが多いように思いますので、質問者さんの
>WorksheetFunctionで論理式がつかえるのですね。
という発言には違和感を感じ、Application.WorksheetFunctionでVBAのコード上でも「ワークシート関数」が使えます。のほうがより正しいような気がします。(あんまり自信ないので他の回答者さんのレスも参考にしてください。)

なお、ねむねむさんのおっしゃるとおりすべてのワークシート関数がこの方法で使えるようになるわけでないので注意が必要です。そのような場合でも、VBA上でワークシート関数が使いたい場合は、下記URLのコラムのようにEvaluateメソッドで対応するというテクニックがあります。
http://vbae.odyssey-com.co.jp/column4/s41602.html

(もこな2) 2018/04/02(月) 20:45


コメント返信:

[ 一覧(最新更新順) ]


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