原始数据

1  使用数据透视表,最简单简洁的办法

  • 插入 数据透视表
  • 设置下字段,就很简单了

2 使用数组公式

2.1 感想,这些数组公式--特别是所谓万金油套路,都需要太多小技巧了,很麻烦

  • 公式这么复杂, 用了很多奇怪技巧后对非专职研究EXCEL的人来说失去意义了

  • 一般人能这么做,也就是写成一个工具表后,平时很少改了,

  • 实用性不如用 透视表,或VBA

2.2 公式从内层逐层解析

  • IFERROR(INDEX($A$2:$A$14,SMALL(IF($C$2:$C$14=$F$2,ROW($1:$13),99),ROW(A1))),"")
  • 第1层 ----------IF
  • IF($C$2:$C$14=$F$2,ROW($1:$13),99)----生成一个新的数组,数组元素内容就是其行号。
  • 如果查到第1个元素符合,那么就取 往上-1的行号,如果没查到,就取99
  • ROW($1:$13)为什么从1开始?  我认为必须从1开始的原因是excel里 range 或数组 序号必须从1开始?
  • 为什么取99,因为现在列里就10来个元素,99够用,写999也没问题,据说也可以写成9^9 很大的这种数。
  • 第2层--------small
  • SMALL(IF($C$2:$C$14=$F$2,ROW($1:$13),99),ROW(A1))
  • 所以 row(a1)  row(a2) 就是起到1,2,3 自动化的作用,small取处理过的数组里的,第1,第2,第3小的值
  • 第3层----index 取出数组里的前几位的元素,small()---变相成为了index
  • INDEX($A$2:$A$14,small(99,1))   ---最小的index
  • INDEX($A$2:$A$14,small(99,2))   ---第2小的index

ROW(A1)  ROW(A2) 往右边拖动,就可以符合行数要求的其他列了!

  • 第4 层
  • iferror(,"")
  • 因为数据的第1行,数组公式是自己写的 ROW(A1)
  • 而数据的第2行,是往下拖的    ROW(A2)     ROW(A3)等
  • 避免错误值不好看

2.3 参考

  • Excel一对多查询,万金油套路详解_函数
  • EH
  • “万金油公式”思路解析-Excel函数与公式-ExcelHome技术论坛 -
  • 部落窝教育H
  • excel函数公式:万金油筛选函数公式解读

2.4  利用F9看公式内的计算中间结果

4 使用VBA实现

  • 代码的基本意思就是
  • 取关键列的 关键字,如果是非重复的,写入数组内(之后把这个数组赋到表的列里去),写入字典其行号,
  • 如果是重复的,则根据字典的行号,把内容加起来
Sub 多列汇总()Dim l(1 To 1000, 1 To 4)Dim arr, 行数Dim x, k As IntegerDim d As New Dictionaryarr = Range("q1:t" & Range("t65536").End(xlUp).Row)For x = 1 To UBound(arr)If d.Exists(arr(x, 1)) Then行数 = d(arr(x, 1)) '字典的items赋给行数?l(行数, 2) = l(行数, 2) + arr(x, 2)l(行数, 3) = l(行数, 3) + arr(x, 3)l(行数, 4) = l(行数, 4) + arr(x, 4)Elsek = k + 1 'k代表行数??d(arr(x, 1)) = k '把行数放进字典?l(k, 1) = arr(x, 1)l(k, 2) = arr(x, 2)l(k, 3) = arr(x, 3)l(k, 4) = arr(x, 4)End IfNext xRange("v2").Resize(k, 4) = lRange("w" & Range("w65536").End(xlUp).Row + 1) = Application.Sum(Range("w3:w" & Range("w65536").End(xlUp).Row))Range("x" & Range("x65536").End(xlUp).Row + 1) = Application.Sum(Range("x3:x" & Range("x65536").End(xlUp).Row))Range("y" & Range("y65536").End(xlUp).Row + 1) = Application.Sum(Range("y3:y" & Range("y65536").End(xlUp).Row))Range("z" & Range("z65536").End(xlUp).Row + 1) = Application.Sum(Range("z3:z" & Range("z65536").End(xlUp).Row))Range("v" & Range("w65536").End(xlUp).Row) = "总计"
End Sub

