如何用两个变量制作数组公式

时间:2019-10-29 08:15:40

标签: excel vba excel-formula

我的数组公式有一个问题,其中包含两个变量。我想制作一个ArrayFormula来计算在新工作表中生成的表中列中的填充单元格。该表的列数取决于nos值。 Cloumns的名称为“ Tabela_”&name&“ [Substancja1]等。我想对这些列中的所有填充单元格求和。我认为我必须修复某些语法,无论是公式还是代码。我在Range中创建了另一个数组公式(“ C5”)可以正常工作。我尝试在字符串和变量之间使用引号(“”),但无效。请帮助我。 此代码生成错误1004:无法在Range类中设置FormulaArray。 工作表例如: https://1drv.ms/x/s!AitFOK70PUC7wx_7vnh5EqkdJLfe

Sub newSheet()

    Dim name As String
    Dim nos As Integer
    Dim formRozp As String

name = InputBox("blabla:", "Add item")
nos = InputBox("blabla" & vbCrLf & vbCrLf & "Range: 1-10.", "Add item")

Range("C5").FormulaArray = "=SUM(IF(Tabela_" & nazwa & "[Data]="""",0,1))"

formRozp = "=SUM(IF(Tabela_" & name & "[Substancja1]="""";0;1))"

For nos = 2 To nos - 1
    formRozp = formRozp & "+SUM(IF(Tabela_" & name & "[Substancja" & 
    nos & "]="""";0;1))"
Next nos

Range("C3").FormulaArray = formRozp

该代码生成了name = b5和nos = 3的公式,但是它不起作用。

=SUM(IF(Tabela_b5[Substancja1]="";0;1))+SUM(IF(Tabela_b5[Substancja2]="";0;1))+SUM(IF(Tabela_b5[Substancja3]="";0;1))

3 个答案:

答案 0 :(得分:0)

我很难用英语进行测试,但是可能存在翻译问题。 您可能会尝试使用您的代码版本,首先使用您的语言编写代码,然后使用类似以下内容的方法:

.FormulaLocal = "my_formula"
.FormulaArray = .Formula

但是,我认为一个更简单的公式来计算填充的单元格是这样的:

=SUM(COUNTA(Tabela_b6[Substancja1],Tabela_b6[Substancja2],Tabela_b6[Substancja3]))

这是一个非数组公式。

答案 1 :(得分:0)

尝试这样:

' If column's name is  "Tabela_" & name & "[Substancja1]"
Range("C5").FormulaArray = "=SUM(IF([@[Tabela_" & name & "Substancja1]]="""",0,1))"

' If column's name is Data and table name is Tabela_" & name
Range("C5").FormulaArray = "=SUM(IF(Tabela_" & name & "[@[Data]]="""",0,1))"

答案 2 :(得分:0)

感谢罗恩的创意。我更改了功能,它对我有用: 最终公式:=SUM(CountA(Tabela_b11[Substancja1],Tabela_b11[Substancja2],Tabela_b11[Substancja3],Tabela_b11[Substancja4]))

代码:

formRozp = "=SUM(CountA(Tabela_" & nazwa & "[Substancja1]))"
For nos = 2 To nos - 1
    formRozp = Replace(formRozp, "))", ",Tabela_" & name & "[Substancja" & nos & "]))")
Next nos

Range("C3").formula = formRozp

我使用的是波兰语版本,所以可能是一个问题。但是现在可以了,所以我很高兴。非常感谢!