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

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

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

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

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

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

このQ&Aに関連する最新のQ&A

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
    • 0
この回答へのお礼

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

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

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qエクセルで、頭に0をつけて数字の桁を揃える方法

エクセルで、必ず5桁の数字を入れる列があるとします。
ところが、数値データとして最初に作っているので、0が頭になく桁が足りない場合があります。
任意文字として5桁の数字にしたいのですが、

何かいい方法はありませんでしょうか?

例)
A列 A列
50      00050
1000  ⇒  01000
11111    11111

どうぞよろしくお願いいたします。

Aベストアンサー

次の方法は如何でしょうか。
(1)表示だけで良いのならば、セルの書式設定→表示形式→ユーザ定義で00000を設定
(2)データとして必要ならば、空き列(仮にB列)B1に=TEXT(A1,"00000")を入力、下方向にコピー→B列をコピー→A列に形式を選択して貼り付けで「値」を選択→OK、B列を削除

QエクセルでSQLでいうところの「RPAD」を実現したい

エクセルでSQLでいうところの「RPAD」を実現したいのですが
可能でしょうか?

「RPAD」とは
RPAD(文字列、10)
とすると文字列が10桁未満でもスペースを補充して
10桁にして返すものです。

何かご存知の方レスお願いします。

Aベストアンサー

・文字数単位揃える場合
=文字列&REPT(" ",桁数-LEN(文字列))

・バイト数単位で揃える場合
=文字列&REPT(" ",桁数-LENB(文字列))

でどうでしょうか??
ただし、このままだと桁数より文字列の長さが大きい場合、エラーになります。

エラーをなくするためには
・桁数で揃えるために文字列を切り捨てる
・桁数より文字列の長さが長い場合は文字列をそのまま表示
のどちらかが考えられると思います。

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

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

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

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

Aベストアンサー

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

QExcelで後ろにスペースを入れて文字数を一度に揃えることってできますか?

例えば りんご→ りんご___, おれんじ→ おれんじ__,  と文字の後ろにスペースを入れて(その後にカンマもつけたいです。)ここでは7文字のように簡単に文字数を揃えることはできますか?最終的にはテキストファイルにしたいので、エクセルでなくてもいいのですが・・・。
どなたかご存知ないでしょうか?

Aベストアンサー

文字数が、決まっているのならば、こんなのはどうでしょう。
文字列が入っているのがセル”A1”とします。
=A1&REPT(” ”,7-LEN(A1))&”,”
です。

REPTは、” ”を7文字からA1の文字数を引いた文字数を繰り返す。といった感じです。

QACCESSのデータに自動で半角スペースを入れたい

ACCESSのデータに自動で半角スペースを入れたい

例えば フィールドサイズ:15(テキスト型) のフィールドに10桁の数字を入力
した場合、残りの5桁に自動的に半角スペース(もしくは「0」)を入力する方法はないでしょうか?

例)
 1234567890 → 000001234567890
        → @@@@@1234567890(@は半角スペース)

テーブル・クエリどちらでもかまいませんので教えてください。
よろしくお願いします。

Aベストアンサー

余計なお世話かもしれませんが・・・
>フィールドサイズ:15(テキスト型)
これが数値型だったら簡単なんですけどね
テーブルデザインのフィールドの書式に半角スペースだったら@を15個
0の場合は0を15個。

テキスト型の場合は半角スペースの場合のみできましたが
半角スペースの場合は後々トラブルの元になったかすかな記憶が・・・

テキスト型の場合はクエリなら
format([フィールド名],string(15,"@"))
format([フィールド名],string(15,"0"))
とか

Qエクセル・文字列の先頭に空白を挿入する

空白を削除するという質問はよくあるのですが、空白を作るという操作がわかりません。とっても簡単すぎて質問されていないのでしょうか?
すでに作成済みのデータで、セルに「あああ  」と
入っているとして、「 あああ   」という風に一文字右へずらした状態にしたいのです。どうしたらよいのでしょうか?よろしくお願いします。

Aベストアンサー

表示1文字ずらしたいのでしたら、
[セルの書式設定]→[配置]タブ→文字の配置の「インデント」
ここを「1」にして下さい。
空白を実際に入れるのでしたら別シートに
=" "&Sheet1!A1
といった数式を入れて対応することになると思います。

