EXCEL - 按唯一列值计算非空行数

时间:2017-09-25 13:29:54

标签: excel excel-formula

我的数据如下所示:[有10k行,有26列]

FID Year    I1  I2  I3  I4  I5
1   2009    a   b   c       
1   2010    a   d   e   g   
1   2011    g   f   h       
1   2011    h   f   j   i   k
1   2013    h   t   g   k   m
1   2014    a   b   c   d   
1   2014    e   d   f   c   l
1   2014    h   i   j   k   d
1   2014    a   b   d       

我想要每年独一无二的'我的数量。输出如下:

FID Year    Count(Unique)
1   2009    3
1   2010    4
1   2011    6
1   2013    5
1   2014    11

到目前为止我一直在尝试:

  • 我尝试了这个=COUNTIF("$C2:$G2,"*"),然后在同一年总结。直到我意识到'我正在重复。
  • 然后我尝试连接同一年的所有我。失败。
  • 然后我尝试将数据转换为长格式,以[FID + Year]为键。这样我就可以删除重复项。但由于“内存不足”而无法执行任务。

如何解决这个问题,将不胜感激。感谢。

2 个答案:

答案 0 :(得分:0)

这是您需要的公式:

=SUM(IF(COUNTIF(A1:E1;A1:E1)=1;1;0))

这是一个数组公式,因此你需要 Ctrl + Shift + 输入来执行它。

如果你的数值是数字,那就更容易了。像这样:

=SUM(IF(FREQUENCY(A1:E1,A1:E1)>0,1))

这不是数组公式。

答案 1 :(得分:0)

我想出了这个,这是结果的截图:

以下是您可以从cell K2尝试并将其拖下来的公式:

=IFERROR(SUMPRODUCT((OFFSET($C$1,MATCH(J2,$B$2:$B$10,0),0,COUNTIF($B$2:$B$10,B2),5)<>"")/COUNTIF(OFFSET($C$1,MATCH(J2,$B$2:$B$10,0),0,COUNTIF($B$2:$B$10,B2),5),OFFSET($C$1,MATCH(J2,$B$2:$B$10,0),0,COUNTIF($B$2:$B$10,B2),5)&"")),0)

<强>解释

这样做是为了使用这两个基本公式。

=SUMPRODUCT((range<>"")/COUNTIF(range,range&"")),这是为了在范围内找到唯一值并忽略空白

=OFFSET(reference,rows,cols,height,width),这是为了找到您要评估的范围

希望这可以解决您的问题。