我在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
在公式中你需要改变:
""
更改为""""
$A$1
改为R1C1
A:A
改为C1
你必须逃避公式中的语音标记,因为整个事情都在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))"