如何忽略上一行中已经计数的值以进行累计计数

时间:2018-08-23 01:27:12

标签: excel match countif cumulative-sum

我有一个看起来像这样的数据集:

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

本质上,我需要检查一下当前行中的物种是否已经存在于先前的行中。 目标是生成这样的图形,以便我可以确定在哪里采样工作的收益开始递减(以物种数计): enter image description here

是否可以使用Excel公式来填充“累计计数”列并返回上面的结果?我还应该提到一个简短的解决方案是最好的,因为我有35种以上的物种,并且公式很快就会变得冗长而复杂。任何帮助将不胜感激。

2 个答案:

答案 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

enter image description here

enter image description here

我找到了一个方法,但是可能可以改进一下:

对于我们的第一个总计数行:

=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

enter image description here

enter image description here

enter image description here

答案 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