Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/28.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 在VBA中翻译工作表公式_Excel_Vba - Fatal编程技术网

Excel 在VBA中翻译工作表公式

Excel 在VBA中翻译工作表公式,excel,vba,Excel,Vba,有人能帮我用excel VBA写下这个公式吗 =IF(ISERROR(VLOOKUP(A3,Temp!$A$3:$A$595,1,FALSE)),A3,"0") 我的代码遇到了“语法错误” .Formula行的第二行出现连接问题 模拟问题顶部的公式(这是错误的,因为你应该指向B$3:$B$595或类似的内容,因为你的查找单元格A3不应该在VLOOKUP范围内) 尝试此新的。公式行:- .Formula = "=IF(ISERROR(VLOOKUP(A" & top &

有人能帮我用excel VBA写下这个公式吗

=IF(ISERROR(VLOOKUP(A3,Temp!$A$3:$A$595,1,FALSE)),A3,"0")
我的代码遇到了“语法错误”


.Formula
行的第二行出现连接问题

模拟问题顶部的公式(这是错误的,因为你应该指向
B$3:$B$595
或类似的内容,因为你的查找单元格
A3
不应该在
VLOOKUP
范围内)

尝试此新的
。公式
行:-

    .Formula = "=IF(ISERROR(VLOOKUP(A" & top & ",Temp!$B$" & top & ":$B$" & bottom & _
               ",1,FALSE)),A" & top & ", " & "0)"

是否确实要使用
top
作为列A中的起始行和从临时工作表中获取底部行的列?临时工作表上的重要一栏是B栏(即2),而不是C栏(即3)

如果您正在将配方奶粉扔进垃圾桶!A595那个参考垃圾!A3:A595那么这些是循环参考,在正常条件下无法解析。我将把公式放在Z列

如果您使用的是Excel 2007或更高版本,那么我将谦恭地提出此替代方案,它使用工作表的,并且不尝试使用0返回值生成文本

Const top As Integer = 3
Dim bottom As Long
bottom = Sheets("Temp").Cells(Rows.Count, "B").End(xlUp).Row  '<~~change here
With ThisWorkbook.Sheets("trash")
    With .Range("Z" & top, .Cells(Rows.Count, "A").End(xlUp).Offset(0, 25))
        .Formula = "=IFERROR(VLOOKUP(A" & top & ", Temp!$B$" & top & ":$B$" & bottom & _
               ", 1, FALSE), 0)"  '<~~ big change here
        .Value = .Value
   End With
End With
Const top作为整数=3
暗底一样长

底部=板材(“温度”)。单元格(行数,“B”)。结束(xlUp)。行“底部设置为什么,为什么?”?这是一个非常令人困惑的计算。啊!顶部/底部用于自动识别临时工作表中的查找范围,如果(iSeries错误(VLOOKUP(A3,Temp!$A$3:$A$595,1,FALSE)),A3,“0”)用于在excel公式上进行测试的硬代码,只要删除并更正行,就可以了!谢谢,我只是检查了一下,我看到了不必要的引用,以获取工作表(“temp”)中的总行数,而循环仅在工作表(“trash”)中运行。感谢
Const top As Integer = 3
Dim bottom As Long
bottom = Sheets("Temp").Cells(Rows.Count, "B").End(xlUp).Row  '<~~change here
With ThisWorkbook.Sheets("trash")
    With .Range("Z" & top, .Cells(Rows.Count, "A").End(xlUp).Offset(0, 25))
        .Formula = "=IFERROR(VLOOKUP(A" & top & ", Temp!$B$" & top & ":$B$" & bottom & _
               ", 1, FALSE), 0)"  '<~~ big change here
        .Value = .Value
   End With
End With