• ベストアンサー

Excelで、同じ文字を入力する手間を省きたい

Excel97を使用しています。 C列に「会員番号」を入力するのですが、 5桁の番号の前に、「0」を5つつけたいのです。 いちいち「0」を打たずに、自動的に頭に5つ 「0」が入るようにしたいのですが…。 「セルの書式設定」の「表示形式」→ 「ユーザー定義」で「"00000"#####」とすれば、 一応そのように表示はされるのですが、 数式バーでは「0」は表示されませんよね? (数字なので…) でも、実際のセルに「00000XXXXX」と入力 されているようにしたいのです。 (C列が、他の数式の参照先になっているので) 「表示形式」を「文字列」にしてしまうと、 「0」がなくなってしまいますし…。 関数はあまりよく分からないのですが、 「0」の5つ入った列と、 数字の入った列を「CONCATENATE」でつないで、 後で「形式を選択して貼り付け」→「値」 にすれば一応出来ますが、 もっと手軽にやる方法はないでしょうか? マクロは全然分からないのですが、 そういったものを使わないと無理なのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.3

#1です。 文字列は文字ですから通常では自動的には変更出来ません。 C列以外の作業列を設けてC列に関数を入れるか、 =Text(C1,"00000") マクロを使うかでしょうか。 例えばこんな感じ。 Private Sub Worksheet_Change(ByVal Target As Range) Dim r As Range For Each r In Target  If IsNumeric(r) And r.Column = 3 Then   Application.EnableEvents = False   r.NumberFormat = "@"   r.Value = Format(r.Value, "0000#")   Application.EnableEvents = True  End If Next r End Sub 試すのは新規ブックを開いて、シート名タブを右クリックして「コードの表示」を選び、出てきたところにコピペします。C列に数字を入れると前0の5桁表示にします。

mami0810
質問者

お礼

マクロまで書いて頂いて、 ありがとうございます。 お教え頂いた通りにすると、出来ました! これでいけそうです。 回答、ありがとうございました。

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

一時余分な1列を使いますが、A1セルには、00000を省いた文字列を入れ(注)B1セルに ="00000"&A1と入れれば良いです。 (注)前もってA列をA1A40とか範囲指定し、文字列に書式設定して、数字を入力すること。 その後B列にB列を値複写すれば式が消えますのでA列を抹消すれば良い。

mami0810
質問者

お礼

それに近いものは考えたのですが、 関数やコピペなどをせずに出来ないか… と思ったので…。 回答、ありがとうございました。

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

参照式ってのはどんな関数なのでしょう? 文字列で渡されれば良いなら、 C列はセルの書式設定で「0000#」にして 参照する関数の方で Text(C1,"00000") のようにすれば良いのでは?

mami0810
質問者

補足

すみません。実は職場の人に 尋ねられたので、どのような参照式なのかは 分からないのです…。 曖昧な質問で申し訳ありません。 関数はあまり詳しくないのですが、 その方法で出来るか試してみます。 しかしやはり、 「文字列として、自動的に同じ文字を頭につける」 というは無理なのでしょうか?