VBA,index() + small() + if() 实现数据分组:EXCEL数组公式万金油套路, 顺便介绍另外2个方法:数据透视表,VBA字典相关推荐

  1. 视频教程-Excel常用公式函数 if函数 vlookup函数的使用方法视频教程-Office/WPS

    Excel常用公式函数 if函数 vlookup函数的使用方法视频教程 本人张光欢,在2018年4月1日注册公司邢台水滴计算机科技有限公司,从事于计算机软硬件开发,信息技术咨询服务 张光欢 ¥12.0 ...

  2. 计算机班内排名公式,巧用Excel数组公式统计各班优秀人数EXCEL基本教程 -电脑资料...

    期末考试期间,教导处的阿明忙得不亦乐乎,不时地发出感叹:"现在各班编在一起考试,统计优秀.及格.低分人数,真让人头疼", 我知道他在操什么心,却心不在焉地说:"count ...

  3. pandas数据分组聚合——groupby()、aggregate()、apply()、transform()和filter()方法详解

    数据分组 数据分组就是根据一个或多个键(可以是函数.数组或df列名)将数据分成若干组,然后对分组后的数据分别进行汇总计算,并将汇总计算后的结果进行合并,被用作汇总计算的函数称为聚合函数.数据分组的具体 ...

  4. java txt数据导入excel,java导入excle文件《如何用java 将txt数据导入excel》

    如何用java 将txt数据导入excel 代码如下: import java.io.*; import jxl.*; import jxl.write.*; public class CreateX ...

  5. javascript二维数组转置_精通Excel数组公式010:认识数组函数:TRANSPOSE、MODE.MULT和TREND...

    学习Excel技术,关注微信公众号: excelperfect 数组函数是可以提供多个值的Excel内置函数.下面列出了8个Excel内置的数组函数: TRANSPOSE函数 MODE.MULT函数( ...

  6. 如何使用vlookup+excel数组公式 完成逆向查找?

    本文是黄同学的录屏首秀, 也就是你们所说的第一次,我把第一次都献给你们了.初次录制,会有那么多的不习惯,和结巴,心里想说的话并不能正常用嘴巴表达出来,希望大家谅解.文章末尾有本文的讲解视频,大家一定要 ...

  7. Excel数组公式从入门到精通之精通篇

    一.课程回忆 什么是数组公式呢?顾名思义就是公式中包含数组的了,详细含义请参看前文.但这里重点提醒的一点就是,如果要使用数组公式,在编辑栏输入完公式以后一定要按下"Ctrl+Shift+En ...

  8. Excel数组公式从入门到精通之入门篇

    Excel中函数.公式大家都非常熟了,但"数组公式"你是否听过.用过?什么是数组公式呢?根据微软官方给出的解释, 数组公式:数组公式对一组或多组值执行多重计算,并返回一个或多个结果 ...

  9. 利用Excel数组公式统计各班优秀人数

    期末考试期间,教导处的阿明忙得不亦乐乎,不时地发出感叹:"现在各班编在一起考试,统计优秀.及格.低分人数,真让人头疼".       我知道他在操什么心,却心不在焉地说:" ...

最新文章

  1. python找人脚本_Python找出微信上删除你好友的人脚本写法
  2. python控制电机_树莓派Python控制步进电机
  3. python中and和or的惰性求值特点_惰性求值和yield-Python
  4. boost::mp11::mp_any_of相关用法的测试程序
  5. Java 代码完成删除文件、文件夹操作
  6. WMAP环境上传图片报错【找不到临时文件夹】解决方案
  7. 云原生 - Istio可观察性之分布式跟踪(三)
  8. Vue实例和生命周期
  9. 月老在线牵盲盒/交友盲盒公众号版本1.04支持交友同城
  10. 文本处理3剑客 sed命令
  11. 核心金融场景分布式事务
  12. 武汉都有哪些互联网公司?
  13. 替换字符串中的通配符
  14. 百度富文本编辑器php设置图片上传,手把手教你百度富文本编辑器的相关配置包括图片上传(for jsp)...
  15. 推荐电影 迪士尼经典动画片大全 1937-2008
  16. h3c交换机重启_h3c交换机重置命令_h3c交换机如何初始化
  17. java禁止夏令时_在指定时区导入日期时间,忽略夏令时
  18. 通读Docs - 《OPL1000 自学整理教程》
  19. 爱软测学员面试外企测试工程师英文面试小结
  20. 2020年R2移动式压力容器充装多少分及格及R2移动式压力容器充装考试申请表

热门文章

  1. QQ2013 密码获取(二)
  2. 迅为iMX6UL开发板多路串口开发平台接口详解
  3. scanf_s()前身——scanf()
  4. 一个 Python 的轻量级搜索工具:Whoosh
  5. ISO9001标准文档模版-测试计划
  6. HTC G8 wildlife 玩转
  7. HTTP状态码304详解
  8. 初级会计实务--第七章第三节、产品成本的归集和分配
  9. HTML+CSS+JS网页设计期末课程大作业 DW个人博客网站制作 web前端开发技术 web课程设计 网页规划与设计
  10. 东软 牛人学院 面试