我在Excel中有以下公式,效果很好。然后将此公式拖到表格的底部。
=IF(OFFSET(OriginalData!$A$1,MATCH(TempTable!$A2,OriginalData!$A:$A,0)-1,2,1,1)=0,"",OFFSET(OriginalData!$A$1,MATCH(TempTable!$A2,OriginalData!$A:$A,0)-1,2,1,1))
我现在想将此添加到vba并尝试以下操作:
Private Sub MatchViaEmployeeName()
With Worksheets("TempTable")
Set Usdrws = .Cells(.Rows.Count, 1).End(xlUp)
.Range(.Cells(1, 1), Usdrws.Offset(, 1)).FormulaR1C1 = "=IF(OFFSET(OriginalData!R1C1,MATCH(TempTable!RC[-1],OriginalData!$A:$A,0)-1,2,1,1)=0,"""",OFFSET(OriginalData!R1C1,MATCH(TempTable!RC[-1],OriginalData!$A:$A,0)-1,2,1,1))"
End With
End Sub
我的逻辑是使用'Usdrws'变量选择整个范围,然后输入公式。
我目前正在接受
运行时错误1004
答案 0 :(得分:1)
你必须逃避公式中的语音标记,因为整个事情都在VBA中的语音标记中
.Range(.Cells(1, 1), Usdrws.Offset(, 1)).FormulaR1C1 = _
"=IF(OFFSET(OriginalData!$A$1,MATCH(TempTable!RC[-1],OriginalData!$A:$A,0)-1,2,1,1)=0,"""",OFFSET(OriginalData!$A$1,MATCH(TempTable!RC[-1],OriginalData!$A:$A,0)-1,2,1,1))"
答案 1 :(得分:1)
在公式中你需要改变:
""
更改为""""
$A$1
更改为R1C1
A:A
更改为C1