【问题标题】:How to make an array formula with two variables如何制作具有两个变量的数组公式
【发布时间】:2020-02-24 11:02:00
【问题描述】:

我的数组公式有问题,它包含两个变量。我想制作一个 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))

【问题讨论】:

  • 一个问题可以通过多种方式解决。因此,发布您的示例数据解释问题,然后展示您的努力和期望的结果。这将帮助您获得最佳解决方案。看来你的问题可以通过=SUMIFS()解决。
  • 我编辑了我的帖子并发布了一个链接,指向带有我的数据的工作表样本。我试过 =sumifs() 但也没有工作。

标签: excel vba excel-formula


【解决方案1】:

英文版我很难测试,但可能存在翻译问题。 您可以尝试使用您的代码版本,首先用您的语言编写它,然后使用类似的代码:

.FormulaLocal = "my_formula"
.FormulaArray = .Formula

但是,我认为计算填充单元格的更简单公式如下:

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

这是一个非数组公式。

【讨论】:

    【解决方案2】:

    试试这样:

    ' 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))"
    

    【讨论】:

      【解决方案3】:

      感谢 Ron 的概念。我更改了功能,它对我有用: 最终公式:=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
      

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

      【讨论】:

        猜你喜欢
        • 2014-11-01
        • 2011-06-24
        • 2021-02-26
        • 1970-01-01
        • 1970-01-01
        • 2019-01-15
        • 1970-01-01
        • 1970-01-01
        • 2022-10-24
        相关资源
        最近更新 更多