- ベストアンサー
エクセルで数字を入力した時、数字の前に一定の文字を表示させたい
エクセル2000です。たとえば、一つのセルに 123456 と六桁の数字を入力しただけで、数字の前に SAと表示され SA123456 となるようにしたいのです。数字は六桁で、数値は変わっていきますが、数字の前のSAという文字は、変わらず一定にしたいのです。どのような、数式にしたら良いでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
私なら、数式ではなくて、セルの書式設定で行います。 セルで右クリックし「セルの書式設定画面」がでたら表示形式のところで ユーザー定義を選びます。 G/標準と右側にでているところで、Gの前に"SA"と入力します。 この書式にしておけば数字を入れればその前にSAがつきますよ。 ""は間に文字をいれたりして、時々関数でも使うので便利ですね。
その他の回答 (3)
- nishi6
- ベストアンサー率67% (869/1280)
入力したセルそのものを書き換えるなら関数ではできませんね。 ●見た目でいいなら、書式設定で可能です。 ●別セルをつかっていいなら、A1に数値がある例で、別セルに ="SA"&RIGHT("000000"&A1,6) または =TEXT("SA000000",A1) として、これを、形式を選択して貼り付け→値で 書き換えます。 ●別セルを使わず、入力と同時に『SAxxxxxx』にしたいなら、マクロしかないでしょう。 下記は、Sheet1のA1:B20の範囲の変更について書き換える例です。範囲は書き換えて下さい。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示し、Sheet1をダブルクリック。 出てきたコードウインドウに下記コードをコピーして貼りつけます。 ここから ↓ Private Sub Worksheet_Change(ByVal Target As Excel.Range) Dim rg As Range 'セル 'エラー対応。イベントが発生するようにして終わる。 On Error GoTo ErrorHandler 'セルを書き換えるので再度イベントが発生しないようにする Application.EnableEvents = False '複数範囲を処理した時は個別に処理する For Each rg In Target 'A1:B20の範囲の変更について書き換える例 If Not Intersect(rg, Range("A1:B20")) Is Nothing Then If rg <> "" And IsNumeric(rg) Then '数値入力ならば、6桁数値の先頭に『SA』を付ける rg = "SA" & Right("000000" & rg, 6) End If End If Next Application.EnableEvents = True Exit Sub ErrorHandler: Application.EnableEvents = True End Sub
お礼
ありがとうございます。マクロは、まだ勉強中なのでとても参考になりました。
- tanukiti
- ベストアンサー率0% (0/2)
はじめまして。tanukitiと申します。 それでしたら、数式でなくても出来ると思います。 表示させたいセルを右クリック-[セルの書式設定]で、 [表示形式]タグ内のユーザー定義を選択。 テキスト内に"SA"000000と入力して、OKボタンを押下します。 上記の操作で、表示形式を設定したセルに6桁の数字を入力すれば、 SAXXXXXXと表示されるようになります。 参考にしていただけたら幸いです。
お礼
ありがとうございます。別のセルを使わず、関数でできないかと思ったのですが、[セルの書式設定]のほうが、簡単ですね。
- hinebot
- ベストアンサー率37% (1123/2963)
数字が6桁固定なら、セルの書式設定でユーザー定義を選び、 種類に"SA000000"と入れればOKです。 なお、この場合例えば3桁の数字"123"と入力すると"SA000123"となりますが これを"SA123"としたければ、"SA000000"の変わりに"SA######"とすればOKです。
お礼
ありがとうございます。やはり、セルの書式設定でやったほうがいいんですね。
お礼
ありがとうございます。数式より簡単ですね。