中位数售价Excel表

时间:2016-07-12 10:45:29

标签: excel

我有一个电子表格,其中包含不同的产品,列出的单位和零售价值,如下例所示

Product  Units  Value
A        10     100
B        15     80
C        30     560

我想将平均销售价格与中位销售价格进行比较,因此我正在寻找一个快速公式来准确计算中位数。

中位数函数需要整个系列,因此对于上面的产品A,我需要10个10个实例等。考虑到我的数据的浓缩形式,我如何快速计算中位数?

2 个答案:

答案 0 :(得分:0)

如果不编写自己的VBA函数,可以采取几种方法。

第一个从压缩频率计数格式扩展数据,以生成完整的观察集。这可以手动或公式化完成。假设后者是必需的,可以使用几列来实现。

Screenshot for first approach

所有蓝色细胞都是公式。

E只是列B的累积,而F是此列的调整版本。列H只是值1到55,即单元格L2给出的观察总数。列I使用MATCH(),其最终参数为1,以匹配H中的每个观察值与F中的调整累积值。列J使用INDEX()函数生成观察值。 (观察1-10具有值100,11-25具有值80,并且26-55在该示例中具有值560)。 MEDIAN()函数用于单元格M2,其中J列为其参数。

通过使用OFFSET函数来控制MATCH()INDEX()和{的范围参数,可以改进此方法以考虑不同数量的产品和数据点{1}}功能。当然,列MEDIANI中的相邻单元格可以使用单个公式进行组合 - 为了便于说明,我已单独显示它们。

第二种方法涉及按值对数据进行排序(因此,在这种情况下,数据行将成为第2行中的产品B,第3行中的产品A和第4行中的产品C)。然后是识别中间观测数(如果观测数是奇数)或中间观测数对(如果观测数是偶数)然后确定对应于这个/这些中间的值的情况。观测(一个或多个)。在此方法中,仍然使用列J中的已调整累积值,而不是显式计算列FI中的值,因为现在每次观察都可以将其限制为中间观察值( S)。

答案 1 :(得分:0)

我认为无法妥协。要么使用大量辅助单元格,要么将表格按值排序。

  1. 辅助细胞:
  2. enter image description here

    F4:AS6中的公式:

    =IF(COLUMN()<COLUMN($F$4)+$B4,$C4,"end")
    

    D2中的公式:

    =MEDIAN(F4:AS6)
    
    1. 排序:
    2. enter image description here

      F4向下的公式:

      =SUM($B$3:B3)+1
      

      D2中的公式:

      =SUM(LOOKUP(INT(SUM(B4:B6)/2+{0.5,1}),F4:F6,C4:C6))/2