这个实现语句如下,(写在2行然后向下拖动)(2007或以上版本):

 1 =
 2 IF(OR($D2<>0,ISBLANK($H2),$G2="111"),
 3  "",
 4  IF(OR($G2="222",$G2="333"),
 5   IF($H2>0,1,-1)*SUMIFS(INDIRECT("E"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1))):$E2,INDIRECT("A"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1))):$A2,$A2,INDIRECT("B"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1))):$B2,$B2,INDIRECT("D"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1))):$D2,0,INDIRECT("G"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1))):$G2,$G2) - $H2,
 6   IF(OR($G2="444",$G2="555"),
 7    IF($H2>0,1,-1)*SUMIFS($E:$E,$B:$B,$B2,$G:$G,$G2,$A:$A,$A2,$D:$D,0) - $H2,
 8    "ERROR"
 9   )
10  )
11 )

主要复杂的是:

INDIRECT("E"&IFERROR(LOOKUP(1,0/(($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)),ROW($1:2))+1,ROW($1:$1)))

其作用就是返回:H列中存在空值,假设第i行有数据,从i行向上查找直到遇到另一个数据位置,返回查找到的空值的最小行号,如下面表格,i=2返回1,i=9返回5,当然还有符合一定筛选条件。
1  
2 num
3  
4 num
5  
6  
7  
8  
9 num

语句逐步才开看indirect,作用是将字符串“” 转换成有效代码,INDIRECT(“E”&1)= E1
  • IFERROR()

为了解决向上查找时候没有遇到空值的情况,例如上表中的第一行若为标签,i =2 时候向上查找并未遇到空,所以用这个语句返回ROW($1:$1),E和1 前面带 $ 意义是excel 中拖动时候不变。

  • ROW() 返回选中单元格的行号。
下面是需要慢慢讲的查找语句,先通过简单版来讲原理。
  • LOOKUP(1,0/($H$1:INDIRECT("H"&ROW()-1)<>""),ROW($1:2))
一个数据的上面最靠近的 非 空值可以通过上面语句来返回行号。原理:
INDIRECT($H$1:INDIRECT("H"&ROW()-1)<>"")
表示该列 从第一行到数据上一行的 是数值是否为空的判断,结果是 一列的true 、false

0/(...)

