我有一个excel文件,其中包含以下数据
CUSIP Quantity Date Price
AF0 500000 5/6/2013 1
AE4 400000 5/6/2013 1.0825
AE4 500 5/6/2013 1
我需要检查列CUSIP
和Date
如果我对同一CUSIP
重复date
,那么我需要进行以下计算。
1.需要为它们添加
Quantity
而不是显示重复记录,只需要显示一条记录(数量总和)。2.需要对Price进行计算,如下所示
NewPrice = ((400000 * 1.0825) + (500 * 1.00))/(400000 + 500) = 1.08148
例如,在使用上述数据时 需要显示输出
CUSIP Quantity Date Price
AF0 500000 5/6/2013 1
AE4 400500 5/6/2013 1.082397004
如何使用LOOKUP在excel文件中实现此目的?
答案 0 :(得分:1)
好的,经过一番研究(顺便提一下有趣的问题!),我想出了这个:
=IF(COUNTIF($A$2:A2,A2)>1,"",SUMIF(A:A,A2,B:B))
=IF(COUNTIF($A$2:A2,A2)>1,"",SUMPRODUCT(--(A:A=A2),B:B,D:D)/SUMIF(A:A,A2,B:B))
分别将它们放在单元格D2和E2中(这是Price
之后的下一列和CUSIP AF0
的行)。
并填写工作表的底部以获得加权平均价格或每个CUSIP。
第一个公式为您提供CUSIP的总数量,第二个公式为您提供平均价格。
计算后复制并粘贴这两列的值。
放置过滤器并删除总数量和平均价格为空的所有行,然后排序以使工作表整洁。
如果这适合您,请告诉我!我在您的示例数据上尝试了它,它似乎正在工作。这是我第一次使用SUMPRODUCT
^^;
SUMPRODUCT(--(A:A=A2)
该位返回A列中的行,它等于行的CUSIP。
SUMPRODUCT(--(A:A=A2),B:B,D:D
这个附加位告诉excel将上面找到的每个返回行的B和D列中的值相乘,SUMPRODUCT
将每个结果加在一起。
修改强>
我其实忘记了约会。您可以添加辅助列,在其中生成标识符以分隔不同的日期。要做到这一点,你必须制作一个concatenate
。
因此在单元格F2中,您输入:
=CONCATENATE(A2,C2)
在细胞D2和E2的公式中,您必须更改它们,使它们变为:
=IF(COUNTIF($F$2:F2,F2)>1,"",SUMIF(A:A,A2,B:B))
=IF(COUNTIF($F$2:F2,F2)>1,"",SUMPRODUCT(--(A:A=A2),B:B,D:D)/SUMIF(A:A,A2,B:B))
reEDIT:糟糕,提出错误的参考。现在修好了。