我有一个看起来像这样的数据集:
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(例如)而不是文本: How to ignore data previously counted by countif and return a specific value in cell
本质上,我需要检查一下当前行中的物种是否已经存在于先前的行中。 目标是生成这样的图形,以便我可以确定在哪里采样工作的收益开始递减(以物种数计):
是否可以使用Excel公式来填充“累计计数”列并返回上面的结果?我还应该提到一个简短的解决方案是最好的,因为我有35种以上的物种,并且公式很快就会变得冗长而复杂。任何帮助将不胜感激。
答案 0 :(得分:1)
水平移动是更简单的公式:
import { Component, OnInit } from '@angular/core';
import * as $ from 'jquery';
import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
@Component({
selector: 'app-home',
templateUrl: './home.component.html',
styleUrls: ['./home.component.scss']
})
export class HomeComponent implements OnInit {
constructor(
private httpDataGetter: HttpClient
) { }
ngOnInit() {
this.httpDataGetter.get('https://my-json-server.typicode.com/alifrontend499/userdatafake/profile').subscribe(responsive => {
$(responsive).each((count, obj) => {
this.userdata.push(obj);
});
}, err => {
console.log(err);
});
}
userdata = []
}
.......
=SUMPRODUCT((B3:D3>0)*1,(B$2:D2<=0)*1)+E2
我找到了一个方法,但是可能可以改进一下:
对于我们的第一个总计数行:
=SUMPRODUCT((B6:D6>0)*1,(B$2:D2<=0)*1,(B$3:D3<=0)*1,(B$4:D4<=0)*1,(B$5:D5<=0)*1)+E5
此后每个:
=COUNTIF(B2:D2,"<>" & "")
.....................
=IF(AND(B3>0,SUM(B$2:B2)<=0),1,0)+IF(AND(C3>0,SUM(C$2:C2)<=0),1,0)+IF(AND(D3>0,SUM(D$2:D2)<=0),1,0)+E2
答案 1 :(得分:0)
一个较短的解决方案是UDF,JvdV在此处提供: stackoverflow.com/questions/51980149/count-column-if-it-contains-a-filled-cell-in-excel/51980258
好吧,我想您是否想在没有任何帮助行的情况下使用 COUNTA函数可以是UDF的一种平滑方法:
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