- ベストアンサー
EXCELの文字列操作で文字数不足の分をスペースで補う方法
EXCELの文字データを取り出す際に以下のような操作を行いたいんですが、方法をご存知の方がいらっしゃいましたら教えていただけませんでしょうか。 既にデータの入力されているセルの文字数が、ある一定数に満たない場合は不足分を半角スペースで補う 【例】文字数を15と指定したとします セルに入力されたデータ:山田_ 太郎 ↓ 求めたいデータ:山田_ 太郎_ _ _ _ _ _ (山田の後に半角スペースが1、太郎の後に半角スペースが6つ入っていると仮定してください) ※TEXT関数で数値の文字数不足分を0で埋めるということはできたのですが、TEXT関数は数値のみを対象としているようで・・・。 【例】12345 → 000000000012345 よろしくお願いいたします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
A1に「山田 太郎」が入っている場合、 =LEFTB(A1&REPT(" ",15),15) と式を立てればOKです。 LEFBは、左側から指定バイト分(半角1バイト・全角2バイト)を抜き出す関数。 REPTは、所定の文字をくり返す関数です。
その他の回答 (5)
- imogasi
- ベストアンサー率27% (4737/17069)
>関数以外ではどういった方法がありますでしょうか 参考までにエクセル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で上記と同じ理屈のことができると思います。 スペースの固定長文字列に対し、左詰で、目的の文字列を置き換える というものです。すると後尾のスペースは残るのです。
お礼
詳しいご説明、ありがとうございます。 参考にさせていただきます。
=A1&REPT("_",15-LENB(A1))
お礼
回答ありがとうございます。
- hirumin
- ベストアンサー率29% (705/2376)
No.1で回答したhiruminです 他の方の書かれた式での補足ですが… =LEFTB(A1&REPT(" ",15),15) これですと15文字を越えた名前の場合、半角15文字位置で切れてしまいます。 >セルの文字数が、ある一定数に満たない場合 という条件に合わせるなら、ifで判別が必要になります。
お礼
ご配慮ありがとうございます。 文字数が15を超えることはありませんので、問題ありません。
- mshr1962
- ベストアンサー率39% (7417/18945)
関数なら =A1&REPT(" ",15-LENB(A1)) とか =LEFTB(A1&REPT(" ",15),15)
補足
早速の回答、ありがとうございます。 御三方の回答で解決できたんですが、『関数なら』にちょっと引っかかりました。 関数以外ではどういった方法がありますでしょうか。
- hirumin
- ベストアンサー率29% (705/2376)
=IF(LENB(A1)<15,A1&REPT(" ",15-LENB(A1)),A1) LENB(A1) で、A1セルの半角での文字数(バイト数)が出ます。 A1が15未満なら、REPT関数で半角スペースを追加します(15-バイト数)。
お礼
早速の回答、ありがとうございます!
お礼
早速の回答、ありがとうございます!