• ベストアンサー

Excelで、入力文字の後に自動で空白を入れるには

セルに任意の文字を入力し、その後ろに自動で空白を入れる方法を探しています。 具体的には、次のような内容です。 1 セル内は必ず全角10文字にする。 2 A1に「北海道」と入れたとき、B1は「北海道       」と空白が7文字分入る。 3 A2に「青森」と入れたとき、B1は「青森        」と空白が8文字分入る。 としたいのです。 可能であればBのセルを使わず、Aに入力しEnterを押したらセル内が変わると言うのが理想ですが… 何かいい方法があれば教えて下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

=A1&REPT(" ",10-LEN(A1)) ””の中は全角スペース。REPT関数は文字列繰り返し。 10文字以上はないとします。

noname#48567
質問者

お礼

こんなに短く、関数だけでできるんですね。いろいろと応用ができそうです。 どうもありがとうございました。

その他の回答 (4)

回答No.5

> これで私の希望がかなったと思うのですが、質問を読み違えたと言うことですが、 > このままだと動作に問題があるのでしょうか。 A列に値を入力しB列に全角空白を付加した値を求めるなら、VBAを利用する必要はありません。 関数で十分です。 A列に入力したセルに空白を付加するのなら、下記のマクロで問題ありません。 > なぜそうなるのか、全く仕組みはわかりませんが 解説が必要ですか?

noname#48567
質問者

お礼

確かにB列と書いていますね。まさか同じセル内でできると思っていなかったので、あのような書き方をしてしまいましたが、意図していたことは教えていただいたVBAでの処理でした。 どうもありがとうございました。

noname#204879
noname#204879
回答No.4

=LEFT(A1&REPT(" ",10),10)

noname#48567
質問者

お礼

いろいろな方法があるのですね。どうもありがとうございました。

回答No.3

#2です。 質問を読み違えました。無視してください。 大変失礼しました。

回答No.2

ご質問の条件をすべて満たすとしたら、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

noname#48567
質問者

お礼

VBAというものを使ったことが無かったのですが、コピペで思ったとおりの動作ができました。 なぜそうなるのか、全く仕組みはわかりませんがありがとうございました(^^; これで私の希望がかなったと思うのですが、質問を読み違えたと言うことですが、このままだと動作に問題があるのでしょうか。

関連するQ&A