【问题标题】:Median Selling Price Excel Table平均售价 Excel 表
【发布时间】:2016-11-14 13:31:12
【问题描述】:

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

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

我想比较平均售价和中位数售价,所以我正在寻找一个快速公式来准确计算中位数。

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

【问题讨论】:

    标签: excel


    【解决方案1】:

    如果不编写自己的 VBA 函数来执行此操作,则可以采用多种方法。

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

    所有蓝色单元格都是公式。

    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()MEDIAN 函数的范围参数,可以改进此方法以考虑不同数量的产品和数据点。当然,IJ 列中的相邻单元格可以使用一个公式进行组合 - 为了便于说明,我将它们分别显示。

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

    【讨论】:

      【解决方案2】:

      我认为没有办法绕过妥协。要么使用大量辅助单元格,要么让表格按值排序。

      1. 辅助细胞:

      F4:AS6中的公式:

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

      D2中的公式:

      =MEDIAN(F4:AS6)
      
      1. 排序:

      F4 中的公式向下:

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

      D2中的公式:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-11-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多