- ベストアンサー
複数のシートから検索と検索範囲の変更
VLOOKUP関数を使ってやっと 検索できるようになりました。 しかし「あ行」「か行」・・・と参照データ そのものを整理できないものかとまた思案しています。 1、たとえばSheet3に「あ行」Sheet4に「か行」 のようにして シートをまたがって検索できないもの でしょうか? 2、検索元データを増やすたびに検索範囲を 変えてるのですがもっと融通が利く方法は あるのでしょうか? 3、VLOOKUP関数をマクロで実行させようと するとどういう風に記述すればいいの でしょうか? (マクロの記録からは出来ないですもんね) 以上3つですが回答できるものだけでも構いません よろしくお願いしますm(_ _)m
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Sheet1のG:H列が『あ』行の検索位置 Sheet2のG:H列が『か』行の検索位置 Sheet3のG:H列が『さ』行の検索位置 とします。 算式を簡単にするために、各シートの同じ位置に検索用のテーブルを作成します。 1・・・シートをまたがって検索できないものでしょうか? セルA1に検索したい文字を入力して、例えば、A2セルに =VLOOKUP(A1,INDIRECT("Sheet"&FIND(LEFT(A1,1),"あかさ")&"!G:H"),2,0) とすれば、3つのシートを検索するはずです。 2・・・融通が利く方法はあるのでしょうか? 上記のように、『G:H』を検索すればいいでしょう。 3・・・マクロで実行させようとするとどういう風に記述すればいいのでしょうか? ユーザ定義関数の例です。(Subの場合も同じようにすればいいでしょう。) =myVlookUp(A1) や =myVlookUp("あい") のようにして使います。 Function myVlookUp(strFind As String) myVlookUp = Application.VLookup(strFind, ActiveSheet.Range("G:H"), 2, 0) End Function
その他の回答 (2)
- mshr1962
- ベストアンサー率39% (7417/18945)
1.Sheet3の範囲を、「挿入」「名前」「定義」で「あ」という名前にします。 =VLOOKUP(A1,あ,2,FALSE) の様にして検索できます。 検索のキーの内容(数字、文字)で参照範囲を設定する式は変わります。 もう少し詳しい補足が必要です。 2.上記の範囲設定時、Sheet3!$A$1:$G$65536 の様にあらかじめ行を大きく取られては如何ですか?
- imogasi
- ベストアンサー率27% (4737/17070)
3番目の質問 下記例を参考に (テストデータ)A1:B3に a 10 b 20 c 30 そしてA11:A13に c a b と入れます。 (VBAコード) VBEの標準モジュールに Sub test01() For i = 11 To 13 Cells(i, "B") = WorksheetFunction.VLookup(Cells(i, 1), _ Range("a1:b3"), 2, False) Next i End Sub (結果)B11:B13に(A11:B13) c 30 a 10 b 20 WorksheetFunctionで使えるようです。 使えないエクセル関数もあるので実際やって見ました。 Vlookupは使えるようです。