スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
拍手する
↑ポチして頂けると、とても励みになります

マクロからVLOOKUPを使う

最近よく仕事でExcelのマクロを組むことが増えました。
個人的に仕事効率をUPさせるため、同じ操作を自動化するためのツールを作っています。
このブログにはその他の記事と違い、自分の覚え書き用として記録を残そうと思います。

基本的に自分で使って出会ったエラーやクセなどをメモりますが、
メモ対象の機能やエラーはそれが全てではなく、
また全ての環境での同一現象の保証はできません。
ExcelのVBAにはバグもあるようで、バージョン毎に挙動が怪しくて・・
あまりに怪しい物は正攻法を使わないこともあります。

関数の使い方などは自分が使った方法だけで、全ての引数の説明もしていません。
そして、何より、探せば他所で詳細に解説されているものが多いのと、
記事風にするつもりが無いので書き方はぞんざいになります。悪しからず(^^ゞ
この記録は、自分が必要な使い方をダイレクトに思い出せるためのものです。

勿論、もしお探しのものとぴったり一致するようなものがあれば、参考にしてくださいm(_ _)m




OS:Windows 7 x64 Ultimate Edition
環境:Microsoft Office 2003 SP3

<マクロからVLOOKUPを使う>
マクロからシート上の関数を使えることを使えることをこの間気づきました。

・Application.WorksheetFunctionオブジェクトを使う

tmpVar = Application.WorksheetFunction.VLookup(Arg1, Arg2, Arg3, Arg4)
もしくは
Application.WorksheetFunction.VLookup Arg1, Arg2, Arg3, Arg4

 Arg1=検索する文字列("aa" or aaなど変数)
 Arg2=検索する範囲(Range("$A$1:$C$300" or "定義した名前" or "A:C"))
 Arg3=検索する範囲の左端を1とし、何列目のセル値を読むか(1~など)
 Arg4=Arg1でヒットしない場合の最も近い値を示す行から取得する(True(1) or False(0))
  ただし、左端データが昇順に並べ替えられていないと正しく動かない┐(´ー`)┌

○頻繁に遭遇するエラー
Arg1と一致するデータが無い場合

Err.Number = 9
Err.Description = "インデックスが有効範囲にありません"

Err.Number = 1004
Err.Description = "WorksheetFunctionクラスのVLookupプロパティを取得できません。"

検索するArg1と、検索される値の型を合わせること。
ワークシートで11(書式:標準)のセルは"11"ではなく11で検索しないとヒットしない。

○使用例
On Error Goto ErrVL
Dim a as String
a = WorksheetFunction.VLookup("test", Range("$A$1:$E$100), 2, False)
MsgBox "testが見出しの行のB列の値は" & a & "です。"
Exit Sub

ErrVL:
Debug.Print "testというデータはA1:A100に見つかりませんでした。"
拍手する
↑ポチして頂けると、とても励みになります

コメントの投稿

非公開コメント

Blog Search Form
Access Counter
since 2009/03/22
thank you for coming to my blog...
World Community Grid
参加中。ランク1万台を脱するのはいつの日か・・
カテゴリ
最新記事
・・新着順に5件表示中・・
コメント
月別アーカイブ
RSSリンクの表示
リンク
  1. 無料アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。