我有一张只有两列的表格,日期和利润:
Date Profit
24 - March 25.00
24 - March 19.85
25 - March 5.25
26 - March 6.36
26 - March 10.18
26 - March 35.63
我想计算并在一个单元格中显示平均每日利润。
请记住,当我输入新日期的数据(例如 3 月 27 日 - 3 月)及其利润时,它应该更新平均每日利润单元格。
有些日子我没有销售任何商品;例如,如果我在 3 月 24 日、3 月 25 日和 3 月 27 日都有销售和利润,但 3 月 26 日没有销售,我希望它计算利润,无论我在哪一天是否销售。这意味着,在一个月有 31 天的情况下,无论我在特定日期是否销售商品,它都应该除以 31。这可能吗?
答案1
对于单元格中的日期A1:A25以及单元格中的利润值B1:B25您可以使用以下公式:
=SUM(B2:B25)/SUMPRODUCT(--(FREQUENCY(A2:A25,A2:A25)>0))
结果如图:
当数据超过 25 行时,您需要适当调整公式范围。
公式计算如下:
(Total profit)/ (number of different dates)
编辑
根据要求,要包含介于两者之间的日期(未指定),您可以使用以下命令:
=SUM($B$2:$B$25)/(MAX($A$2:$A$25)-MIN($A$2:$A$25)+1)
(Total profit)/ (days between smallest and largest date in range)
答案2
可以使用来计算利润=SUM(B2:B7)
,并可以用天数来计算,从而=TODAY()-MIN(A2:A7)
可以使用将两者相除的公式,如下所示:
=SUM(B2:B7)/(TODAY()-MIN(A2:A7))
如果最近没有进行销售,则公式将给出随着时间推移而下降的结果,因为它是从第一次销售日期到当前日期计算的。替换TODAY()
为MAX(A2:A7)
将其更改为仅计算从第一次销售日期到最后一次销售日期。
答案3
一种方法是创建第三个隐藏列来计算每个日期的平均值,然后对该列求平均值。在 C2 中输入以下公式,然后将其复制粘贴到最下方,或者至少复制粘贴到足以覆盖将来的条目的位置。如果您将其设为表格,并将 C 列设为计算列,那么表格扩展时,它将自动输入到任何新行的 C 列中。
=IF(OR(COUNTIF(A$2:A2, A2) > 1, NOT(ISNUMBER(A2))), "", AVERAGEIF(A:A, A2, B:B))
首先使用COUNTIF
函数在 A 列上起作用,但只作用到当前单元格。它还会检查 A 列是否为数字,NOT
和ISNUMBER
函数,这样它就不会返回错误(Excel 将日期视为数字)。然后它使用AVERAGEIF
函数对 B 列中具有匹配日期的所有项目进行平均。
这还允许以任何顺序输入日期并解决差距。
现在在另一个单元格中,只需对列取平均值即可=AVERAGE(C:C)
得到平均每日利润。
然后,您可以右键单击 C 列并单击“隐藏”来隐藏该列。需要时,您可以选中 B 至 D 列并右键单击,然后单击“取消隐藏”来取消隐藏该列。