将变量插入到公式中

时间:2013-11-01 18:58:33

标签: excel vba variables excel-formula

我正在尝试将变量插入到将要插入表中的公式中。该公式应该从另一个表执行sumproduct。我通常会调用表名,但问题是这将在不同的表上运行不同的时间,因此它实际上永远不会是相同的表名。 我用变量“PrevSh”

替换了表名

下面这个公式在我的宏中是什么。它给了我一些问题。它给了我应用程序定义或对象定义的错误。

ActiveCell.FormulaR1C1 =“= IF(A7<>”,SUMPRODUCT(('[“& PrevSh&”]!$ D $ 4:$ D $ 485 = A7])*('[“& PrevSh&“]!$ E $ 4:$ E $ 485])),”“)”

Dim sh As Worksheet
Dim TableName As String
Dim theTable As ListObject
Dim PrevSh As String

  Set sh = ActiveSheet
  TableName = ActiveSheet.Previous.Name & "_Spider"
  PrevSh = ActiveSheet.Previous.Name
  Sheets.Add.Name = (TableName)

Range("A3").Select
ActiveCell.FormulaR1C1 = "MATERIAL"
Range("B3").Select
ActiveCell.FormulaR1C1 = "TOTAL"
Range("C3").Select
ActiveCell.FormulaR1C1 = "QTY OF LNG"
Range("D3").Select
ActiveCell.FormulaR1C1 = "MATERIAL DESCRIPTION"
Range("E3").Select
ActiveCell.FormulaR1C1 = "RAWMATERIAL LENGTH"
Range("F3").Select
ActiveCell.FormulaR1C1 = "PIECES"
Range("A3:f4").Select
ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$3:$F$4"), , xlYes).Name = _
   TableName
Range(TableName & "[TOTAL]").Select
ActiveCell.FormulaR1C1 = "=IF(A7<>"",SUMPRODUCT(('[" & PrevSh & "] !$D$4:$D$485=A7])*('[" & PrevSh & "] !$E$4:$E$485])),"")"

1 个答案:

答案 0 :(得分:2)

你的配方有几个问题。

  1. 无与伦比的括号[]
  2. 双引号需要以双引号为前缀
  3. FormulaR1C1需要R1C1格式
  4. 工作表名称包含额外的括号和“
  5. 以下是解决问题的方法:

    ActiveCell.Formula = "=IF(A7<>"""",SUMPRODUCT((" & PrevSh & "!$D$4:$D$485=A7)*(" & PrevSh & "!$E$4:$E$485)),"""")"
    

    如果您对如何使用Chr(34)ascii值作为@Sorceri的建议感兴趣,请尝试以下方法:

    ActiveCell.Formula = "=IF(A7<>" & Chr(34) & Chr(34) & ",SUMPRODUCT((" & PrevSh & "!$D$4:$D$485=A7)*(" & PrevSh & "!$E$4:$E$485))," & Chr(34) & Chr(34) & ")"
    

    无论哪种方式,您的单元格中的结果都是这样(替换您的工作表名称,我使用sheet1进行测试):

    =IF(A7<>"",SUMPRODUCT((Sheet1!$D$4:$D$485=A7)*(Sheet1!$E$4:$E$485)),"")