如何在excel中动态计数范围?

时间:2015-08-26 07:33:15

标签: excel excel-2010

|A|B|C|D|E|F|G|
|3|5|0|4|0|9|6|

我想计算动态计数值,如果值为0则不计数。

实施例

  1. 计数2时间范围A1-G1结果为5.

  2. 计算3个时间范围A1-G1结果为4.

  3. 计算4个时间范围A1-G1结果为9。

  4. 如何在excel中编码。

2 个答案:

答案 0 :(得分:0)

您可以使用INDEX功能移动一系列值:

=IF(INDEX(A1:G1,0,A4)=0,INDEX(A1:G1,0,A4+1),INDEX(A1:G1,0,A4))

其中A4是计数。 然而如果范围的结果是0,它将移动到下一个,这只适用于0的单个实例。所以一个接一个将导致0。

更完整的证明解决方案是使用VBA,这是一个自定义功能:

Public Function DynamicResult(ByVal Rng As Range, ByVal Count As Integer) As Integer

Dim i As Integer: i = 1

For Each cell In Rng

    If (i = Count) Then
        If cell > 0 Then
        DynamicResult = cell
    Else
        Count = Count + 1
    End If
End If

i = i + 1

Next cell

End Function

如果将此代码粘贴到VBA模块中,您可以像这样使用它:

=DynamicResult(A1:G1,7)

答案 1 :(得分:0)

从A2中的1开始,从B2开始填写此公式以对单元格进行编号: -

=IF(B1,A2+1,A2)

并使用此公式查找与A4中的位置对应的值: -

=IFERROR(INDEX($A1:$G1,MATCH(A4,$A2:$G2,0)),"")

enter image description here