Sub checkMe()
Dim lastRow As Long
Dim cell As Range
lastRow = Range("A" & Rows.Count).End(xlUp).Row
For Each cell In Range("B1:B" & lastRow) 'dynamically go through each row in the range
For a_counter = 2001 To 2015 ' for each row, cycle through each year until 2015
j = a_counter
b = cell.offset(0, 6).Value 'value for vlookup
a = Application.VLookup(b, Sheet2.Range("A2:N42"), (j - 2000 + 2), False) ' look up each value in offset(0,6) in another sheet
If cell.Value = "DUB" And cell.offset(0, 1).Value <= "2001" And cell.offset(0, 2).Value = "OSLR" Then cell.offset(0, j + 12 - 2000).Value = cell.offset(0, 7).Value * a 'only apply when the conditions are met
Next a_counter
Next
End Sub
顺序应该改变一点,所以条件在内循环之前有助于提高速度,但我认为这应该有效。 cell.offset(0,6)的值是我需要为vlookup查找每一行的值。如果我输入的值是&#39; b&#39;但是,我需要值来查找每行的变化。目前它只适用于第1行并停止。现在我得到一个不匹配的错误。
答案 0 :(得分:1)
让我们做一些数学。
For a_counter = 2001 To 2015
a_counter 将按15个值排序;例如2001年•2015年包容性。
Sheet2.Range("A2:N42")
共14列;例如A栏►列N包含。
j = a_counter
..., (j - 2000 + 2), ...
您要求从3个月的17个不同列返回。
然而A:N有14列,所以当 a_counter = 2013时你会出错(类型不匹配),因为没有15 th 列。