- ベストアンサー
Excelで、入力文字の後に自動で空白を入れるには
セルに任意の文字を入力し、その後ろに自動で空白を入れる方法を探しています。 具体的には、次のような内容です。 1 セル内は必ず全角10文字にする。 2 A1に「北海道」と入れたとき、B1は「北海道 」と空白が7文字分入る。 3 A2に「青森」と入れたとき、B1は「青森 」と空白が8文字分入る。 としたいのです。 可能であればBのセルを使わず、Aに入力しEnterを押したらセル内が変わると言うのが理想ですが… 何かいい方法があれば教えて下さい。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
=A1&REPT(" ",10-LEN(A1)) ””の中は全角スペース。REPT関数は文字列繰り返し。 10文字以上はないとします。
その他の回答 (4)
- GreatDragon
- ベストアンサー率46% (186/402)
> これで私の希望がかなったと思うのですが、質問を読み違えたと言うことですが、 > このままだと動作に問題があるのでしょうか。 A列に値を入力しB列に全角空白を付加した値を求めるなら、VBAを利用する必要はありません。 関数で十分です。 A列に入力したセルに空白を付加するのなら、下記のマクロで問題ありません。 > なぜそうなるのか、全く仕組みはわかりませんが 解説が必要ですか?
お礼
確かにB列と書いていますね。まさか同じセル内でできると思っていなかったので、あのような書き方をしてしまいましたが、意図していたことは教えていただいたVBAでの処理でした。 どうもありがとうございました。
=LEFT(A1&REPT(" ",10),10)
お礼
いろいろな方法があるのですね。どうもありがとうございました。
- GreatDragon
- ベストアンサー率46% (186/402)
#2です。 質問を読み違えました。無視してください。 大変失礼しました。
- GreatDragon
- ベストアンサー率46% (186/402)
ご質問の条件をすべて満たすとしたら、VBAを利用するしかないと思います。 下記のコードを該当シートのコードウインドウにコピペして動作を確認してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) With Target If .Column = 1 Then .NumberFormatLocal = "@" .Value = Left(StrConv(.Value, vbWide) & Application.Rept(" ", 10), 10) End If End With End Sub
お礼
VBAというものを使ったことが無かったのですが、コピペで思ったとおりの動作ができました。 なぜそうなるのか、全く仕組みはわかりませんがありがとうございました(^^; これで私の希望がかなったと思うのですが、質問を読み違えたと言うことですが、このままだと動作に問題があるのでしょうか。
お礼
こんなに短く、関数だけでできるんですね。いろいろと応用ができそうです。 どうもありがとうございました。