计算出售存货/股票的利润/资本收益 [英] Calculate Profit/Capital Gains on Sold Inventory/Shares

查看:36
本文介绍了计算出售存货/股票的利润/资本收益的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一张Google表格(适用Excel公式),其中包含2000笔交易,其结构如下:

Link to Google Sheet with example calcs here.

我需要计算利润(即FIFO资本收益),并将此金额放在第5栏(如图所示)。这既可以使用传统公式实现,也可以使用Google App脚本实现。最好是在Google Sheets中。

我发现很难通过公式将卖出订单与买入相匹配,因为有些卖出订单会被拆分到多个买入行中。如果有人能提供撞击这个问题的公式或解决方案,我们将不胜感激。This is an updated question to the original here.

推荐答案

初步上下文

下面的屏幕截图指的是:

Google Sheetshere

重要更新:Re:2000多行,请参阅我上一条评论中的链接(对于OneDrive模板,s.t.过期,此建议书底部有错误&太大而无法导入的屏幕截图)

仅供参考:(Office 365-Excel-FNS比如‘过滤’等,所以#名字!打开此链接后将无处不在;不过,共享此链接应可作为在正确版本的Excel中复制上述屏幕截图的方便方法)


要求

  1. Office 365
  2. 右侧有足够的空间或能够根据需要使用额外的纸张进行计算。

方法

高级|外卖

·依赖于另外两个表:数量"耗尽"表(此处-G:P)和相应表。利润向量(此处-R:Z)

·可以探索压缩表示法(2x2表,每个汇总表,此处:第19:32行)以简化问题(尽管这些仍在进行中[‘WIP’])

·VB也可能是有吸引力的替代方案

低级|过程性

  1. 如果没有异常复杂的情况,无法找到单个单元格函数(但是,我怀疑这是可能的,例如使用FilterXML?)
  2. 数量标签调换过滤负数(灰色阴影,G3:J3)
  3. 这些值依次耗尽(从左到右,即依赖于数据按日期升序排序(在此图中,数据首先按‘水果’排序,因为这些数据在利润计算的上下文中假定是独立的)。
  4. 例如,-5数量(G3)偏移+10(B3)得到+5,而+5又导致-35数量(H3)得到-30。不能进行进一步的贡献(从左到右);下一行(5):+20有效(给定),不抵消-5(G3,已"报销",因此抵消20抵消-30(H4)以获得-10收益率,以此类推。
  5. 为容纳更长的水果/利润列表而设置的工作表
  6. 应用于差价的剩余‘数量’(~G:J)结果表,产生‘利润向量’(R:U),再与相应的负数相加,得出利润得分(黄色阴影单元格)

函数

突出功能(所有功能都应该在Google Sheet中提供,但为了完整起见):

1)利润计算。(E4,向下拖动):

=IF(B4<0,SUM(INDEX($R$4:$AA$13,0,MATCH(A4&C4,$R$2:$AA$2&$R$3:$AA$3,0))),"")

可以根据需要向下/向右拖动(在本例中,转到:z13)

2)数量表-内容(G4)

=IF($A4=G$2,IF(G$3<>"",IF(G$2=E$1,IF($B4<0,IF(G3<0,G3,0), IF(E4<0,0,E4)+IF(G3<0,G3,0)), IF(G$3<>"", IF($B4<0,IF(G3<0,G3,0),$B4 + IF(G3<0,G3,0))))),G3)

3)数量表头(G2、G3)

=MID(TRANSPOSE(FILTER(A4:A13&B4:B13,B4:B13<0)),1,SEARCH("-",TRANSPOSE(FILTER(A4:A13&B4:B13,B4:B13<0)))-1)

=-1*MID(TRANSPOSE(FILTER(A4:A13&B4:B13,B4:B13<0)),SEARCH("-",TRANSPOSE(FILTER(A4:A13&B4:B13,B4:B13<0)))+1,LEN(TRANSPOSE(FILTER(A4:A13&B4:B13,B4:B13<0))))
根据需要/能够向右拖动(此案例已拖至COL)。p)

4)利润表-内容(R4,向下/向右拖动)

=IF(R$2<>"",IF(G3>0,0,IF(G4>0,ABS(G3),G4-G3))*(R$3-$C4),"")

5)利润表头(R2、R3):

=MID(TRANSPOSE(FILTER(A4:A13&"-"&$C$4:$C$13,B4:B13<0)),1,SEARCH("-",TRANSPOSE(FILTER(A4:A13&"-"&$C$4:$C$13,B4:B13<0)))-1)

=1*MID(TRANSPOSE(FILTER(A4:A13&"-"&$C$4:$C$13,B4:B13<0)),SEARCH("-",TRANSPOSE(FILTER(A4:A13&"-"&$C$4:$C$13,B4:B13<0)))+1,LEN(TRANSPOSE(FILTER(A4:A13&"-"&$C$4:$C$13,B4:B13<0))))

杂项

  • 派生和探索的替代解决方案包括三角形框架 (第17-32行)。
  • 这些表格列出了值ASSOC之间的交互作用。 有正负量正/负量 (和线芯。日期)
  • 需要注意的是,这些都是不必要的(就功能而言,前一个‘节’

继续按照以前的思路.

6a)第一个汇总表(数量):行标题和列标题(分别按A22键向下拖动,C19键向右拖动):

=FILTER(D4:D13,1*IF($A$21="*",1,(A4:A13=$A$21))*(B4:B13<0))

=TRANSPOSE(FILTER(D4:D13,1*IF($A$21="*",1,IFERROR((A4:A13=$A$21),1))*(B4:B13>0)))

6b)第一个汇总表(数量):运行合计(c19,根据需要向下/向右拖动,本例中:到p19)

=SUM($C21:C21,$B22#)

6c)第一个汇总表(数量):内容(c22,可根据需要拖下或今晚)

=IF(OR(C$20="",$A22=""),"",IF($A22>C$20,MAX(0,C21+MIN(0,SUM($B22:B22))),C21))

7)第二汇总表(利润):c29,不可拖拽

=MIN(C$21,C$21+$B22)*($B29-C$28)

注意;第二个汇总表(行/列标题)的其他功能紧跟在第一个之后。此外,在水果选择单元格(A21)中放置‘*’将返回ALL(如前所述,这仍是在制品)。


更大上传的屏幕截图:

这篇关于计算出售存货/股票的利润/资本收益的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