IF语句包括VLOOKUP

寻找一种方法来做一个IF细胞说(这)然后VLOOKUP在这里,IF细胞说(thiselse),然后VLOOKUP不同的领域。

可能是一个超级明显的方式来做到这一点,迄今有这样的:

很简单,但不工作

Sub categoryVLOOKUP() 'IF col D says STAR then enter VLOOKUP formula into column K 'IF col D says SUN then enter other VLOOKUP formula into column K Dim lRow As Long, lCol As Long Dim lRow2 As Long Dim sht As Worksheet Set sht = ThisWorkbook.Worksheets("STARSUN") For lRow = 2 To LastRow If sht.Cells(lRow, 4) = "SUN" Then sht.Cells(lRow, 10).Formula = _ "=VLOOKUP(A3&G3,OF_MOON!A:D, 4,0)" Else End If If sht.Cells(lRow, 4) = "STAR" Then sht.Cells(lRow, 10).Formula = _ "=VLOOKUP(A3&G3,OFWORLD!A:D, 4,0)" Else End If Next lRow End Sub 

如果它正在争取多个单元格的斗争,我会推荐R1C1格式:

 Sub categoryVLOOKUP() 'IF col D says STAR then enter VLOOKUP formula into column K 'IF col D says SUN then enter other VLOOKUP formula into column K Dim lRow As Long, lCol As Long Dim lRow2 As Long Dim sht As Worksheet Dim LastRow as long LastRow = Cells(Rows.Count, "D").End(xlUp).Row Set sht = ThisWorkbook.Worksheets("STARSUN") For lRow = 2 To LastRow If sht.Cells(lRow, 4) = "SUN" Then sht.Cells(lRow, 10).FormulaR1C1 = _ "=VLOOKUP(R[1]C[-8]&R[1]C[-1],OF_MOON!RC:RC[3], 4,0)" ElseIf If sht.Cells(lRow, 4) = "STAR" Then sht.Cells(lRow, 10).FormulaR1C1 = _ "=VLOOKUP(R[1]C[-8]&R[1]C[-1],OFWORLD!RC:RC[3], 4,0)" End If Next lRow End Sub 

我认为这个思路应该让你开始。 请记住,R1C1必须参照公式将会进入的活动单元来完成。我可能需要检查引用新工作表的规则,但是这应该让你在正确的路线:)希望它可以帮助

编辑:另外,我相信你需要设置LastRow我已经添加到代码

 Dim LastRow as long 

 LastRow = Cells(Rows.Count, "D").End(xlUp).Row 

看起来你缺lessLastRow定义和值。

在模块的开始部分使用option explicit来强制执行variables声明。 或者只是工具 – >选项 – >检查需要variables声明。 这将自动完成。

另外我不明白为什么你甚至会用这个VBA。 你不能只用公式

=IF(cell="SUN",1st vlookup, if(cell="STAR", 2nd vlookup,NA())

另外我build议使用INDEX + MATCH而不是VLOOKUP。

而第三个“也”:你正在硬编码你将要查找的关键: A3&G3 。 因此,您最多可以从您的操作中获得3个值:OF_MOON表单中或OFWORLD表单或#N #N/A中与A3&G3相关的#N/A

另一种获得如下结果的方法

 Sub categoryVLOOKUP() Dim lRow As Long, lCol As Long Dim lRow2 As Long Dim sht As Worksheet LastRow = Range("D" & Rows.Count).End(xlUp).Row Set sht = ThisWorkbook.Worksheets("STARSUN") For lRow = 2 To LastRow If sht.Cells(lRow, 4) = "SUN" Then Range("K" & lRow).Value = Application.WorksheetFunction.VLookup(Range("A" & lRow) & Range("G" & lRow), Worksheets("OF_MOON").Range("A:D"), 4, 0) ElseIf sht.Cells(lRow, 4) = "STAR" Then Range("K" & lRow).Value = Application.WorksheetFunction.VLookup(Range("A" & lRow) & Range("G" & lRow), Worksheets("OF_MOON").Range("A:D"), 4, 0) End If Next lRow End Sub