VBA中的自动填充公式

时间:2017-12-20 15:18:53

标签: excel vba excel-vba

我在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

2 个答案:

答案 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)

在公式中你需要改变:

  1. 在公式
  2. 中将""更改为""""
  3. $A$1更改为R1C1
  4. A:A更改为C1