2017-09-25 44 views
1

我的数据是这样的非空行的计数:用10k行和26分东西列]EXCEL - 通过独特的列值

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]作为关键字的长格式。这样我可以删除重复项。但由于'没有足够的记忆'来执行任务而失败。

任何帮助将不胜感激如何解决这个问题。谢谢。

回答

0

这是您需要下式:

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

它是一种阵列式,从而需要Ctrl键 + + 输入来执行它。

如果你的值是数字,它会更容易。像这样:

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

这不是一个数组公式。

+0

对不起,我无法理解你的答案。 1)应该有','而不是';'对吗? 2)'COUNTIF'中的'range'是什么?我假设它是'C2:G2'。正确? 3)在标准中有一个范围是什么意思? 4)公式如何考虑年份和FID。 5)我也得到不正确的输出。 – urwaCFC

+0

@urwaCFC - 它不需要输入年份,但它只是计算给定范围内的唯一值。因此范围应该是相同的。尝试一下。 – Vityata

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) 

说明:

这是做什么用这两个基本的f ormulas。

=SUMPRODUCT((range<>"")/COUNTIF(range,range&"")),这是找到一个独特的范围和值也忽略空白

=OFFSET(reference,rows,cols,height,width),这是找到你要评估

希望这能解决你的问题的范围。