エクセルのマクロについて質問、次のマクロが欲しいです。「選択した範囲のセルに左から○○番目に半角スペースを挿入」
エクセルのマクロについて質問、次のマクロが欲しいです
(1)選択した範囲のセルに左から○○番目に半角スペースを挿入。
例:○○を1とした場合
123456789101
123556799102
123656809103
↓
1■2345■6789■101
1■2355■6799■102
1■2365■6809■103
*■はスペースのつもりです
(2)選択した範囲のセルに右から○○番目に半角スペースを挿入。
例:○○を1とした場合
123456789101
123556799102
123656809103
↓
123■4567■8910■1
123■5567■9910■2
123■6568■0910■3
(3)選択セルの1番右の文字を上付き文字。
例:
1234
1235
1236
↓
1234←4を上付き
1235←5を上付き
1236←6を上付き
「選択した範囲のセル中にスペースやタブがあれば全部削除」
といった似たようなマクロを発見したのですが。これを利用してできないでしょうか?
Sub 空白除去()
Dim rng As Range
Dim str as String
For Each rng In Selection
' --- タブを除去
str = Replace(rng.Value, vbTab, "")
' --- 半角スペースを除去
str = Replace(str , " ", "")
' --- 全角スペースを除去
rng.Value = Replace(str , " ", "")
Next
End Sub
お力添えよろしくお願いします。
以下の正規表現DLL「REGEXP.DLL」を組み込めば、
http://www.hi-ho.ne.jp/babaq/bregexp.html
(1)
ret = Replace("s/^(?)/$1\s/", szTarget)
(2)
ret = Replace("s/(?)$/\s$1/", szTarget)
>次のマクロが欲しいです
例を探そうとしたようだが、丸投げ的。望ましく無い。
例のようなのでなく、下記をヒントとして例示。
他にも色々処理方法はありえる。
セルの文字列に、位置(何文字目)を指定して、文字を挿入というVBAの関数は無いはず。関数を作れば出来るが。
例データ A列
1234 5678 9101
1235 5679 9102
1236 5680 9103
結果
B列
1 234 5 678 9 101
1 235 5 679 9 102
1 236 5 680 9 103
コードは標準モジュールに
Sub test01()
For i = 1 To 3
s = Split(Cells(i, "A"), " ")
t = ""
For j = 0 To UBound(s)
t = t & Mid(s(j), 1, 1) & " " & Mid(s(j), 2, Len(s(j)) - 1)
t = t & " "
Next j
Cells(i, "B") = RTrim(t)
Next i
End Sub
(2)は各ブロックの文字長-1の位置にスペースを入れればよい
(Len(文字列)-1の文字列) & " " & (Len(文字列)番目の1バイト。
そのブロック数だけの繰り返し。
(3)はマクロの弥勒でコードがわかる。右端はMid関数の
Len(文字数)番目で捉えられる。
- 最新から表示
- |
- 回答順に表示












