如何计算非零值没有差距

请注意A列和B列中的以下值。

1 2280 2 0 3 1250 4 0 5 1245 6 0 7 0 8 0 9 1258 10 0 

我需要C和D列中的公式,请帮助

 1 2280 3 1250 5 1245 9 1258 

在C1中使用:

 =IFERROR(AGGREGATE(15,6,(ROW($B$1:$B$10)-ROW($B$1)+1)/($B$1:$B$10<>0),ROWS($A$1:$A1)),"") 

返回指定范围内B中没有零点的行号列表。 把它复制下来。 当数字显示不足时,将显示“”。

在D2中使用:

 =IFERROR(INDEX($B$1:$B$10,C1),"") 

它将在B中显示相应的值到C中列出的行号。向下复制公式。 就像第一个公式一样,IFERROR会在数字不足的时候显示“”。

公式C:

 =IF($B1>0;A1;"") 

D中的公式

 =IF($B1>0;B1;"") 

VBA解决scheme:

 Sub values() linea = 1 For Each cell In Range("b1:b10") If cell > 0 Then Cells(linea, 3) = cell Cells(linea, 4) = Cells(cell.Row, cell.Column - 1) linea = linea + 1 End If Next cell End Sub