Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 应用:将vlookup公式设置为需要获取值的单元格时出现1004错误_Excel_Vba_Excel Formula - Fatal编程技术网

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,)
您可以通过手动将公式复制到所需的单元格中,轻松地对其进行测试。