[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『検索がうまくいきません』(book)
vlookup関数で下記のコード For Next と合わせて使用すると、エラーになってしまいます。どのようにコードを記述すればいいでしょうか?
For i = 1 To 100 For b = 1 To 15 Worksheets("sheet1").Cells(i, 37).Value = WorksheetFunction. _ VLookup(Cells(i, 36), Range(Cells(6, 181), Cells(105, 225)), _ 15 + b, False) Next b Next i
< 使用 Excel:unknown、使用 OS:unknown >
2重ループになっていますが、内側のループが意味がないような気がします。 b=15の結果が最後に上書きされておしまい?
(マナ) 2016/02/21(日) 12:45
・VLOOKUPで検索値が範囲内にない ・マクロ実行時のActivesheetが"sheet1"でない
(マナ) 2016/02/21(日) 12:52
マナさんから指摘がありますが、もしかしたら、セットする列、AK列だけではなく、AK列からAY列までにしたかったんでしょうかね? どんな検索・転記を行いたいのか、説明いただければ、この処理、ループなしで 2行で書くことができるかもしれません。
あと、Cells を使う場合、列番号が小さければなんとなくイメージはわくのですが、181 とか 225 となると これって、どの列? と、コードの可読性に、難ありかも。
Cells(6,"FY") といったように記述したほうが(若干効率は悪いですが)よろしいのでは?
ところで、【エラーになってしまいます】 実行時にエラーになるということでしょうね。 WorksheetFunctionクラスの関数を使うと、シート上で #VALUE! や #N/A といったケース、実行時エラーになります。 Applicationクラスの関数で記述すると結果がエラー値で返ってくるので、実行時エラーにはなりません。
(β) 2016/02/21(日) 13:04
For i = 1 To 100
Worksheets("sheet1").Cells(i, 37).Value = WorksheetFunction. _ VLookup(Cells(i, 36), Range(Cells(6, 181), Cells(105, 225)), _ 15, False) Next i
(book) 2016/02/21(日) 13:15
worksheetfunction.vlookupでなく application.vlookupとすれば、 エラーはで止まることはないでしょう
また、こんな感じで、実際に計算式をセルに代入したあと、 結果を値に変換する例も、よく見かけます。
Sub test()
With Worksheets("Sheet1").Range("AK1:AK100") .Formula = "=IFERROR(Vlookup(AJ1,$FY$6:$HQ$105,15,false),"""")" .Value = .Value End With
End Sub
>ループなしで 2行で書くことができるかもしれません。
というのは、おそらくこのことかと思います
※式に間違いがありましたので、修正しました
(マナ) 2016/02/21(日) 14:12
For i の上に On Error Resume Next
を付けるという方法もあります。 (se_9) 2016/02/21(日) 14:18
失礼します
>> For i の上に On Error Resume Next を付けるという方法もあります。
β個人としては、この方法は、あまりとりたくない方法です。
VLOOKUP での検索エラー以外に、もし、コードそのものに不備があった場合、エラーなく正常終了してしまい 結果がおかしい、なぜだろうと 回り道をしてしまう可能性もありますので。
なぜだろうと、わかればまだましで、わからないまま、正常に処理されたと、そう受け取ってしまうと、もっとやっかいですし。
あくまで個人的見解です。
(β) 2016/02/21(日) 17:14
βさんの見解は正しいと思います。余計な回答を書いてしまって申し訳ありません。 (se_9) 2016/02/22(月) 10:53
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.