[[20160221122029]] 『検索がうまくいきません』(book) ページの最後に飛ぶ

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

 

『検索がうまくいきません』(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


 すみません bは必要ありませんでした。
 セル行1から100までを下記のコードで検索できますでしょうか?  

    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.