- ベストアンサー
マクロでvlookupの使用方法について
- マクロでvlookupを使用したいのですが、動かした結果が#N/Aになります。
- マクロを使用して担当シートをもとに訪問予定シートの担当列を埋めたいです。
- マクロの中でループを使って一か所ではなくひと月の担当予定を埋める方法を考えています。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
Cells(3, 2).Value = Application.VLookup(Cells(1, 2).Value2, Worksheets("担当").Range("A1:C5"), 2, False) Value→Value2 最後に Falseを追加 にしてください。
その他の回答 (2)
- kkkkkm
- ベストアンサー率66% (1719/2589)
> でもどうゆう仕組みでエラーになっているのか いまだに不明です。 ご覧になっているページに書かれていますが、日付は内部ではシリアル値という数値で処理されます。現在の日付が表示されているセルの書式を数値に変更してみるとシリアル値が表示されます。 Valueの場合は、検索値が日付の状態で、担当シートのシリアル値(表示は日付ですが実際は数値)と比較して検索しますので、一致しない結果になります。 Value2だと検索値がシリアル値として返されますので、担当シートのシリアル値に一致することになります。 > =vlookup(2016/5/1,担当!A1:C5,2,FALSE) =VLOOKUP(DATE(2015,5,1),担当!A1:C5,2,FALSE) としないとだめですね。 日付を扱うのは意外と面倒だったりします。
お礼
たびたび 回答ありがとうございます。 実際に目に見えているものと、セルの内部に格納されているものが 違う場合は気をつけます。 日付はシリアル値で扱うことを意識します。
- imogasi
- ベストアンサー率27% (4737/17069)
添付画像が(ぼやけて)よく見えないので、データを使って実行できないので、正確に答えられないが(質問者がこの質問を開いて、画像を鮮明に見る方法はあるのだろうか。あれば、是非教えてほしい。こういう質問が多いので。) Sheet2のA1:C3に (検索表) aa 2 s bb 6 d cc 4 f と入れて Sheet1のB1に 「cc」と入れて下記を実行すると Sub macro1() Worksheets("Sheet1").Select Cells(3, 2).Value = Application.VLookup(Worksheets("Sheet1").Cells(1, 2).Value, Worksheets("Sheet2").Range("A1:C5"), 2, False) End Sub B3セルは 4 になった。 だからB1に入れるデータと、Sheet2の検索表の第1列のデータ群に同じものがあるという点で、思い違いがあるのでは。 全角と半角、気づかないスペースが入っているとか調べてはどうでしょう。 ・第1引数のWorksheets("Sheet1").を添えるほうがよい ・多分第4引数はTRUE型だと思うが明記する は気になった。 ーー 参考 WEB記事 http://www.becoolusers.com/excel/iferror-vlookup.html VLOOKUP関数では ●[検索値]となるセルに何も入力されていない -->これは本質問ではないだろう ●[検索値]となるセルに入力したものが、[範囲]に指定した一覧表にない という2つの要因で#N/Aエラーが出てしまいます。
お礼
回答ありがとうございます。 画像はアップロードする前は(こちらのパソコンでは)鮮明に見えたのですが、アップすると圧縮されるのか文字がつぶれて状態になるようです。 うまくいかなかった原因は 検索地に 日付をもちいていたからでした。 .valueでセルの値を取得できるのですが、 2016/01/01のような 値が入っていると上手くいかないようです。 そこで kkkkkm様が提示してくれた value2 を用いたところ 希望する動作となりました。
お礼
うぉお! と思わず声上げてしまいました。 動きました。 value2ってやつですね。 https://www.moug.net/tech/exvba/0050148.html を参考に読んでいるところです。 でもどうゆう仕組みでエラーになっているのか いまだに不明です。 内部処理として 検索値 に / を用いた数字になってたからエラーなんですかね。? セルに =vlookup(2016/5/1,担当!A1:C5,2,FALSE) としたら N/A のエラーがでました。 ほんと ありがとうございました。