QEXCELファイルのカレントフォルダを取得するには?

EXCELファイルのカレントフォルダを取得するには?

C:\経理\予算.xls

D:\2005年度\予算.xls

EXCEL97ファイルがあります。

VBAで
  カレントフォルダ名
(C:\経理\,D:\2005年度\)
を取得する事は可能でしょうか?

CURDIRでは上手い方法が見つかりませんでした。

Aベストアンサー

こんばんは。
Excel97 でも、同じですね。以下で試してみてください。

Sub test()
'このブックのパス
a = ThisWorkbook.Path
'アクティブブックのパス
b = ActiveWorkbook.Path
'Excelで設定されたデフォルトパス
c = Application.DefaultFilePath
'カレントディレクトリ
d = CurDir
MsgBox "このブックのパス   : " & a & Chr(13) & _
   "アクティブブックのパス: " & b & Chr(13) & _
   "デフォルトパス    : " & c & Chr(13) & _
   "カレントディレクトリ : " & d & Chr(13)
End Sub

Qエクセル:マクロ「Application.CutCopyMode = False」って?

エクセルのマクロを記録していると

「Application.CutCopyMode = False」

というものがよく出てきますが、これは何でしょう?
どういう意味のものかわかりません。
削除しても差し支えないのもでしょうか?

Aベストアンサー

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
Range("A1").Select
Selection.Copy
Range("A2").Select
Application.CutCopyMode = False
ActiveSheet.Paste ← ココでエラー
------------
ご自分で、セルをコピーしてみると分かると思いますが、コピーした範囲が点線で点滅されます。
「Application.CutCopyMode = False」をすると、
その点滅がなくなります。

「Application.CutCopyMode = False」の前で
セルのコピー、または切り取りを行っていると思います。
これは、その操作(セルのコピー、または切り取り)を無効にしているだけです。
------------
Range("A1").Select
Selection.Copy ← これを無効にしている
Range("A2").Select
ActiveSheet.Paste
Application.CutCopyMode = False
------------
上記の場合であれば、「Application.CutCopyMode = False」を削除しても問題ありませんが、
以下の場合、貼り付け処理でエラーになります。
------------
...続きを読む

QExcelのセル内の文字の頭に半角空白を入れるには

Excelで作った住所録があります。セル内の氏名あるいは住所の頭に半角の空白を入れる修正をしたいと思います。簡単な方法を教えて下さい。初心者ですから、出来たらVBA等使わずにお願いします。使った方が楽な場合は最低限のものでお願いします。

Aベストアンサー

表示形式で即座に解決できます。現在のセル(シート)の中身は一切そのままで出来ます。

表示を変えたいセル(複数可)を選択して「セルの書式設定」のダイアログを表示させ、「表示形式」の分類で「文字列」を選択し、その後「ユーザー定義」を選択します。
すると右側の「種類(T):」の下に「@」(文字列の表示形式記号)が表示されます。その前にカーソルを持って行き、「 」(スペース。全角でも半角でも可)を打ち込んで下さい。

これで「OK」を押せば、選択した範囲の文字列の前に全て半角のスペースが追加されているはずです。
中身は一切変わっていません(飽くまで表示のみの変化です)から、検索等も今まで通りの条件で出来ます。

QEXCEL VBA で現在開いているブックのファイル名を取得する方法

EXCEL2003 VBAで業務を簡素化するために、現在開いているブックのファイル名を取得する方法が分かりません。
作業手順をマクロを使って処理していますが、オリジナルのワークブックをファイル名を変えて保存し、以後、このワークブックを読み込んで使用しています。
このときのVBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり、以後の業務に使用できません。
常にファイル名を取得出来るVBAをどなたか、教えて下さい。

Aベストアンサー

>現在開いているブックのファイル名
 ちょっと曖昧な表現かなぁという気もいたしますが、VBAが書いてあるブックのブック名は
ThisWorkbook.Name
で、現在 "アクティブにして" 操作対象になっているブックの名前は
ActiveWorkbook.Name
ですね。

 しかし、
>VBAは、オリジナルのファイル名を使っているため、ファイル名を変更するとエラーになり
というような文脈からすると、
ThisWorkbook.Name
の方ですかね。


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

人気Q&Aランキング