- ベストアンサー
ExcelのマクロによるVLOOKUPの参照シートの変更について
- Excelのマクロを使用して、VLOOKUPの参照シートを変更する方法について教えてください。
- ブックAのSheet1のセルA1にドロップダウンリストを作成し、選択した値に応じてVLOOKUPの参照シートを変更したいです。
- ドロップダウンリストで「J」を選択した場合は「国語」シートを、 「M」を選択した場合は「数学」シートを、 「A」を選択した場合は「美術」シートを参照するようにしたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
編集メニューの置換を使って数式文字列を直接置換する,といった操作を新しいマクロの記録でマクロに録ってchangeイベントマクロに仕込んでやるといった所でしょうか。 サンプル: Sheet1のシート名タブを右クリックしてコードの表示を選んだシートに Private Sub Worksheet_Change(ByVal Target As Range) Dim res As String If Target.Count > 1 Then Exit Sub If Application.Intersect(Target, Range("A1")) Is Nothing Then Exit Sub Select Case Target Case "J" res = "国語" Case "M" res = "数学" Case "A" res = "美術" Case Else End Select Worksheets("Sheet2").Range("B:B").Replace _ what:="]*'!", _ Replacement:="]" & res & "'!", _ lookat:=xlPart End Sub #エラー処理等は特に行っていません #その方が簡単だと思えば,選択のたびに「目的の式そのものをセルに記入させる」マクロにしてもいいです。 [別の手] ●「閉じたブック」に対する参照をINDIRECT関数で可変にとる事はできません ○目的のブックを「開いておけば」,シート名を可変にとってINDIRECT関数で参照シートを切り替えできます ○目的のブックの全データを開かれているブック(アドインや隠したブックでも可)に参照し,それを普通に検索したり,INDIRECT関数などを組み合わせて取ってこさせる手もあります
その他の回答 (1)
- toshi_2010
- ベストアンサー率43% (25/57)
マクロを使わない方法で ブックAのSheet2のセルB1に以下を入力 =if(Sheet1'!A1="J",VLOOKUP(A1,'¥¥s_g¥欠席¥[ブックB.xls]国語'!$B$4:$V$30,4,FALSE),if(Sheet1'!A1="M",VLOOKUP(A1,'¥¥s_g¥欠席¥[ブックB.xls]数学'!$B$4:$V$30,4,FALSE),if(Sheet1'!A1="A",VLOOKUP(A1,'¥¥s_g¥欠席¥[ブックB.xls]美術'!$B$4:$V$30,4,FALSE),"")))
お礼
あっなるほどっ!そうですよね、これならできますね★ 思いつきませんでした(笑) ご回答ありがとうございました!すっきりしました!
お礼
おお~!思っていた通りのものができました! すっきりしました! 下手な説明にもかかわらず、ご回答頂きましてありがとうございました★