2016-10-03 548 views
0

我是VBA的新手,我试图将我写到VBA代码中的查找公式转换为循环遍历列中的每个单元格。 vlookup是一个if语句的一部分,可以自行工作。我面临的问题是我不知道如何告诉vlookup函数寻找数据的单元,以便它可以推广到整个循环。其计算公式如下Excel VBA:循环查找

= IF(K114 <> “”,K114,VLOOKUP($ A114,补偿$ A $ 1:$ d $ 136,2,FALSE))

下面是我对VBA

Sub Ranking() 

Dim cell As Range, rng As Range 
Set rng = Range("K2:K120") 

For Each cell In rng 
    If cell.Value <> "" Then 
     cell.Offset(0, 1).Value = cell.Value 
    Else: cell.Offset(0, 1).Value = WorksheetFunction.VLookup(HELP HERE,ThisWorkbook.Sheets(2).Range("A1:D136"), 2, 0) 
    End If 
Next 
End Sub 

我不知道要放什么东西,我把“在这里帮助”来告诉它指的是它看起来在同一行的A列中文字。我也不知道这正确的方式来回应这种情况?任何建议,非常感谢。非常感谢!

+0

您需要这个vba代码或可以工作表公式的工作? –

+0

不幸的是,它是一个更大的VBA代码的一部分,不能成为一个公式。我只是先写公式来指导我的思维过程。 – Ashley

回答

1

对于“帮助这里”,看看你的配方,你换了K114的A114。这意味着您需要从K列中的当前单元格返回到A列。可以使用当前单元格的偏移量向左移动10列以获得A列。

Sub Ranking() 

Dim cell As Range, rng As Range 
Set rng = Range("K2:K120") 

For Each cell In rng 
    If cell.Value <> "" Then 
     cell.Offset(0, 1).Value = cell.Value 
    Else 
     cell.Offset(0, 1).Value = WorksheetFunction.VLookup(cell.Offset(0, -10).Value, ThisWorkbook.Sheets(2).Range("A1:D136"), 2, 0) 
    End If 
Next 
End Sub 
+0

工作,非常感谢你Teylyn! – Ashley