Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在公式中插入变量_Excel_Vba_Variables_Excel Formula - Fatal编程技术网

Excel 在公式中插入变量

Excel 在公式中插入变量,excel,vba,variables,excel-formula,Excel,Vba,Variables,Excel Formula,我试图在公式中插入一个变量,我将在表中插入该变量。该公式应该执行另一个表中的sum乘积。我通常只会调用表名,但问题是这将在不同的表上运行不同的时间,因此它实际上永远不会是相同的表名。 我用变量“PrevSh”替换了表名 下面的公式是我宏中的公式。这给了我很多问题。它给了我应用程序定义或对象定义的错误 ActiveCell.FormulaR1C1=“=IF(A7)”,SUMPRODUCT(“[”&PrevSh&“]!$D$4:$D$485=A7])*(“[”&PrevSh&“]!$E$4:$E$4

我试图在公式中插入一个变量,我将在表中插入该变量。该公式应该执行另一个表中的sum乘积。我通常只会调用表名,但问题是这将在不同的表上运行不同的时间,因此它实际上永远不会是相同的表名。 我用变量“PrevSh”替换了表名

下面的公式是我宏中的公式。这给了我很多问题。它给了我应用程序定义或对象定义的错误

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

Dim sh As工作表
将表名设置为字符串
将表格设置为ListObject
像字符串一样变暗
设置sh=ActiveSheet
TableName=ActiveSheet.Previous.Name&“\u Spider”
PrevSh=ActiveSheet.Previous.Name
Sheets.Add.Name=(TableName)
范围(“A3”)。选择
ActiveCell.FormulaR1C1=“材料”
范围(“B3”)。选择
ActiveCell.FormulaR1C1=“总计”
范围(“C3”)。选择
ActiveCell.FormulaR1C1=“液化天然气数量”
范围(“D3”)。选择
ActiveCell.FormulaR1C1=“材料说明”
范围(“E3”)。选择
ActiveCell.FormulaR1C1=“原材料长度”
范围(“F3”)。选择
ActiveCell.FormulaR1C1=“碎片”
范围(“A3:f4”)。选择
ActiveSheet.ListObjects.Add(xlSrcRange,Range($A$3:$F$4)),xlYes.Name=_
表名
范围(TableName&“[TOTAL]”。选择
ActiveCell.FormulaR1C1=“=IF(A7)”,SUMPRODUCT(“[”&PrevSh&“]!$D$4:$D$485=A7])*(“[”&PrevSh&“]!$E$4:$E$485]),”

您的公式有几处错误

  • 不匹配的括号[]
  • 双引号必须以双引号作为前缀
  • 公式R1C1需要R1C1格式
  • 图纸名称有额外的括号和'
  • 以下是您可以修复它的方法:

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

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

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

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

    =IF(A7“”,SUMPRODUCT((Sheet1!$D$4:$D$485=A7)*(Sheet1!$E$4:$E$485)),“”)
    
    在内部双引号上加上双引号。或者只使用chr(34)作为引号。。。。。
    ActiveCell.Formula = "=IF(A7<>" & Chr(34) & Chr(34) & ",SUMPRODUCT((" & PrevSh & "!$D$4:$D$485=A7)*(" & PrevSh & "!$E$4:$E$485))," & Chr(34) & Chr(34) & ")"
    
    =IF(A7<>"",SUMPRODUCT((Sheet1!$D$4:$D$485=A7)*(Sheet1!$E$4:$E$485)),"")