ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 行业案例 > 生产管理 > 如何用公式实现先进先出统计进货价?

如何用公式实现先进先出统计进货价?

作者:绿色风 分类:生产管理 时间:2022-08-18 浏览:131
楼主
天南地北
Q:如何用公式实现先进先出统计进货价?
    如图所示,根据汇款总额和单价变动情况,来计算每次进货总价,具体要求及计算说明如下图所示

 

A:在E2输入如下数组公式:
  1. =SUM(LOOKUP(ROW(INDIRECT("1:"&SUM(D$2:D2))),MMULT(N(ROW($1:1)>TRANSPOSE(ROW($1:1))),B$2:B2/TEXT(C$2:C2,"0;;1"))+1,C$2:C2))-SUM(E$1:E1)
公式核心思路:根据每次进货总额和进货单价计算出每次可进货总吨位,然后对每次的进货单价按照进货吨位重复,构建一个新的数组,也就是公式的MMULT(N(ROW($1:1)>TRANSPOSE(ROW($1:1))),B$2:B2/TEXT(C$2:C2,"0;;1"))+1然后配合LOOKUP得到,例如本例B2/C2得到250,B5/C5得到100B9/C9得到100,这样我们构建一个250个200然后100个300,再100个400的一维数组,再根据D列的累计进货来获取新构建的数组的一部分的和,例如公式下拉到E3的时候就是求新构建的数组前20+30项的和=50*200,然后减去前面已经统计进入的进货价,结果为10000-4000=6000,以此类推!


PS:此公式只是提供一个思路,在实际工作中可能受限于计算量和EXCEL最大行数的限制,公式有一定局限,如此公式中进货不是总数,比如有两位小数,公式计算量将扩大100倍,改为:
  1. =SUM(LOOKUP(ROW(INDIRECT("1:"&SUM(D$2:D2)*100)),MMULT(N(ROW($1:1)>TRANSPOSE(ROW($1:1))),B$2:B2/TEXT(C$2:C2,"0;;1"))*100+1,C$2:C2))%-SUM(E$1:E1)







公式法实现先进先出法.rar
2楼
飞虎
不是很懂说的是什么意思
3楼
cimil
我来了~~~嘿嘿~~











要为花心付出代价 恩典QQ皮肤 QQ透明皮肤 QQ透明皮肤教程 如果等待只能成为等待
4楼
amylee
   thanks a lot
5楼
nuannuanfirst
完全没有看懂~
6楼
dreamofheart
好东西,学习一下。。
7楼
jianzhanchou
感谢分享

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap