作者:绿色风
分类:生产管理
时间:2022-08-18
浏览:182
楼主 天南地北 |
Q:如何用公式实现先进先出统计进货价? 如图所示,根据汇款总额和单价变动情况,来计算每次进货总价,具体要求及计算说明如下图所示
A:在E2输入如下数组公式:- =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得到100,B9/C9得到100,这样我们构建一个250个200然后100个300,再100个400的一维数组,再根据D列的累计进货来获取新构建的数组的一部分的和,例如公式下拉到E3的时候就是求新构建的数组前20+30项的和=50*200,然后减去前面已经统计进入的进货价,结果为10000-4000=6000,以此类推!
PS:此公式只是提供一个思路,在实际工作中可能受限于计算量和EXCEL最大行数的限制,公式有一定局限,如此公式中进货不是总数,比如有两位小数,公式计算量将扩大100倍,改为:
- =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总版主之一