excel 中的中位数和众数使用多列

Median and mode in excel using multiple columns

我正在为我的统计信息制作电子表格class。它包含一个用数量填充的列和一个用每个数量的频率填充的列。使用这两列和几个公式,可以找到均值、众数、中位数、变异系数、四分位数、四分位数间距、最小值和最大值以及标准差。

问题是为了缩短数量列表,使用频率列。以数量列表为例:10、12、14、15、18、18、10。

注意重复了 18 和 10。我没有在我的数量列中重复这些数量,而是将该数量的频率从 1 增加到 2。这样做的原因是数量数据列表非常大。这意味着我可能有 5000 个数量,可能会减少到 20 个数量,其中每个数量的频率会更高。

问题在于内置的中值和众数函数仅使用 1 列或行,并且不考虑每个数量的频率。

我的问题是:有没有办法同时使用两列来计算中位数和众数?以下是我正在解释的示例。此外,我的包含数量和频率的列可能不会从头到尾填写,这意味着可能有空条目。

Quantity  |  Frequency
  10      |     4
  12      |     6
  11      |     3
  15      |     1
  18      |     10

VS.

Quantity
10
10
10
10
12
12
12
12
12
12
11
11
11
15
18
18
18
18
18
18
18
18
18
18

如果有带有动态数组公式的 Office 365,请使用:

=MEDIAN(INDEX(A2:A6,MATCH(SEQUENCE(SUM(B2:B6),,0),SUMIF(OFFSET(B1,0,,ROW(B2:B6)-MIN(ROW(B2:B6))+1,),"<>"))))

=MODE.SNGL(INDEX(A2:A6,MATCH(SEQUENCE(SUM(B2:B6),,0),SUMIF(OFFSET(B1,0,,ROW(B2:B6)-MIN(ROW(B2:B6))+1,),"<>"))))


如果不是则此数组公式:

=MEDIAN(INDEX(A2:A6,MATCH(ROW($ZZ1:INDEX($ZZ:$ZZ,SUM(B2:B6)))-1,SUMIF(OFFSET(B1,0,,ROW(B2:B6)-MIN(ROW(B2:B6))+1,),"<>"))))

=MODE.SNGL(INDEX(A2:A6,MATCH(ROW($ZZ1:INDEX($ZZ:$ZZ,SUM(B2:B6)))-1,SUMIF(OFFSET(B1,0,,ROW(B2:B6)-MIN(ROW(B2:B6))+1,),"<>"))))

是数组公式,退出编辑模式时需要用Ctrl-Shift-Enter确认,而不是Enter。

假设每个数量仅在其频率旁边出现一次,那么您可以在 MAX 频率上使用 INDEX MATCH 来查找模式:

=INDEX(A2:A6,Match(Max(B2:B6), B2:B6, 0))

当然,如果有多个共享相同最大频率的数量(例如数量 12 也出现在频率 10)

进一步假设您的数量按升序排列,您可以使用矩阵乘法 (MMULT) 计算每一行的总计 运行,并使用 AGGREGATE 获得运行 总数大于或等于总总数一半的最小行。这是中位数:

=AGGREGATE(15, 6, A2:A6/(MMULT(--(TRANSPOSE(ROW(B2:B6))<=ROW(B2:B6)), B2:B6)>=0.5*SUM(B2:B6)), 1)

(供参考,MMULT(--(TRANSPOSE(ROW(B2:B6))<=ROW(B2:B6)), B2:B6) 是计算 运行 总数的位)