[[20050315201555]] 『VBAでvlookup関数をつかいたい』(なた) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『VBAでvlookup関数をつかいたい』(なた)

[VBAでvlookup関数をつかいたい]エクセルの学生(なた)

 いつも大変勉強になります!
 早速で失礼なのですが、VBAでVLOOKUP関数と同じことをしたいのです。
 同じブック内に表がある場合は問題ないのですが、別のブックにある表から
 データを参照できたらいいなーと思ってるのですが、できません><
 (見に行きたいブックは開いていない状態です。) 

 今は、
 range("A1").formula = "=vlookup(A1,'C:Document and Settings\NATA\..\sheet1'!A5:B100,2,0)"
 range("A1") = range("A1").value
 みたいな感じで関数はりつけてエクセルに計算してもらって、値貼り付けてごまかしてます^^;
 きっといい方法があるはずだと思います(;;)教えてください><


 セルに数式を入れたいのでしょうか?
 VBAで処理するならFindメソッド(検索)などがありますけど。

 >見に行きたいブックは開いていない状態です。) 
 対象にするブックは開く必要があります。
  (INA)
 

 ご回答感謝ですー
 マクロの本とかで、Worksheetfunction. を使って普段つかってる
 関数(SUMとか)も使える
 と、あったので、それを使ってVLOOKUP関数で他のブックの表を参照したいのです。
 VLOOKUP関数の場合は開いてないブックの表にも参照しにいけるので、
 VBAでも同じことがしたいなぁ。。っと思ってしまいました。(´・ω・`) 
 (なた)


すでに解決してたら余談程度に・・・

 例1
 Private Sub CommandButton1_Click()
 Range("E2").Formula = "=VLOOKUP(D2,B2:B8,1)"
 End Sub
 例2
 Private Sub CommandButton2_Click()
 Range("E2").Value = WorksheetFunction.VLookup(Range("D2"), Range(Range("B2"),  Range("B8")), 1)
 End Sub

上記二つの例では B2〜B8に検索のデータが入っている場合です
これに シートの指定やら加えてやるとできませんかねぇ?(試してません!!)

(Null)


  ご回答ありがとです;;
 例2と同じようにして、他のシートまでは参照できたのですが、
 他のブックになると、書き方がわからないのです。;;

 気持ちとしては、こんな感じでできたらなぁって。↓

 Range("E2").Value = WorksheetFunction.VLookup(検索対象,絶対パス.ブック名.シート名.Range("B2:B8),2,0)

 みたいな感じです。
 (なた)


 >絶対パス. 
  ↓
 > 対象にするブックは開く必要があります。

 です。

  (INA) 


 Private Sub CommandButton1_Click()
 Dim xlBook As Workbook
 Set xlBook = Workbooks.Open("book2.xls") '開きたいブック
 Range("A1").Value = xlBook.Sheets(1).Range("A1").Value
 xlBook.Close
 End Sub
http://www.h6.dion.ne.jp/~nisimoro/test.lzh
(BOOK1の方を開いてください)
 同じフォルダ内に二つブックを保存します
 片方のブックにコンボボタンを作って↑のソースを張ると
 もうかたほうを開いて中身をもってきてくれるはずです・・・
 さてこれからどうすればいいでしょうか・・・?

 (Null)


 横からすみません・・・・教えてください!!!
 ここを押してとありましてコンボボタン?って言うのですか???
 押しても実行時エラーが出ますが・・・?このコンボボタン?ってどうするのですか?
 イルカ君で調べても一致する項目はありません。ってなるものでして・・・
 (ぷ〜)


 >実行時エラーが出ますが・・・?
 マクロは有効になっていますか?
  (INA)


 はい。有効になっています。A1が表示されるのなら111と表示されるはずですが???
 シート名って表示されてます。
 過去ログで調べてコマンドボタンを作りました。これをクリックしたら
 他のBookを開くようにしたいのですが・・・何も変化がなくて・・・
 Set xlBook = Workbooks.Open("book2.xls") ←ここの部分にBook名を入れるだけでは
 駄目なのでしょうか?


 Open("C:\Test\book2.xls") 
 のようにパスを指定して下さい。

 省略すると、同じフォルダのブックを参照してしまいます。
  (INA) 


 すみません。今度は実行時エラーと言うのが出ます。
 アプリケーション定義もしくはオブジェクト定義のエラーと出ます。
 何が違うのでしょうか?

 Private Sub 休日表_Click()
 Dim xlBook As Workbook
 Set xlBook = Workbooks.Open("C:mydocuments\作業計画(実績)表\[休日割当表.xls]")
 Sheets(1).Range("A1").Value = xlBook.Sheets(原本).Range("A1:AG50").Value
 xlBook.Close
 End Sub
 

 [ ] が余分です。 (INA)


 [ ] を除いても駄目なんです。  


 >Sheets(原本).
          ↑
       これはシート名ですか?

 だとしたら Sheets("原本") にしないと変数になってしまいますけど。
  (INA)


 う〜ん・・・
 Private Sub 休日割当表_Click()
 Dim xlBook As Workbook
 Set xlBook = Workbooks.Open("C:mydocuments\作業計画(実績)表\休日割当表.xls")
 Sheets(1).Range("A1").Value = xlBook.Sheets("原本").Range("A1:AG50").Value
 xlBook.Close
 End Sub

 にしましたが、同じです・・・・・


 ファイルのパスが間違えています。
 エクスプローラーに表示されているように記述して下さい。 
  (INA) 


 マクロってOpenDialogみたいなのって出せますか?
 出せるならそれを使うとそのたびに任意のファイルを指定できると思うのですが・・・

 Application.Dialogs(xlDialogOpen).Show

 ↑見つけてはみたもののうまく使えませんでしたorz
 訳に立つかは分かりませんがいかがでしょうか?

 (Null)


 出来ましたが・・・ファイルが開いて値を持ってきてはくれません???
 次から次へとすみません。
 
 Set xlBook = Workbooks.Open("C:\Documents and Settings\Owner\My Documents\mydocuments\作業計画(実績)表\休日割当表.xls")
 Sheets(1).Range("A1:AG50").Value = xlBook.Sheets("原本").Range("A1:AG50").Value
 xlBook.Close
 End Sub


 > マクロってOpenDialogみたいなのって出せますか?
 GetopenFilename メソッドがあります。
 
 >ファイルが開いて値を持ってきてはくれません???
  sheet 原本 の セル A1:AG50 の値が無いだけでは?
 マクロの記録を試してみては如何でしょうか?

 なんか本題からはずれてきているような気が・・・ 

 >  Range("E2").Value = WorksheetFunction.VLookup(検索対象,絶対パス.ブック名.シート名.Range("B2:B8),2,0)
 >  みたいな感じです。

 Set xlBook = Workbooks.Open("C:\Documents and Settings\Owner\My Documents\mydocuments\作業計画(実績)表\休日割当表.xls")

 ThisWorkbook.Worksheets("Sheet1").Range("E2").Value = _
 WorksheetFunction.VLookup(xlBook.Worksheets("原本").Range("B2:B8),2,0)

 xlBook.Close  

  (INA)


 >ファイルのパスが間違えています。
 >エクスプローラーに表示されているように記述して下さい。

 できたぁ
 Dim TargetFile as String 
 TargetFile = Application.GetOpenFilename
 Set xlBook = Workbooks.Open(TargetFile)

 ↑のようなやりかたはどうかなぁ と思ってみました。

 脱線気味の(Null)


 INAさん有難うございました。
 Private Sub 休日割当表_Click()
 Dim xlBook As Workbook

 Set xlBook = Workbooks.Open("C:\Documents and Settings\Owner\My  Documents\mydocuments\作業計画(実績)表\休日割当表.xls")
ThisWorkbook.Worksheets("休日表").Range("B2:AG50").Value = xlBook.Worksheets("原本").Range("B2:AG50").Value
 xlBook.Close
 End Sub

 ↑で出来ました。

 NUllさん。有難うございました。
 すごいです!!
 横から入ったのに長々と有難うございました。


 本題のなたです。なんだか解けたようでなによりなにより。
 私のは結局セルに"=Vlookup(" & 日付 &",'C:\Documents and Settings\..." & 社員CODE & "'!A2:A397,2,0)"
 ていれました。

 んで、セルの計算結果を同セルに値コピーでおしまいにしました。
 もっといい方法勉強しなくては。。アドヴァイスありがとーございました!
 (なた)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.