VBA中的自动填充公式

问题描述 投票:0回答:2

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

excel vba excel-vba
2个回答
1
投票

在公式中你需要改变:

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

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))"
© www.soinside.com 2019 - 2024. All rights reserved.