Excel 应用:将vlookup公式设置为需要获取值的单元格时出现1004错误
我在Excel 应用:将vlookup公式设置为需要获取值的单元格时出现1004错误,excel,vba,excel-formula,Excel,Vba,Excel Formula,我在.Cells(I,202)处得到1004个错误。Value=f 出错时f的值为: =IF(ISNA(VLOOKUP($BA$2, [Input2.xlsx]Sheet2!$A$2:$E$35, 3,),VLOOKUP( $BD$2, [Input2.xlsx]Sheet2!$B$2:$E$35, 2,),VLOOKUP( $BA$2, [Input2.xlsx]Sheet2!$A$2:$E$35, 3,))) 我的要求是: 有3列的值为#n/a,我想用vlookup填充所有3列的值。 我尝
.Cells(I,202)处得到1004个错误。Value=f
出错时f的值为:
=IF(ISNA(VLOOKUP($BA$2, [Input2.xlsx]Sheet2!$A$2:$E$35, 3,),VLOOKUP( $BD$2, [Input2.xlsx]Sheet2!$B$2:$E$35, 2,),VLOOKUP( $BA$2, [Input2.xlsx]Sheet2!$A$2:$E$35, 3,)))
我的要求是:
有3列的值为#n/a,我想用vlookup填充所有3列的值。
我尝试使用if条件检查列#n/a并仅填充这些列,但这也不起作用
有谁能帮我弄清楚如何写我的专栏(GT、GU、GV)的if条件,以检查是否有n/a并写到我的单元格(我的专栏号是202)
我试图为vlookup编写如下代码:
Sub Macro()
Dim i As Long
Dim x As Range
Dim x1 As Range
Dim b As Range
Dim wb1 As Workbook
Dim ws1 As Worksheet
Dim y As Range
Dim wb2 As Workbook
Dim LastRow As Long
Dim y2 As Long
Dim lookupAdr As String, lookupAdr1 As String, f As String
Dim Test As Variant
Set wb1 = Workbooks.Open("C:\Users\padmini.chandrasheka\Desktop\SalesPipeline_Mapping\Input2.xlsx")
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
Set x = wb1.Worksheets("Sheet2").Range("A2:E" & LastRow)
Set x1 = wb1.Worksheets("Sheet2").Range("B2:E" & LastRow)
Set wb2=Workbooks.Open("C:\Users\padmini.chandrasheka\Desktop\19_Dec_2019.xlsx")
Set y = wb2.Worksheets("Open").Range("A2:GT" & LastRow)
Set ws1 = wb2.Worksheets("Open")
'Test = wb2.Worksheets("Open").Range("GT2:GT" & LastRow).Value
With ws1
'If IsNull(Test) = True Then
For i = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
lookupAdr = "[" & wb1.Name & "]" & "Sheet2!" & x.Address
lookupAdr1 = "[" & wb1.Name & "]" & "Sheet2!" & x1.Address
Set x1 = wb2.Worksheets("Open").Range("GT2:GT" & LastRow)
f = "=IF(ISNA(VLOOKUP(" & .Cells(i, 52).Address & ", " _
& lookupAdr & ", 3,),VLOOKUP( " _
& .Cells(i, 54).Address & ", " & lookupAdr1 & ", 2,),VLOOKUP( " _
& .Cells(i, 52).Address & ", " & lookupAdr & ", 3,)))"
'MsgBox f
Next i
.Cells(i, 202).Value = f
'End If
End With
End Sub
如果要将公式写入单元格,请使用
.formula
而不是.Value
。出错时变量f
中的值是多少?使用Debug.Print f并在问题中包括即时窗口中打印的内容。还要注意的是.Cells(i,202).Value=f
在下一个i
之后,因此它只对最后一个i
执行,而不是对每个i
执行。请确保它在下一个i
之前。您好,下面是您的响应。是的,我使用了.formula,但仍然得到应用程序或对象定义的错误@.Cells(i,202)。formula=f我想将公式写入202号单元格,因此我将其指定为202。另外,你能让我知道如何在我的案例中写一个if条件来检查3列是否为#n/a吗?请再次阅读我的评论并提供我要求的信息。我也给了你一些关于如何获取所需信息的提示。没有询问的信息,几乎不可能帮助你。此外,我们无法为您编写代码,我们只能帮助您自己解决问题。是的,对不起,我忘记在查询中提及,请在出错时查找f的值。括号在您的公式中设置错误。ISNA
括号应该在第一张VLOOKUP
之后关闭,而不是在最后:=IF(ISNA(VLOOKUP($BA$2,[Input2.xlsx]Sheet2!$A$2:$E$35,3,)),VLOOKUP($BD$2,[Input2.xlsx]Sheet2!$E$35,2,),VLOOKUP($BA$2,[Input2.xlsx]Sheet2!$A$2:$E$35,3,)
您可以通过手动将公式复制到所需的单元格中,轻松地对其进行测试。