[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『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)
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)
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.