Excel 在VBA中翻译工作表公式
有人能帮我用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 &
=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