- ベストアンサー
エクセルでマクロ
エクセルで、数字を入力すると特定の人の名前がでる(例えば、 「1」を入力すると「鈴木」、「2」と入力すると「田中」・・)マクロって、どうすればいいのでしょうか?ほとんど初心者です。 アドバイスよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
なぜマクロでないといけないのですか。VBAの勉強ですか。 ぴったりの関数VLOOKUP関数があります。鈴木は別セルに出すことになりますが。 1を入力するセルと鈴木を出すセルは同じですか。 (1)VBAといっても「・・入力すると」「・・となる」仕組みは初心者の課題ではありません。イベントという仕組みの力を借りないとダメなんですが。 (2)1が何という名かの、対応表を作って、その対応表を検索しないとなりませんが、 検索は 総当り法 VLOOKUP利用法(上記の関数のものとは違うVBAでの関数)・Match法 Find法 など考えますが、果たして判るかな。すぐは荷が重いのでは。 イベントについて 「VBA イベント」でWEB照会のこと >http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_event.html など読んで自分と相談して VLOOKUP関数について http://support.microsoft.com/kb/402367/ja 「VBA VLOOKUP」でWEB照会のこと
その他の回答 (2)
- diashun
- ベストアンサー率38% (94/244)
diashun です。 #1の方の「VLOOKUP」を利用するのが簡単ですが、 その場合、入力したセルとは別のセルに関数を記述 しなければなりません。 直接、入力セルに番号を入力して、そのセル自体に 対応する名前を表示させるにはやはりマクロになるのでしょうか。 ご参考までに下記マクロを作成しました。 VBE(Visual Basic Editor)で「ThisWorkbook」の 「SheetChange」プロシージャにコピーして お試し下さい。 条件1.番号を入力するセル範囲 → A1~A20 に設定 条件2.変換する番号(A列)とそれに対応する名前(B列)を「Sheet2」に記述 行番号 A列 B列 1 1 佐藤 2 2 鈴木 ・ ・ ・ ・ ・ ・ 'Start********************************************************************** Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) Dim vVal, rNumArea As Range, rNameArea As Range Dim i As Integer, rTarget As Range, rTargetArea As Range Dim iCellCnt As Integer '(1)選択セルが複数のときは無視 If Target.Count > 1 Then Exit Sub End If '選択セルに値が無いときは無視 If Target.Value = "" Then Exit Sub End If '(2)変換対象のセル範囲を設定する Set rTargetArea = Sh.Range("A1:A20") For Each rTarget In rTargetArea If Target = rTarget Then iCellCnt = iCellCnt + 1 End If Next If iCellCnt < 1 Then Exit Sub End If '(3)入力した番号に対応する番号範囲 Set rNumArea = Worksheets("Sheet2").Range("A2:A12") '(4)入力した番号に対応する名前範囲 Set rNameArea = Worksheets("Sheet2").Range("B2:B12") '(5)入力した番号に対応する名前に変換 For i = 1 To rNumArea.Count If Target.Value = rNumArea(i).Value Then Target.Value = rNameArea(i).Value End If Next i End Sub 'End**********************************************************************
- muu_0216
- ベストアンサー率0% (0/1)
こんばんは。 関数の「vlookup」を使うとおっしゃっていることができるのですが、マクロでないとだめですか? もし関数でよければ、詳しく説明させていただきます。