先进先出法—用Excel也能做到吗?—类似数据库记录指针的Excel函数E
先进先出法——用Excel函数也能做到吗? (类似数据库记录指针的函问题解析解法A 解法B 解法C 解法D 解法E 说明:1
此次主题重点讨论如何在数据表中指定记录的位置,实现类似数据库记录指针(游标)的功能。
2网友们的答案中,有5个解法符合出题的要求。略作修改,方便说明。3
五种解法都用到了SUMIF+OFFSET三维引用区域后条件汇总来计算入库数量的累计值。4因为公式较多且引用三维区域不易展开,所以重点解析各解法的G17或J17单元格公式。解题思路综述:
1
2两个解题方向
方向一求得本次累计出库金额后扣除上次累计出库即是本次出库金额
即主要求解A+B1部分累计出库部分
另 A+B1=A+B-B2 是一个变式
方向二求得结存余额来倒算出库金额
即先求解B2+C部分本次出库后的结存余额
3三种记录定位技术
方法一通过累计出库和累计入库的比较,来确定每个批次的出库状态,同时可获临界点。
方法二LOOKUP来定位小于累计出库的最大累计入库。。
方法三Match定位小于累计出库的最大累计入库,返回最后一次完整出库的位置。
定义各解法用到的名称
关于名称中用到的SUMIF+OFFSET,测试题2中有讨论,这里不再重复。函数应用系列测试
具体各解法分析见表头链接
总结
Excel函数的一些组合也能够胜任类似数据库记录指针(游标)的部分功能,而且有很高的
感谢各位网友及各版版主们的支持,函数版将继续努力为大家
数据库记录指针的函数 )
指针(游标)的功能。
量的累计值。
单元格公式。
态,同时可获临界点。
整出库的位置。
解法E
函数应用系列测试题2=SUMIF(OFFSET(!$D$5,,,ROW(!$B$6:$B17)-ROW(!$B$5)),">0")
=MATCH(SUM(!$E$6:$E17),INCMOFF)
=-MATCH(!$H17,SUMIF(OFFSET(!$B17,,,-ROW(!$B$6:$B17)+ROW(!$B$5)),"<>"))
公式
=SUMIF(OFFSET(!$B$6,,,ROW(!$B$6:$B18)-ROW(!$B$5)),">0")
=SUMIF(OFFSET(!$B$5,,,ROW(!$B$6:$B17)-ROW(!$B$5)),">0")
,而且有很高的效率。
将继续努力为大家带来更好的讨论主题。