[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字間にスペースを入れたい』(ヒロ)
指定したすべてのセルの中の文字間にスペースを入れたいのですが、
一括で行う方法がありますか。
よろしくお願いします。
例 山本太郎 ⇒ 山 本 太 郎
マクロでやっつける方法です。 Alt + F11を押して、挿入-->標準モジュールを選択。 出てきた画面に下記コードを貼り付け閉じる。 変換したい範囲を選択して、Alt + F8を押して、Hiroを選択、実行。 (ROUGE) '---- Sub Hiro() Dim C As Range, i As Long, txt As String For Each C In Selection txt = "" If Len(C.Text) Then For i = 1 To Len(C.Text) txt = txt & " " & Mid(C.Text, i, 1) Next C.Value = Trim(txt) End If Next End Sub
UDF 1) Alt + F11 で VBE を起動 2) [挿入]-[標準モジュール] で右空白部分に下記コードを貼り付ける 3) x をクリックしてExcel画面に戻る
セルに =StrInBtwn(A1)
Function StrInBtwn(txt As String) As String With CreateObject("VBScript.RegExp") .Pattern = "(\S)" .Global = True StrInBtwn = Trim(.replace(txt,"$1" & Chr(32))) End With End Function (seiya)
seiyaさ〜ん、"のいっ、位置がぁ〜 (ROUGE)
あれ? だめだった? 一応変更しましたが... (seiya)
"$1" & " " では? (ROUGE)
この部分もMeta characterだからちょっと違うと思う。 テストできないのでなんとも.... (seiya)
"$1\s" だと、\sも文字列として扱われてしまっているようなので・・・ (ROUGE)
"$1" & Chr(32) でいけますか? (seiya)
いけます! Trimはかまさなくて良い? (ROUGE)
最後にスペースを入れないのならTrimですね、 問題の意図が不明だったので... 検証ありがとうございます (seiya)
どういたしまして〜♪ ひとつ教えてください。 "$1"にはどのような意味があるのでしょうか? (ROUGE)
正規表現では Pattern で()で指定した文字列を その位置で参照できます。
今回は一つなので $1
もし複数なら 例えば、小文字と大文字の間に/を挿入の場合 Pattern = "([a-z])([A-Z])" "$1/$2" なんて事も...(seiya)
$n --> n文字目ってことですね。 ありがとうございましたぁ! (ROUGE)
こんちくは。 もう必用なさそうですが、 おもしろそうだったので。
関数なのでA1に 山本太郎 ならB1に=spt(A1) (ramrun)
Function spt(ByRef str As String) As String If Len(str) > 0 Then spt = Left(str, 1) & " " & spt(Mid(str, 2, 99)) End Function
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.