回答受付が終了しました

vbaでループになってしまいます。

Visual Basic88閲覧

回答(3件)

0

こんにちは。 >VLOOKUP自体は正常に機能するのですが コードをみて、そんなはずはないようです。 vlookup関数は、最初の引数が、テーブルのどこにあるのか、検索するので、「単一セル」とか、単一の数値などです。 コードでは、C列に、A列を見ながら、ということですが、 C2セル = vlookup(A2 , 検索テーブル,2,false) ということですよね。 ひとつ計算するなら、秒もかかりません。 関数設定するなら、 Range("C2:C" & 最終行).FormulaR1C1 = "=vlookup(RC[-2] , [PPR]!$A$1:$B$7 , 2, False)" というような関数を設定して、値でコピーペーストをするなどです。 マクロの場合、 Range("C" & i).value = worksheetfunction.vlookup(Range("A" & i),sheets("PPR").range("A1:B7"),2,false) これを、ループさせることになります。 永久ループなのは、使っている式が正しくないのが原因。

0

お示しのコードだとA列が空欄になる迄、1回1回A1~A列最終行迄の値を検索し、結果をC列最終行迄書き込んでますよね? A列のデータ量が多ければそれなりの時間がかかっているだけの様な気がします。そもそも繰り返しは必要ないです。 Vlookupを2行目からにしたければSTARTROWを2にして下さい。 Sub test() Dim LastRow As Long Const STARTROW = 1 LastRow = Cells(Rows.Count, "A").End(xlUp).Row Range("C" & STARTROW & ":C" & LastRow) = _ WorksheetFunction.VLookup(Range("A" & STARTROW & ":A" & LastRow), _ Worksheets("PPR").Range("A1:B7"), 2, False) End Sub

この返信は削除されました