Vba 如何计算Excel工作表中包含数据的行数?

Vba 如何计算Excel工作表中包含数据的行数?,vba,excel,excel-formula,Vba,Excel,Excel Formula,我试图计算电子表格中的行数,其中至少有几列包含一个非空值:即 row 1 has a text value in column A row 2 has a text value in column B row 3 has a text value in column C row 4 has no values in A, B or C 公式将等于3,因为行1、2和3至少有一列中有文本值。类似地,如果第1行的每一列(a、B和C)中都有一个文本值,则该值将计为1。如果您不介意VBA,这里有一个函数

我试图计算电子表格中的行数,其中至少有几列包含一个非空值:即

row 1 has a text value in column A
row 2 has a text value in column B
row 3 has a text value in column C
row 4 has no values in A, B or C

公式将等于3,因为行1、2和3至少有一列中有文本值。类似地,如果第1行的每一列(a、B和C)中都有一个文本值,则该值将计为1。

如果您不介意VBA,这里有一个函数可以为您完成此操作。您的电话可能是:

=CountRows(1:10) 
函数CountRows(ByVal范围作为范围)的长度
Application.ScreenUpdating=False
暗行作为范围
不算长
对于范围中的每一行。行
如果(Application.WorksheetFunction.CountBlank(row))-256 0,则
计数=计数+1
如果结束
下一个
CountRows=计数
Application.ScreenUpdating=True
端函数

工作原理:我利用了256行限制这一事实。工作表公式CountBlank将告诉您一行中有多少单元格为空。如果该行没有带值的单元格,则该行为256。所以我只要减去256,如果它不是0,那么我知道某个地方有一个单元格有一些值。

对于公式,你可以做的是:

  • 在一个新列中(比如cold-cell
    D2
    ),添加
    =COUNTA(A2:C2)
  • 拖动此公式直到数据结束(在我们的示例中,假设单元格
    D4
  • 添加最后一个公式求和(例如在单元格
    D5
    ):
    =sum(D2:D4)
尝试以下场景:

数组=
A1:C7
<代码>A1-A3有值,
B2-B6
有值,
C1
C3
C6
有值

要获得行数计数,请添加一列
D
(设置公式后可以将其隐藏),并在
D1
中放入公式
=If(求和(A1:C1)>0,1,0)
。将公式从
D1
复制到
D7
(对于不懂excel的其他搜索者,总和公式中的数字将更改为您所在的行,这是可以的)


现在在
C8
中,建立一个求和公式,将
D
列相加,答案应该是
6
。为了便于视觉效果,隐藏列
D

您应该在Excel中使用sumif函数:

=SUMIF(A5:C10;“要查找的文本”C5:C10)


这个函数的取值范围是A5:C10,然后你有一些文本可以找到,这个文本可以是a或B,然后它将从C行中添加数字

这就是我最后想到的,非常有效

{=SUM(如果((ISTEXT('sheet Name!A:A))+(ISTEXT('CCSA Associates'!E:E)),1,0))-1}


不要忘记,因为它是一个数组,可以键入上面的公式而不带“{}”,并且可以按住CTRL+SHIFT+ENTER键,而不只是按ENTER键,这样“{}”就会出现并正确输入。

如果您想要一个简单的单行程序来完成所有操作(假设没有值,您指的是空白单元格):

如果没有值,则表示单元格包含0

=(ROWS(A:A) + ROWS(B:B) + ROWS(C:C)) - COUNTIF(A:C, 0)
该公式首先将列A、B和C中的所有行相加(如果需要计算更多行,只需增加范围内的列。例如,
行(A:A)+行(B:B)+行(C:C)+行(D:D)+…+行(Z:Z)

然后,公式计算同一范围内空白值(或第二个示例中为0)的数量


最后,公式从总行数中减去没有值的单元格总数。这就给您留下了每行中包含值的单元格数,这里的关键函数是COUNTA(注意末尾的a),它对包含数据的单元格进行计数。对于不知道行数或希望行数可变的任何人,只需键入整列:
=COUNTA(a:a)
,假设列只包含要计数的单元格,而不包含其他内容。这仅在文本匹配时有效。如果此人只是在处理独一无二的电子邮件,或是姓名,该怎么办?或者只是试图找到有无非统一数据的单元数?
=(ROWS(A:A) + ROWS(B:B) + ROWS(C:C)) - COUNTIF(A:C, 0)