发布网友 发布时间:2022-04-27 07:18
共3个回答
热心网友 时间:2022-06-28 09:48
这个问题已有一个回答,不知什么人踩了一下。也没仔细去看他的回答是怎样的,但有一点是值得肯定的,那就是给这个问题回复的人都值得点赞!哈哈,当然也包括老朽了。但愿不是题主踩的。
说实在的,设计得这么乱七八糟的工作表,真不愿来花时间回答。也是为了每日一题,实在没找到有点难度和挑战性的了,所以才回答的。这么设计工作表,不把人整晕才怪,不但数据源设计不合理,而且要求的结果还把名字和分数合计交叉提取,这不是自找麻烦吗?
不过还是按题主的要求,编写了一个公式来完成:
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列为“考试日”的行才会提取数据。
追答如表格设计为如下样子:
既醒目,填写数据也方便,要统计数据公式也会极为简单。一个SUMIFS就得出结果了。
热心网友 时间:2022-06-28 09:49
1、如果指定区域为A2:F8,需要在A11:F17得到A2:F8的不重复的随机数据,那么以H2:M8为辅助区域,输入=RAND() 按Ctrl+Enter组合键结束,得到一组随机数; 2、在A11单元格输入以下公式,然后向右向下填充到F17单元格 =INDEX($A$2:$F$8,SUMPRODUCT((SMALL($H$2:$M$8,(ROW(A1)-1)*6+COLUMN(A1))=$H$2:$M$8)*ROW($2:$8))-1,SUMPRODUCT((SMALL($H$2:$M$8,ROW(A1)+COLUMN(B1)-1)=$H$2:$M$8)*COLUMN($H:$M))-7) 公式表示:定位到A2:F8,以H2:M8单元格中的最小值所在的单元格位置所对应的行数和列数,在A2:F8中取数。因为H2:M8是随机的,得到的数据也是随机的;因为RAND()随机数几乎没有重复的,因此H2:M8的大小排序值也没有重复的,得到的A11:F17的数据随机且不重复。根据需要,可隐藏H:M列。热心网友 时间:2022-06-28 09:49