• 締切済み

VBAでVLOOKUPを使う際に、別のシートの範囲を参照する方法

はじめまして、saitou takayukiです。 vbaでデータの処理を行っているのですが、 その際、vlookup関数を使う際に問題がありました。 プログラミングの内容はsheet1で指定した範囲の10列目のデータを vlookup関数で参照し、sheet2のデータへ書き込むのですが、 vbaでvlookup関数がうまく動いてくれません。 ちなみにsheet1で指定した範囲はユーザーフォームを利用しています。 具体的な中身は Application.Worksheets(2).Cells(10,10) = Application.worksheetFunction.VLookup(id_number,hani_range ,10, 0) としていますが、エラーがでて動きません。 hani_rengeが参照範囲なのですが、これは ユーザーフォームで範囲指定することで得たテキスト形式のhani_textをRenge形のhani_range変数に変えたものです。 アドバイスお待ちしております。よろしくお願いします。

みんなの回答

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

問題のコードをコメント文にして、 MsgBox hani_range.Address でセル範囲が表示されるか確認されました?

関連するQ&A

  • VBA VLOOKUP 別のファイルを参照

    VBA VLOOKUP 別のファイルを参照 いつもこちらでお世話になっている者です。 VBAの勉強をしております。 別のファイルからVLOOKUPで値を参照したいのですが、 範囲を指定してみましたが、 「worksheetFunctionクラスのVlookupプロパティを参照できません」 とのメッセージが出てしまいます。 なお、値は空白になる行もありますので、 if関数で回避してみましたがうまくいきません。 いろいろ試しましたが、何度やってもうまくいかないので こちらに質問させていただきました。 お詳しい方、ご伝授いただければ助かります。 よろしくお願い致します。 環境はExcel2007です。 Sub sample() Dim 範囲 As Range Dim wb As Workbook, wb2 As Workbook Dim r As Integer,intRow As Integer Workbooks.Open Filename:="***.xlsm" Set wb = ThisWorkbook Set wb2 = ActiveWorkbook Set 範囲 = wb2.Sheets("PvtSht2").Range("Database3") r = wb.Sheets("sheet1").Range("A28:N28").End(xlToRight).ColumnintRow = 3 With wb.Sheets("sheet1") Do Until .Cells(intRow, 1).Value = "" .Cells(intRow, (r + 1)) = Application.WorksheetFunction.If((Application.WorksheetFunction.VLookup(Cells(intRow, 1), 範囲, 2, False)) = 0, "", Application.WorksheetFunction.VLookup(Cells(intRow, 1), 範囲, 2, False)) intRow = intRow + 1 Loop End With End sub

  • 【VBA】別シートからVLOOKUP

    ws1 は、アクティブシート ws2 は、参照先シート Hani = ws2.Range("A2:B" & LastRow) ws1 のA2セルをキーとし、ws1のB2セル以下へVLOOKUPを入力します。 参照先が、別シートのHaniの2列目の時、コードをお教え下さい。 結果が、数式が残るパターンと、値となる場合のそれぞれご教示頂けると幸いです。 宜しくお願いします。

  • 【VBA】SUMIFを別シートから参照する方法

    半端な知識で切り張りして書きましたが SUMIFのコードでコンパイルエラーとなります。 ご教示宜しくお願いします。 'ws1は、アクティブシート(=SUMIFを入力するシート) Set ws1 = Worksheets("アクティブシート") 'ws2は、参照するシート Set ws2 = Worksheets("参照するシート") 'Hani1は、ws2のA2セルから最終行迄 Set Hani1 = ws2.Range("A2:A" & LastRow) 'Hani2は、ws2のH2セルから最終行迄 Set Hani2 = ws2.Range("H2:H" & LastRow) 'n4はアクティブシートの2行目から最終行迄 For n4 = 2 To LastRow2 'アクティブシートのCn4セルから順に、An4セルに合致するものについて Hani1、Hani2を参照してSUIFする Range("C" & n4).Formula = _ "=SUMIF(Hani1,ws1.Range("A" & n4),Hani2)" Next n4

  • VLOOKUP関数:別シートにある参照範囲が変動する場合

    スポーツクラブで学童会員の名簿を作成しています。 【目的】 VLOOKUP関数を利用して、シート1「名簿」のA列に会員番号を 手入力すると B列に学年、C列に氏名が各々自動入力されるようにしたい。 【設定】 ・シート1を「名簿」とし、  A列を会員番号、B列を学年、C列とD列を結合して氏名としました。 ・シート2を「参照データ」とし、  A列を会員番号、B列を学年、C列とD列(結合を解除)を氏名と  しました。 ・シート2の1行目はタイトル行とし、データが入力されているのは  2行目からです。 ・別シートのデータを参照するため、シート2のデータが入力されて  いる範囲に「参照範囲1」という範囲名をつけました。 【状況】 現在設定している数式は B2=VLOOKUP(A2,参照範囲1,2,FALSE) なのですが、以下の場合は「参照範囲1」で設定した範囲とは 異なる範囲のデータを参照しなければなりません。 ・入会者がいる場合:データを追加するため、行が増える ・退会者がいる場合:データを削除しブランクを解消するため、  行が減る 【質問】 上記状況の場合、VLOOKUP関数に加えてどのような関数を使用すれば 別シートにある参照範囲の変動に対応できるのでしょうか? 会員が増減するたびに、新たに参照範囲を設定し範囲名をつけ直す という作業は避けたいのですが・・・ ご教示いただけますよう、何卒宜しくお願い申し上げます。

  • vlookupで参照するシート名と範囲を変えたい

    お世話になります。 vlookup関数について質問です。 新規作成する表の列B2からF2(1行目は項目行)に別のブック 「商品マスタ」からvlookupで必要なデータを検索して入力 B2からFのデータのある最終行までコピーするというマクロを作りました。 Range("B2").Select ActiveCell.FormulaR1C1 = _ "=VLOOKUP(RC1,[商品マスタ.xlsx]商品マスタ2017.10.5!R2C1:R430C6,COLUMN(RC),0)" Range("B2").Select Selection.AutoFill Destination:=Range("B2:F2"), Type:=xlFillDefault Range("B2:F2").Select Range("B2").Select Selection.AutoFill Destination:=Range("B2:F2"), Type:=xlFillDefault Range("B2:F2").Select Selection.AutoFill Destination:=Range("B2:F" & Cells(Rows.Count, "A").End(xlUp).Row) On Error Resume Next With Range("B:F").SpecialCells(xlCellTypeFormulas) .Value = .Value End With ★商品マスタの内容を更新時に新規シートを追加しているので 《商品マスタ2017.10.5!R2C1:R430C6》この部分のシート名と参照範囲を 毎回手動で書き直していますが、シート名と参照範囲を自動で切り替える 方法がありましたら教えてください。 シートは最新版のデータが入ったものを常に使用します。 よろしくお願いします。

  • VLOOKUPの範囲

    教えてください!!!! EXCEL関数のVLOOKUPの引数で、「範囲」を複数のシートから参照することは可能でしょうか?また可能であればその数式も教えてください。 よろしくお願い致します。

  • エクセルVLOOKUP関数の範囲指定で別ファイルを参照したい。

    エクセルVLOOKUP関数の範囲指定で別ファイルを参照したい。 初心者です。VLOOKUP関数の範囲を別のファイルから参照させたいのですが どうしたらいいのでしょうか?ちなみに別ファイルはマクロを含んでいます。 関数式を手入力するのではなくて、エクセルのダイアログボックスでマウスにて試しましたが 別ファイルの範囲をドラッグしても何にも反応しません。 fx関数ボタンを利用しての方法を教えていただけるとありがたいです。

  • 文字の色も参照 VLOOKUP

    VLOOKUPを使って、シート1に有るデータベースから 必要なデータを参照して、シート2に表示させています。この時シート1のデータの中には、いくつか 文字の色がついていて 目立つようにしているものがあります。これをVLOOKUPのように、同じくデータベースから参照して、抽出先データに反映させたいのですが、関数では出来ないようで、VBAでコントロールをする必要があるようで、調べたところ下記の様な、質問が過去にあり、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=968962 これを試してみましたが、あまり詳しく書かれていなく、私の解釈で作るとまったく動作しませんでした。 どなたか、わかる方もう少し補足情報をいただけませんか? よろしくおねがいします。

  • 別シートのリストを参照して印刷作業をVBA登録

    別シートのリストをVLOOKUPで参照して印刷する作業をVBA登録したいと考えています。 そこで下記のようなVBAを作成しました。 Sub 印刷() z = Application.InputBox("印刷開始番号") x = Application.InputBox("印刷終了番号") For o = z To x Range("G6").Value = o ActiveSheet.PrintOut Next End Sub セルG6をVLOOKUPで参照して、開始ページと終了ページをINPUTBOXで入力できるよに しています。 しかしエラーがでてしまいます。 どこが、問題ありますでしょうか? 宜しくお願いします。

  • Excel VBA で異なるシートの名前の範囲の参照方法について教えて

    Excel VBA で異なるシートの名前の範囲の参照方法について教えてください。 Sheet1には、入力規則で項目1と項目2をSheet2にある表からINDIRECT関数を使用して項目1のて、名前の範囲から、項目2が選択できるようになっています。 そのSheet2は非表示にしてあり、worksheets(2)など2枚目にあるとは限りません。シート名も決まったものではありません。その条件下で項目2がきちんと項目1の名前の中から選ばれているか確認したいのです。(項目2を選択してから、再度項目1を再度選択しなおすことが出来てしまうため。) 項目1と項目2の整合性を確かめるため、find関数を使用しようと考えていますが、これだとシート名を指定しなければなりません。名前の範囲からシート名を割り出す方法など何か良い手はないでしょうか。 それとセルに入力されたシート名を再表示するやり方が上手くいきません。どうしてなのでしょうか。↓ sub シート再表示() dim sagyo as integer '←シート名「632」などの数値な為 set WBK2=Activeworkbook sagyo=WBK2.worksheets(1).range("f5").value On error goto jamp3 worksheet("sagyo").visible=true  処理 sagyoが無かった場合、range("f6").valueの数値が入力されている(677など)を表示させたい jamp3: end sub jamp3: お手数ですがよろしくお願い致します。

専門家に質問してみよう