プロが教えるわが家の防犯対策術!

EXCELの文字データを取り出す際に以下のような操作を行いたいんですが、方法をご存知の方がいらっしゃいましたら教えていただけませんでしょうか。

既にデータの入力されているセルの文字数が、ある一定数に満たない場合は不足分を半角スペースで補う

【例】文字数を15と指定したとします
セルに入力されたデータ:山田_ 太郎
   ↓
求めたいデータ:山田_ 太郎_ _ _ _ _ _
(山田の後に半角スペースが1、太郎の後に半角スペースが6つ入っていると仮定してください)

※TEXT関数で数値の文字数不足分を0で埋めるということはできたのですが、TEXT関数は数値のみを対象としているようで・・・。
【例】12345 → 000000000012345

よろしくお願いいたします。

gooドクター

A 回答 (6件)

A1に「山田 太郎」が入っている場合、


 =LEFTB(A1&REPT(" ",15),15)
と式を立てればOKです。

LEFBは、左側から指定バイト分(半角1バイト・全角2バイト)を抜き出す関数。
REPTは、所定の文字をくり返す関数です。
    • good
    • 11
この回答へのお礼

早速の回答、ありがとうございます!

お礼日時:2006/03/13 19:21

>関数以外ではどういった方法がありますでしょうか


参考までにエクセルVBAというのがあります。
VBAなんて想像外かも知れませんが、解き方の1つの柱です。
下記を実行してみれば判ります。
Sub test01()
x = "***************"
' x = " ="
y = "関東代表"
Mid(x, 1, Len(y)) = y
MsgBox x
End Sub
判りやすいようにスペースを*に置き換えて、可視化してますが、
実質 x = "***************"
Mid(x, 1, Len(y)) = y
の2行で実現します。
多数行に対しても2-3行加えるとできます。
関数でもREPLACE、」RIPLACEBで上記と同じ理屈のことができると思います。
スペースの固定長文字列に対し、左詰で、目的の文字列を置き換える
というものです。すると後尾のスペースは残るのです。
    • good
    • 2
この回答へのお礼

詳しいご説明、ありがとうございます。
参考にさせていただきます。

お礼日時:2006/03/13 22:33

=A1&REPT("_",15-LENB(A1))

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

回答ありがとうございます。

お礼日時:2006/03/13 20:57

No.1で回答したhiruminです


他の方の書かれた式での補足ですが…
=LEFTB(A1&REPT(" ",15),15)

これですと15文字を越えた名前の場合、半角15文字位置で切れてしまいます。

>セルの文字数が、ある一定数に満たない場合

という条件に合わせるなら、ifで判別が必要になります。
    • good
    • 2
この回答へのお礼

ご配慮ありがとうございます。
文字数が15を超えることはありませんので、問題ありません。

お礼日時:2006/03/13 19:25

関数なら


=A1&REPT(" ",15-LENB(A1))
とか
=LEFTB(A1&REPT(" ",15),15)

この回答への補足

早速の回答、ありがとうございます。
御三方の回答で解決できたんですが、『関数なら』にちょっと引っかかりました。
関数以外ではどういった方法がありますでしょうか。

補足日時:2006/03/13 19:23
    • good
    • 1

=IF(LENB(A1)<15,A1&REPT(" ",15-LENB(A1)),A1)



LENB(A1) で、A1セルの半角での文字数(バイト数)が出ます。
A1が15未満なら、REPT関数で半角スペースを追加します(15-バイト数)。
    • good
    • 1
この回答へのお礼

早速の回答、ありがとうございます!

お礼日時:2006/03/13 19:21

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

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

gooドクター

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

人気Q&Aランキング