プロが教える店舗&オフィスのセキュリティ対策術

セルに任意の文字を入力し、その後ろに自動で空白を入れる方法を探しています。
具体的には、次のような内容です。

1 セル内は必ず全角10文字にする。
2 A1に「北海道」と入れたとき、B1は「北海道       」と空白が7文字分入る。
3 A2に「青森」と入れたとき、B1は「青森        」と空白が8文字分入る。

としたいのです。
可能であればBのセルを使わず、Aに入力しEnterを押したらセル内が変わると言うのが理想ですが…
何かいい方法があれば教えて下さい。

A 回答 (5件)

=A1&REPT(" ",10-LEN(A1))


””の中は全角スペース。REPT関数は文字列繰り返し。
10文字以上はないとします。
    • good
    • 5
この回答へのお礼

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

お礼日時:2006/07/06 23:58

> これで私の希望がかなったと思うのですが、質問を読み違えたと言うことですが、


> このままだと動作に問題があるのでしょうか。
A列に値を入力しB列に全角空白を付加した値を求めるなら、VBAを利用する必要はありません。
関数で十分です。
A列に入力したセルに空白を付加するのなら、下記のマクロで問題ありません。

> なぜそうなるのか、全く仕組みはわかりませんが
解説が必要ですか?
    • good
    • 3
この回答へのお礼

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

お礼日時:2006/07/12 21:39

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

    • good
    • 0
この回答へのお礼

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

お礼日時:2006/07/12 21:37

#2です。



質問を読み違えました。無視してください。
大変失礼しました。
    • good
    • 0

ご質問の条件をすべて満たすとしたら、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
    • good
    • 0
この回答へのお礼

VBAというものを使ったことが無かったのですが、コピペで思ったとおりの動作ができました。
なぜそうなるのか、全く仕組みはわかりませんがありがとうございました(^^;

これで私の希望がかなったと思うのですが、質問を読み違えたと言うことですが、このままだと動作に問題があるのでしょうか。

お礼日時:2006/07/07 00:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A