- ベストアンサー
エクセルで連続文字を文字に変換したい。
エクセルで連続文字を文字に変換したい。 例:A1のセルに連続数字を打つと下のように変換できる関数を教えてください。 010→A先生 020→B先生 030→C先生・・・・・・ (全部で40人の先生を変換したいです)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
どこかに対照表を作っておいてVLOOKUP関数で引っ張ってくるのはいかがでしょう? たとえばH1~I40に対照表をつくったとしたら、B1セルに =VLOOKUP(A1,$H$1:$I$40,2,FALSE) とすれば、A1に入れた文字列に対応して先生が表示されます。 但し、A1とH1~H40は書式を文字列にしておかないと010等頭が0で始まる数字は入力できませんね。
その他の回答 (4)
- mshr1962
- ベストアンサー率39% (7417/18945)
セルの書式設定で可能なのは3人までですので40人は不可 IMEの単語登録やオートコレクトを使う方法もありますが、 設定したPCに依存したり、他に入力するときの妨げになるので不可 別セルで良いなら、他の方も言われてるVLOOKUP等の関数を使って別セルに表示というのが一般的です。 同セルだと、マクロのChange(変更時)イベントを使うしかないです。 一例 Private Sub Worksheet_Change(ByVal Target As Range) 'イベントの発生する範囲を設定 If Target.Row > 1 Then '2行目以降(1行目ははずす) If Target.Column = 1 Then 'A列限定 Select Case Target.Value Case "010" Target.Value = "A先生" Case "020" Target.Value = "B先生" End Select End If End If End Sub
- imogasi
- ベストアンサー率27% (4737/17069)
シートに作った対応表から検索すればよい。 ビジネス・仕事でエクセルを使うものの常識ですよ。 (1)VLOOKUP関数 (2)MATCH関数 (3)ユーザー関数 などあるが、(1)が常識的。 ーー 参考までに(3)を載せる。 例データ F1:G7 010 山田先生 020 木下先生 030 鈴木先生 040 北野先生 050 小島先生 060 野田先生 070 大村先生 ユーザー定義関数。標準モジュールに Function fnd(a) r = Range("F1:F10").Find(what:=a).Row fnd = Cells(r, "G") End Function A1:A3セルに A列 B列 020 木下先生 050 小島先生 070 大村先生 B1には =fnd(C15) と入れる。式を下方向に複写する。 結果 上記B列。
- mu2011
- ベストアンサー率38% (1910/4994)
NO1様の様に表検索(VLOOKUP関数)した方が良いと思います。 (1)検索表は別シート(仮にsheet2)のA列に番号(セルの書式設定で表示形式を文字列とする)、B列は番号に対応する名前を定義しておきます。 (2)抽出側シート(仮にsheet1)のA1(セルの書式設定で表示形式を文字列とする)、B1以下の数式を設定して下さい。 =IF(A1<>"",VLOOKUP(A1,Sheet2!A:B,2,FALSE),"") A1の検索値でsheet2のA:B列範囲のA列を検索し、見つかったらその隣(数式内の2がA列を1から数え2つ目のB列を指す)のセル内容を抽出します。 又、「IF(A1<>"",抽出,""」は、A1に入力されていれば抽出、なければ空白にします。 因みにIF関数は最大7つですからNO2様の方法は出来ません。
- esupuresso
- ベストアンサー率44% (257/579)
【B1】セルにIF関数を入力 =IF(A1=10,"A先生",IF(A1=20,"B先生",IF(A1=30,"C先生",IF(A1=40,"D先生",IF(A1=50,"E先生",IF(A1=60,"F先生",・・・・・と40人分のIF関数を入力 「010」は数値にすると「10」になり文字列にして「010」と変換するとエラーになります 【B1】の式を40人分オートフィルでコピーします 【A1】セルに「10」を入力すると「A先生」が自動入力されます 果たして40人分の関数が入力できるかどうか・・・?