EXCEL 在特定区域中提取不重复值的公式
2019-07-25 · 知道合伙人软件行家
这个问题已有一个回答,不知什么人踩了一下。也没仔细去看他的回答是怎样的,但有一点是值得肯定的,那就是给这个问题回复的人都值得点赞!哈哈,当然也包括老朽了。但愿不是题主踩的。
说实在的,设计得这么乱七八糟的工作表,真不愿来花时间回答。也是为了每日一题,实在没找到有点难度和挑战性的了,所以才回答的。这么设计工作表,不把人整晕才怪,不但数据源设计不合理,而且要求的结果还把名字和分数合计交叉提取,这不是自找麻烦吗?
不过还是按题主的要求,编写了一个公式来完成:
R6=IF(MOD(COLUMN(A:A),2),INDEX($C:$C,MIN(IF(COUNTIF($Q6:Q6,OFFSET($C6,1,,IFERROR(MATCH("考试日",$C7:$C$30,),COUNTA($C6:$C$30))-1))=0,ROW(INDIRECT("R[1]:R["&IFERROR(MATCH("考试日",$C7:$C$30,),COUNTA($C6:$C$30))-1&"]",)))))&"",SUMIF(OFFSET($C6,1,,IFERROR(MATCH("考试日",$C7:$C$30,),COUNTA($C6:$C$30))-1),Q6,OFFSET($D6,1,,IFERROR(MATCH("考试日",$C7:$C$30,),COUNTA($C6:$C$30))-1)))
同时按Ctrl+Shift+Enter三键输入数组公式,右拉到出现空白单元格。
复制R6到C列有“考试日”的R19、R26,然后各自右拉到出现空白单元格。
如果C列没有“考试日”的行,R列及右侧均无其他数据,也可以把R6的公式修改为:
R6=IF($C6="考试日",IF(MOD(COLUMN(A:A),2),INDEX($C:$C,MIN(IF(COUNTIF($Q6:Q6,OFFSET($C6,1,,IFERROR(MATCH("考试日",$C7:$C$30,),COUNTA($C6:$C$30))-1))=0,ROW(INDIRECT("R[1]:R["&IFERROR(MATCH("考试日",$C7:$C$30,),COUNTA($C6:$C$30))-1&"]",)))))&"",SUMIF(OFFSET($C6,1,,IFERROR(MATCH("考试日",$C7:$C$30,),COUNTA($C6:$C$30))-1),Q6,OFFSET($D6,1,,IFERROR(MATCH("考试日",$C7:$C$30,),COUNTA($C6:$C$30))-1))),"")
这样就可以下拉右拉,只有C列为“考试日”的行才会提取数据。
广告 您可能关注的内容 |