从一个单元格移动到另一个单元格,并计算两个数据之间的行数

我有一列250行。 数据在这些行中是随机的0和1。 我需要find任意两个1之间的行数。 我需要写一个相同的macros。例如:如果我的专栏如下:

A1 0 B1 2 A2 0 B2 2 A3 0 A4 1 A5 0 A6 0 A7 1 A8 0 A9 0 A10 1 

我想要的是检查整个列从A1到A10。 从A1开始,我的程序将检查'1',它在A4中find,它将继续向下移动,直到find另一个'1'。 在这里它将移动到A7。 现在结果应该是“中间行数”,即2。 这个结果应该粘贴在另一列,让我们说B1。 这个过程需要继续,直到光标到达B10行。 请帮忙。

这应该做你以后的事情。 它假定列A中的数据是连续的。

 Sub helpSandeep() Dim c As Range Dim counting As Boolean Dim zeroCount As Long [B:B].ClearContents [B1] = "Results" For Each c In Sheets("Sheet1").[A1:A65536].Cells If Len(c) = 0 Then 'Assuming that an empty cell means we are finished Exit For Else If c.Value2 = 1 Then 'Update the results and reset the count counting = True 'Avoids counting any initial zeroes as per your example If zeroCount > 0 Then [B65536].End(xlUp).Offset(1, 0) = zeroCount End If zeroCount = 0 Else 'Increment count, assuming we are actually counting If counting Then zeroCount = zeroCount + 1 End If End If End If Next c End Sub 

按Ctrl + Shift + Enter键input数组公式。 在B1

 =LARGE((ROW($A$1:$A$10))*($A$1:$A$10=1),SUM(--($A$1:$A$10=1))-(ROW()))-LARGE((ROW($A$1:$A$10))*($A$1:$A$10=1),SUM(--($A$1:$A$10=1))-(ROW()-1))-1 

并填写。 该公式包括减去两个LARGE函数,然后从结果中减去1。

LARGE函数的第一个参数是一个返回每个包含1的条目的行号的数组。

 (ROW($A$1:$A$10))*($A$1:$A$10=1) 

LARGE函数的第二个参数是一个SUM数组公式,用1计算所有条目,然后减去当前行号(或当前行号-1)。 对于B1中的公式,这将返回3-1(或2,所有条目的计数与行号(1)less一(3))。

对于第二个LARGE函数,第二个参数将返回3-0(3)。

所有这一切说,给我第二大行包含1的条目,减去包含1的条目的第三大行。

当你填写到B2时,变成:给我第一大行的条目,包含1,减去第二大行。

最后,我们从整个事物中减去1,使结果排除(而不是包含)包含1的行。

我知道你问了一个macros,但你可能会发现更适合的公式。