- 締切済み
Excelの文字列の固定長埋め
Excelで0埋めは表示形式で対応できますが、 文字列では同じような方法で対応できませんか? たとえば、名前(カナ)を20文字で入力する場合に、あまった部分には"*"を表示するようにしたいのです。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 一応、マクロを考えました。 シートモジュールに貼り付けてください。 作っている最中で、おそらくは、半角カタカナを入力しているだろうと思いました。 ですから、現在は、半角カタカナでなければ、変更されません。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myStr As String * 20 If Target.Column <> 1 Then Exit Sub Application.EnableEvents = False For Each c In Target.Cells If VarType(c.Value) = vbString Then If StrConv(WorksheetFunction.Phonetic(c), vbNarrow + vbKatakana) = c.Value Then myStr = c.Value c.Value = Replace(myStr, Space(1), "*") End If End If Next Application.EnableEvents = True End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
=B1&LEFT(REPT("*","20"),10-LEN(B1)) B1に文字列があって、20文字以内の例ですが。
入力->"カタカナ" 表示->"カタカナ****************" というのを実現するには、入力直後に 書式->"@!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*!*" とすれば可能なようです。 入力された文字の長さを調査して不足分を"*"で埋めるということです。 マクロしかないと思いますね!
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 それは、プログラミングの考え方ですね。文字列に対しては、最初から枠組みが決められていて、仕組みとして出来ないのだと思います。ですから、マクロ以外には、ワークシート上では実現できないと思います。
- mu2011
- ベストアンサー率38% (1910/4994)
セルの書式設定→表示形式→ユーザ定義で@**で如何でしょうか。
書式設定はわかりませんが、数式ではダメですか? =A1&REPT("*",20-LEN(A1)) とか。
お礼
ありがとうございます。 助かりました。