|
|
| Excel VBA Macro ・ 値の操作 ・ FAQ |
|
苗字の字数に応じてスペースをはさむには?
|
|
|
|
Question 49.3 |
Excel VBA Borad (掲示板)より |
 |
 |
|
|
ようやく 「For〜Next」 「If〜Then〜Else」が理解できたところの、マクロ超初心者です。
セルの文字が2文字なら、間に半角スペースを3個 (田中→田___中)、
セルの文字が3文字なら、間に半角スペースをそれぞれに1個ずつ入れる (田井中→田_井_中)
という具合にする方法はないでしょうか?
|
|
|
文字列の連結は、Excel VBA BoardのページのNo.117「メッセージに変数を入れて表示させたい」にもありますが、連結演算子( & )を使います。
"田" & "___" & "中"、または、"田" & "_" & "井" & "_" & "中" のように書きます。
超初心者さんということなので。
ワークシートのA列の1行目から2行目に苗字が入っているとして、B列にスペースを入れた文字列を作る場合のマクロを、「For〜Next」 「If〜Then〜Else」を使って作成してみます。
Sub 苗字の字数に応じてスペースをはさむ()
For 行 = 1 To 2
苗字 = Cells(行, 1)
字数 = Len(苗字)
If 字数 = 2 Then Cells(行, 2) = Left(苗字, 1) & "___" & Right(苗字, 1)
If 字数 = 3 Then Cells(行, 2) = Left(苗字, 1) & "_" & Mid(苗字, 2, 1) & "_" & Right(苗字, 1)
Next
End Sub
上例の「If〜Then〜Else」は単一行形式で書きましたが、通常よく見かけるブロック形式で書いた方が見やすいかも知れません。当然、_ はスペースに置き換えです。
|
|
|
longさん、早速詳しく教えて下さり、感謝感激です。 文字列の連結は知っていたのですが、
苗字 = Cells(行, 1)
字数 = Len(苗字)
このあたりの命令(?)が、わかりませんでした。 それと、
苗字の左の文字の取り方… Left(苗字, 1)、
真ん中の文字の取り方… Mid(苗字, 2, 1)、
右の文字の取り方… Right(苗字, 1) もわかりませんでした。
非常に勉強になりました。本当にありがとうございました。
|
|
|
|
| |
|
|
|