電子書籍の厳選無料作品が豊富!

Excelで、特定のセルに入力した文字列に、自動的に指定した文字が追加されるようにする関数はありますか?

例えばA1に、123-4567と入力してエンターを押せば、自動的に文頭にAが付与されて、A123-4567となり、
B1に、abcdefと入力してエンターを押せば、自動的に末尾に-001が付与されて、abcdef-001となるようにしたいのです。

処理上必要なので毎回手入力しているのですが、付与すべき文字列が入力欄ごとに決まっているので、自動的に処理できたら楽なのにと常々考えています。
ものぐさで申し訳ありません。知ってらっしゃる方お願いします。

A 回答 (6件)

マクロではないのですが。

。。
質問者さんがどの程度の文字列を追加したいのかにも寄りますが、
ご質問にあった程度の字数でしたら「セルの書式設定->表示形式->ユーザ設定」で
「"A-"@」とか「@"-001"」にしてみてはどうでしょう?
もちろんあくまで書式なので、並べ替えとかそういったものには対応していませんが。

お役に立てたら嬉しいです。
    • good
    • 4

#1さんのおっしゃっている通り、関数ではご要求通りの内容の実現は無理で、マクロによる事になります。

おまけで特定の列には同じ処理をしたいという場合についてもコメントアウトして付けておきます。
マクロをどこに記述するかは、参考URLなどをご覧ください。

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
'特定セルで判断したい場合
Select Case Target.Address
Case "$A$1"
Target.Value = "A" & Target.Value
Case "$B$1"
Target.Value = Target.Value & "-0001"
End Select

'列で判断したい場合
' Select Case Target.Column
' Case 1
' Target.Value = "A" & Target.Value
' Case 2
' Target.Value = Target.Value & "-0001"
' End Select
Application.EnableEvents = True
End Sub
このままだと、A1をクリアしようと思っても、Aになってしまいますので、それが嫌な場合は、下記のように変更してください。(当然他のセルについても同様です)
If Target.Value <> "" Then Target.Value = "A" & Target.Value

参考URL:http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/v …
    • good
    • 1

入力したセルをそのようにしたいなら関数では無理です。


でもマクロでなら楽に自動化を実現できます。
以下の手順を試してみてください。
簡単ですよ。

1. 該当するシートのタブを右クリックして、[コードの表示]。
2. 出てきた所に、下記のコードを貼付けます。

'********これより下**********

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address(0, 0) <> "A1" And Target.Address(0, 0) <> "B1" Then Exit Sub
  If Target.Value = "" Then Exit Sub
  Application.EnableEvents = False
  Select Case Target.Address(0, 0)
  Case "A1"
  Target.Value = "A" & Target.Value
  Case "B1"
  Target.Value = Target.Value & "-001"
  End Select
  Application.EnableEvents = True
End Sub

'********これより上**********

3.Alt+F11キーでワークシートへもどります。

A1とB1にそれぞれ入力してみてください。
    • good
    • 0

こんばんは!


一発で解決!とはいかないと思いますが、
他の方が回答するためのたたき台として!

質問に
>特定のセルに入力した文字列に、自動的に指定した文字が・・・

とありますので、具体的にどのような形で入力した文字列に対して文字が指定されているのか判らないので、
勝手に↓のような感じで表を作ってみました。

F~H列の1行目に文頭につけたい文字列を入力し、その列の2行目以降に当てはまる文字列を羅列しておきます。
(表内には重複はないものとしています。)

C2セルに
=IF(COUNTIF($F$2:$H$100,A2),INDEX($F$1:$H$1,,SUMPRODUCT(($F$2:$H$100=A2)*COLUMN($A$1:$C$1)))&A2,"")
(とりあえず、F~H列の100行目までデータがあっても対応できるようにしてみました)

D2セルに
=IF(B2="","",B2&TEXT(COUNTA($B$2:B2),"-000"))
文末の(000)はB列に入力された個数を表示するようにしていますので、
もし、この文字列もB列に入力した文字列に関連があるのなら別の方法を考えなければなりません。

以上、質問からこちらで勝手に判断してやってみた方法ですので
的外れならごめんなさいね。m(__)m
「Excelで、特定のセルに入力した文字列」の回答画像3
    • good
    • 1

私がぱっと思いついた手立てですが


A1に123-4567を入力してB1にA123-4567を表示させるのであれば
B1セルに=if(A1="","","A"&A1)

B1にabcdefを入力してC1にabcdef-001を表示させるのであれば
C1セルに=if(B1="","",A1&"-001")
でどうでしょうか?
    • good
    • 3

無理。


そんな【関数】はありません。

そう言った機能はマクロで作成しましょう。
    • good
    • 0

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


おすすめ情報