如何检查重复行并计算excel文件中的行?

时间:2013-05-08 16:43:47

标签: excel excel-2007 excel-formula excel-2010 weighted-average

我有一个excel文件,其中包含以下数据

CUSIP   Quantity  Date           Price
AF0      500000   5/6/2013      1
AE4      400000   5/6/2013      1.0825
AE4      500      5/6/2013      1

我需要检查列CUSIPDate 如果我对同一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文件中实现此目的?

1 个答案:

答案 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:糟糕,提出错误的参考。现在修好了。