输入:我在Excel工作表中有一个范围。比方说“Sheet 1”上的B1:F100 = 100X5矩阵。如何在VBA中检查矩阵中行的条件
现在我要计算任何列B到F(从第1到第100行)中具有“数据”的行数。即我正在寻找一个函数,比方说,ExistIfRow(B1:F100),它将返回一个0或1的100X1数组。所以我可以简单地做一个总和(ExistIfRow(B1:F100))来获得行数。 我希望能够选择100个单元格,并以数组公式的形式输入此函数,以在表单中获得100X1结果。
我希望这是有道理的。
另外,我试图创建这个函数,但是当我尝试将它放入单元格时,它不会显示在我的Excel表格中。有人能帮我看看我做错了什么吗? 该功能位于工作表的“模块”下。
Function RowWiseOR(Rin As Range, Condition As Variant) As Range
Dim rw As Range
Dim Out As Variant
Dim i As Integer
i = 0
For Each rw In Rin.Rows
If WorksheetFunction.CountIf(rw, Condition) > 0 Then Out(i).Value = 1 Else Out(i).Value = 0
i = i + 1
End
RowWiseOR = Out
End Function
很好。谢谢史蒂夫。这工作。 但是,当我尝试在此范围上执行Countif()时,它会给出#Value错误。例如。当我总结(RowWiseOR(A1:C20,“data”))时,它给了我适当数量的行,在任何地方都有“数据”。使用它作为数组公式我可以看到20X1阵列(我没有转置)与0和1。但是,当我做一个countif(RowWiseOR(A1:C20,“数据”),1)我期望5,但我得到一个错误,而不是。 你能帮忙吗? – StreetHawk 2014-10-03 12:36:30
我需要一点澄清。你是否想用'1'和'0'来查看20X1数组,然后在结果20X1数组中看到单个单元格包含'1'的计数,还是只想计算包含'数据'的行数? – 2014-10-03 15:05:07
所以我想看看'1和'0的20X1阵列。然后,我可以将这个数组求和到一个单元格中,以获得“20X1数组中的'1的数量”。 但我试图用'countifs()'中的另一个20X1数组使用这个20X1数组。那有意义吗?所以我想要做的是countifs(<上面的20X1阵列>,1,H1:H20,1)。这就是错误。 – StreetHawk 2014-10-03 15:15:58