- 締切済み
Excelで、特定のセルに入力した文字列に、自動的に指定した文字が追加
Excelで、特定のセルに入力した文字列に、自動的に指定した文字が追加されるようにする関数はありますか? 例えばA1に、123-4567と入力してエンターを押せば、自動的に文頭にAが付与されて、A123-4567となり、 B1に、abcdefと入力してエンターを押せば、自動的に末尾に-001が付与されて、abcdef-001となるようにしたいのです。 処理上必要なので毎回手入力しているのですが、付与すべき文字列が入力欄ごとに決まっているので、自動的に処理できたら楽なのにと常々考えています。 ものぐさで申し訳ありません。知ってらっしゃる方お願いします。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
- kawamamach
- ベストアンサー率0% (0/0)
マクロではないのですが。。。 質問者さんがどの程度の文字列を追加したいのかにも寄りますが、 ご質問にあった程度の字数でしたら「セルの書式設定->表示形式->ユーザ設定」で 「"A-"@」とか「@"-001"」にしてみてはどうでしょう? もちろんあくまで書式なので、並べ替えとかそういったものには対応していませんが。 お役に立てたら嬉しいです。
- mitarashi
- ベストアンサー率59% (574/965)
#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
- merlionXX
- ベストアンサー率48% (1930/4007)
入力したセルをそのようにしたいなら関数では無理です。 でもマクロでなら楽に自動化を実現できます。 以下の手順を試してみてください。 簡単ですよ。 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にそれぞれ入力してみてください。
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 一発で解決!とはいかないと思いますが、 他の方が回答するためのたたき台として! 質問に >特定のセルに入力した文字列に、自動的に指定した文字が・・・ とありますので、具体的にどのような形で入力した文字列に対して文字が指定されているのか判らないので、 勝手に↓のような感じで表を作ってみました。 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
- kuro96jp
- ベストアンサー率39% (93/238)
私がぱっと思いついた手立てですが A1に123-4567を入力してB1にA123-4567を表示させるのであれば B1セルに=if(A1="","","A"&A1) で B1にabcdefを入力してC1にabcdef-001を表示させるのであれば C1セルに=if(B1="","",A1&"-001") でどうでしょうか?
- Cupper
- ベストアンサー率32% (2123/6444)
無理。 そんな【関数】はありません。 そう言った機能はマクロで作成しましょう。