|
楼主 |
发表于 2017-10-3 09:35
|
显示全部楼层
本帖最后由 流浪铁匠 于 2017-10-3 10:27 编辑
合并单元格的公式,主要分2类
1,在合并单元格中录入公式
2,对数据源存在合并单元格结构的数据进行统计
以下对2类公式均有涉及
1,涉及合并单元格的简单统计/合并单元格中录入公式的方式
1.1,序号类
1.2,求和
1.3,计数(合并单元格对应内容数)
1.4,计行数(合并单元格对应行数,若存在空单元格时与1.3计数结果有差别)
1.5,求平均值
以下公式除1.5的解法3外,均需选取整个区域后编写公式并使用ctrl+enter批量填充公式完成
1.1:序号 =MAX(D$18:D18)+1 补1.1 b序号: =IF(A19="",K18+1,1)
或=COUNTA(D$18:D18)或
=(A19="")*N(K18)+1
1.2:求和=SUM(C19:C$33)-SUM(E20:E$33)
1.3:计数=COUNTA(B19:B$33)-SUM(F20:F$33)
1.4:计区域行数=ROWS(B19:B$33)-SUM(F20:F$33)
当(年份)字段有空值时,1.3和1.4的结果是有差异的
=FREQUENCY(-ROW(19:33),-ROW(19:33)*(A19:A33<>"")) frequency对各合并单元格的区域行数的内存数组思路,缺点是由于fre特性,内存数组区域会多1行
1.5:平均值 合并单元格的求平均值是相对麻烦的公式
解法1 =AVERAGE(OFFSET(C19,,,MATCH("*",A20:A33,0))) 缺点a34需要输入一个任意文本避免最后一个公式报错
解法2 =AVERAGE(OFFSET(C19,,,MATCH(FALSE,IF(ROW($A20:$XFC$34)=ROW(I$34),FALSE,ISBLANK(I20:I$34)),)))
红色部分为定义名称(quyu),因合并单元格不能直接输入数组公式,且这个公式的思路涉及合并单元格结构(公式只在每个合并单元格区域的第1行) 解法3 =IF(A19<>"",AVERAGE(OFFSET(C19,,,MATCH(FALSE,IF(ROW(20:$34)=ROW(I$34),FALSE,LEN(J20:J$34)=0),))),"") 解法3是在解法2基础上自己修改的,不需要定义名称,但需要先取消合并后输入数组公式下拉后用格式刷假合并(请参考合并单元格技巧篇),后来知道了match的思路后有很简洁的思路
解法4 =MMULT(N(LOOKUP(COLUMN(A:O),ROW($1:$15)/(A$19:A$33>0),A$19:A$33)=A19),--C$19:C$33)/SUMPRODUCT((B$19:B$33<>"")*((LOOKUP(ROW($1:$15),ROW($1:$15)/(A$19:A$33>""),A$19:A$33)=A19))) 解法4是支持数组运算的函数集合下的一个极端写法,可以学习思路并在一些情况下衍生用法
解法5 =AVERAGE(OFFSET(C19,,,IFERROR(MATCH("*",A20:A$33,),ROW(A19)-ROWS(A19:A$33)-1)))
match错位法,在合并单元格本身结果下很实用的思路
|
|