如何忽略前几行中已计算的值以进行累积计数
How to ignore values already counted in previous rows for cumulative count
我有一个如下所示的数据集:
Sample Species1 Species2 Species3 Cumulative count
1 1 1
2 1 1 2
3 1 2
4 2 2
5 1 2 1 3
我想计算每个样本添加的每个新物种。所以在上面的例子中,样本 3 和样本 4 没有在物种总数中添加任何新物种,因此它们的累积计数保持不变(我正在尝试创建物种累积曲线)。
我已经试过了,但无法让它与 >0 的数字(例如)而不是文本一起工作:
本质上,我需要一些东西来检查当前行中的物种是否已经存在于之前的行中。
目标是生成这样的图表,因此我可以确定采样工作量开始减少的位置 return(物种数量):
是否有一个 excel 公式可以用来填充 'Cumulative count' 列和 return 上面的结果?我还应该提到,一个简短的解决方案是最好的,因为我有超过 35 个物种,而且公式很快就会变得又长又复杂。如有任何帮助,我们将不胜感激。
水平移动很容易 较小的公式:
=SUMPRODUCT((B3:D3>0)*1,(B:D2<=0)*1)+E2
.......
=SUMPRODUCT((B6:D6>0)*1,(B:D2<=0)*1,(B:D3<=0)*1,(B:D4<=0)*1,(B:D5<=0)*1)+E5
我找到了一种方法,但这可能需要改进一下:
对于我们的第一个射精计数行:
=COUNTIF(B2:D2,"<>" & "")
此后每个:
=IF(AND(B3>0,SUM(B:B2)<=0),1,0)+IF(AND(C3>0,SUM(C:C2)<=0),1,0)+IF(AND(D3>0,SUM(D:D2)<=0),1,0)+E2
.......
=IF(AND(B6>0,SUM(B:B5)<=0),1,0)+IF(AND(C6>0,SUM(C:C5)<=0),1,0)+IF(AND(D6>0,SUM(D:D5)<=0),1,0)+E5
一个较短的解决方案是 UDF,由 JvdV 在此处提供:
计算器。com/questions/51980149/count-column-if-it-contains-a-filled-cell-in-excel/51980258
Well, I guess if you want to work without any helper rows to use the
COUNTA funtion a smooth way could be a UDF, possibly like so:
Function CountColumns(RNG As Range) As Long
Dim COL As Range
For Each COL In RNG.Columns
If Application.WorksheetFunction.CountA(COL) > 0 Then CountColumns = CountColumns + 1
Next COL
End Function
我有一个如下所示的数据集:
Sample Species1 Species2 Species3 Cumulative count
1 1 1
2 1 1 2
3 1 2
4 2 2
5 1 2 1 3
我想计算每个样本添加的每个新物种。所以在上面的例子中,样本 3 和样本 4 没有在物种总数中添加任何新物种,因此它们的累积计数保持不变(我正在尝试创建物种累积曲线)。
我已经试过了,但无法让它与 >0 的数字(例如)而不是文本一起工作:
本质上,我需要一些东西来检查当前行中的物种是否已经存在于之前的行中。
目标是生成这样的图表,因此我可以确定采样工作量开始减少的位置 return(物种数量):
是否有一个 excel 公式可以用来填充 'Cumulative count' 列和 return 上面的结果?我还应该提到,一个简短的解决方案是最好的,因为我有超过 35 个物种,而且公式很快就会变得又长又复杂。如有任何帮助,我们将不胜感激。
水平移动很容易 较小的公式:
=SUMPRODUCT((B3:D3>0)*1,(B:D2<=0)*1)+E2
.......
=SUMPRODUCT((B6:D6>0)*1,(B:D2<=0)*1,(B:D3<=0)*1,(B:D4<=0)*1,(B:D5<=0)*1)+E5
我找到了一种方法,但这可能需要改进一下:
对于我们的第一个射精计数行:
=COUNTIF(B2:D2,"<>" & "")
此后每个:
=IF(AND(B3>0,SUM(B:B2)<=0),1,0)+IF(AND(C3>0,SUM(C:C2)<=0),1,0)+IF(AND(D3>0,SUM(D:D2)<=0),1,0)+E2
.......
=IF(AND(B6>0,SUM(B:B5)<=0),1,0)+IF(AND(C6>0,SUM(C:C5)<=0),1,0)+IF(AND(D6>0,SUM(D:D5)<=0),1,0)+E5
一个较短的解决方案是 UDF,由 JvdV 在此处提供: 计算器。com/questions/51980149/count-column-if-it-contains-a-filled-cell-in-excel/51980258
Well, I guess if you want to work without any helper rows to use the COUNTA funtion a smooth way could be a UDF, possibly like so:
Function CountColumns(RNG As Range) As Long Dim COL As Range For Each COL In RNG.Columns If Application.WorksheetFunction.CountA(COL) > 0 Then CountColumns = CountColumns + 1 Next COL End Function