用0 除以后变成一列 0 和 div/0,需要括起全部数据,后者是excel 的一个错误标记{0;0;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;#DIV/0!;0}
然后在该列 中查找1 ,必须大于0(利用了excel 的机制,baidu会有更清楚的解释:lookup 会默认第二个参数是已经sort(从小到大),忽略error,然后用二分查找),结果就会选中列中最后一个0,最后返回第三个参数 的对应数值,这里是行号。如果 查找的指匹配到了,lookup 的机制是返回匹配中最后一个,返回第一个好像是match。

剩下的加减 1是自己调整的。

  • ($H$1:INDIRECT("H"&ROW()-1)<>"")*($G$1:INDIRECT("G"&ROW()-1)=$G2)

通过上面0/(...) 的解释,可以加入条件选择,避免了数组公式所以使用*号,这是一个且运算,并没有找到或运算的,1*n 数列 且 1*n 数列 = 1*n 数列。


把使用方法也附上吧

1.对原始数据添加首行,第一行,需要注意的是列A,B,D,E,G,H 必须正确对应
次码 主码 有效号 计算值 选择类型 处理选择

2.对添加首行后的数据排序,方法:
ctrl+A 后选择 开始->排序和筛选->自定义排序,
勾选 数据包含标题,
列:主码,排序依据:数值,次序:升序
点击添加条件,
列:次码,排序依据:数值,次序:升序

3.在某一列的第二行,必须第二行,复制上面的公式

4.最后是一拖到底(其中有空行不影响,向下拖,另向右拖不影响结果)


转载于:https://www.cnblogs.com/Azhu/p/4120067.html

excel 表格lookup 的操作相关推荐

  1. excel表格汇总怎么操作

    今天跟大家分享一下excel表格汇总怎么操作 1.如下图想要快速汇总各个部门平均年龄,首先我们选中数据单元格区域 2.然后点击如下图选项 3.点击[汇总拆分]-选择[汇总多表] 4.点击[二维表] 5 ...

  2. 多个excel表格合并一键操作

    今天跟大家分享一下多个excel表格合并一键操作 1.打开演示文件,要求将多个表格合并并标注表格来源. 2.首先我们点击下图选项 3.接着我们依次选择[汇总拆分]-[合并多表] 4.勾选[合并后,标注 ...

  3. 基于Python的高校勤工俭学工资管理系统——实现对excel表格的数据操作(xwlings库)

    基于Python的高校勤工俭学工资管理系统 1 需求概述 1.1 需求分析 勤工俭学是指学校组织的或学生个人从事的有酬劳动,用以助学.在我国,许多高校借以对学生进行劳动技术教育,培养正确的劳动观点和态 ...

  4. python处理excel表格教程-python操作excel(内附python教程分享)

    今天学习了下xlwings这个库,目的是为了让计算机自动化操作excel表,当某天需要做一些很繁琐的事情,就可以派上用场啦. 基本对象 网上刮来的图,很好. 大概就是xlwings中可以有多个exce ...

  5. python操作excel表格-python如何操作excel表格

    Python对Excel的读写主要有xlrd.xlwt.xlutils.openpyxl.xlsxwriter几种. python学习网,大量的免费python视频教程,欢迎在线学习! 1.xlrd主 ...

  6. python做excel表格代码_python操作excel表格

    我们在写测试用例的时候,是创建一个表格.xlsx,然后把各种条件加到这张表格中去,所以,如何对excel表格操作,是相当重要的一环,那么,接下来,这篇博客就直接教会大家如何通过python去处理平时工 ...

  7. python做excel表格代码_python - 操作excel表格

    说明:由于公司oa暂缺,人事妹子在做考勤的时候,需要通过几个excel表格去交叉比对员工是否有旷工或迟到,工作量大而且容易出错. 这时候it屌丝的机会来啦,花了一天时间给妹子撸了一个自动化脚本. 1. ...

  8. 用EasyExcel对excel表格进行读写操作

    今日学习项目时发现一个好玩的技术,特此记录一下. EasyExcel写操作 第一步: 引入依赖 <dependency><groupId>com.alibaba</gro ...

  9. qt在linux操作wps,Qt实现Excel表格的读写操作(office,WPS)

    我们用QT经常会将表格的数据导入数据库或者将数据库中的数据导出为*.xls/*.xlsx.使用比较多的就是用QAxObject对象进行操作.一般首先会连接数据库: QAxObject *excel = ...

最新文章

  1. BESR备份还原SERVER 2003域控制器
  2. 12、Grafan 4.3升级到Grafana 5.0
  3. 遗传算法 简单函数优化
  4. MapInfo之格式说明(转载)
  5. 人工智能正在如何改变传统行业
  6. java list 合并去重_java 怎么把多个list 合并成一个去掉重复的
  7. android 瀑布流
  8. 江西省2019计算机二级报名日期,2020年3月江西计算机等级报名时间、报名入口【2019年12月18日-27日】...
  9. idea安装sbt插件linux,【idea】kafkasbt+idea安装配置与测试
  10. 多线程是并行还是并发_并发,并行,线程,进程,异步和同步有相关性吗?
  11. matlab seed函数_如何用matlab生成随机数函数_matlab随机数生成函数
  12. IPV6之VRRP典型组网配置案例
  13. 新消费业内人说不出口的10个问题
  14. 浅析Relaxed Ordering对PCIe系统稳定性的影响
  15. IT产业第一定律:摩尔定理
  16. 用Python教你画一棵绝美碎花树~学会就能送给喜欢的人啦
  17. C#修改MAC地址类及操作网卡类
  18. 【10.28 校内普及组】 小B浇花 题解
  19. SpringBoot发送邮件(二)发送包含图片的邮件
  20. Python3操作pdf文件之ReportLab第1篇--解决中文乱码问题

热门文章

  1. [网络开发]服务器开发
  2. 全国大型水库水情数据汇总2018
  3. 【VS开发】动态创建ActiveX控件
  4. ExecutionException异常
  5. C#GDI画圆及填充
  6. Windows下静态链接库的使用
  7. uni-app 微信小程序自定义radio样式
  8. 计算机应用等级考试1,计算机等级考试一级试题
  9. tfrcw函数用法_open函数
  10. 手机写python脚本_手机需要,哪位大神帮编个Python脚本,谢谢