重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

Excel2000-VBAにてマクロ作成中です。
以下のような処理を正規表現を使用して一発で実行させたいのですが、
正規表現に指定するパターンがわかりません・・・。
どなたがご存知でしたら教えて下さい。

やりたいこと:ある文字列中の中のスペース(半角全角両方)を半角スペースに変換し、
さらに連続している半角スペースを1つに置換したい。

スペースを半角に統一することは、Replace関数で可能かと思っています。

A 回答 (3件)

No.2の方へ。



私が使用しているのは、ワークシート関数のTRIM関数です。
そのヘルプより抜粋です。

「文字列に複数のスペースが連続して含まれている場合、単語間のスペースを 1 つずつ残して、不要なスペースをすべて削除します。」

ということです。
そして、ワークシート関数をVBAで使用する方法として、Application.WorksheetFunctionオブジェクトを利用しているのです。
ちなみに、VBAのTrim関数は、文字列の先頭と末尾のスペースを除去するだけで、文字列中のスペースは除去されません。
    • good
    • 0

スペースが2つ以上重ならなければ、Replace関数を2回重ねればいいのですが…。

(そんなことはないかな?)
↓こんな感じに…。
Replace(Replace(変数名," (全角スペース)"," (半角スペース)")," (半角スペース2個)"," (半角スペース1個)")

あと、Trim関数はスペースを無条件に削除する関数と調べたら載っていたのですが…。(- -;
    • good
    • 0

こんにちは。

maruru01です。

TRIMワークシート関数を使用してはいかがですか?
TRIM関数は、2つ以上連続したスペースを1つにします。
全半角が混ざっていても、連続したスペースの先頭だけを残して、後を除去します。
例えばこんな感じ


temp = " abc  bd  dd w ds  "
MsgBox Replace(Application.WorksheetFunction.Trim(temp), " ", " ")


ちなみに、Replace関数は先に通しても構わないと思います。
なお、先頭と末尾のスペースは全半角とも全部除去されます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!