您好我希望以下函数作为excel中的实际公式,而不是硬编码的数字。
有哪些提示可以使这个实际公式进入excel中的相应单元格?我希望它能够主动扫描我的书以检测何时删除了某些内容。
MarkConfirm = Application.WorksheetFunction.IfError(VLookup(MWS.Cells(LastMWSR + 1, 3), HBWS.Range("A:A"), 1, 0), "Not in Book")
MWS.Cells(LastMWSR + 1, 1).Value = MarkConfirm
答案 0 :(得分:2)
您需要将工作表名称添加到函数的TableArray
参数中,因为它正在查看不同的工作表。
MWS.Cells(LastMWSR + 1, 1).Formula = "=IFERROR(VLOOKUP(" & MWS.Cells(LastMWSR + 1, 3).Address & ", '" & HBWS.Name & "'!" & HBWS.Range("A:A").Address & ",1,0),""Not in Book"")"
这将给出类似于:
的公式=IFERROR(VLOOKUP($C$19, Sheet2!$A:$A,1,0),"Not in Book")
另请注意,当公式中使用字符串文字时,引号会加倍:""Not in Book""
编辑(接受后):
您也可以使用FormulaR1C1路线:
MWS.Cells(LastMWSR + 2, 1).FormulaR1C1 = "=IFERROR(VLOOKUP(R" & LastMWSR + 1 & "C3,'HBWS_Name'!C1,1,0),""Not In Book"")"
答案 1 :(得分:0)
这是如何将公式输入单元格的一般示例(您可以根据需要对范围进行修改)。
Thisworkbook.Sheets("Sheet1").Range("A1").Formula = "=VLoookup(A1,B:C,2,0)"
基本格式如下,并带有以下两个变量:" YourRange"和[公式]
YourRange.Formula =" = [公式]"
答案 2 :(得分:0)
应该是这样的 - 只需注意,您需要在$A:$A
前面添加工作表参考:
Sub Test()
MarkConfirm = "=IFERROR(VLOOKUP(" & MWS.Cells(LastMWSR + 1, 3) & ", $A:$A, 1, 0), ""Not in Book"")"
MWS.Cells(LastMWSR + 1, 1).Formula = MarkConfirm
End Sub
答案 3 :(得分:0)
尝试使用Range.Formula
属性而不是Range.Value
:https://msdn.microsoft.com/en-us/vba/excel-vba/articles/range-formula-property-excel
答案 4 :(得分:0)
试试这个。您需要使用相关的工作表名称替换HBWS。
MWS.Cells(LastMWSR + 1, 1).Formula = "=IfError(VLookup(C" & LastMWSR + 1 & ",HBWS!A:A, 1, 0), ""Not in Book""))"