下图A2:G9是数据源,记录的是7天内某宿舍5位成员的进餐记录和所花的餐费。5位成员分别是甲、乙、丙、丁和戊。通常是好几个成员组团进餐,然后餐费平摊。
如果当日有进餐用1表示,未进餐用空白表示。B列的餐费是当日进餐的成员共同的开销。求这7天内,每人分摊餐费的总金额。结果如C10:G10所示。
以6月1日为例说明,当日进餐的只有甲和丙,他们共同花销的餐费是38元,那么甲和丙每人分摊19元。其他6天也是同样的计算方法。然后把每人在这7天内的分摊金额加起来求和就可以了,如下图所示。
1.单个单元格数组公式
在C10单元格输入下面的公式,按ctrl+shift+enter,向右填充。
=SUM($B3:$B9/MMULT(--$C3:$G9,1^ROW(1:5))*C3:C9)
MMULT(--$C3:$G9,1^ROW(1:5))这部分用mmult对C3:G9这个区域的每一行分别求和,得到了每日进餐的人数,结果为{2;2;2;3;1;1;3},如下图H3:H9所示。
--$C3:$G9这部分前面用减负运算是为了将空白单元格变为0,因为mmult的参数必须是数值,如果有空白单元格或文本会出现错误值。
1^ROW(1:5)返回的结果为{1;1;1;1;1},和ROW(1:5)^0是一样的。
$B3:$B9/MMULT(--$C3:$G9,1^ROW(1:5))这部分用共同的餐费除以进餐的人数,得到了进餐的人分摊的金额,结果如下图H3:H9所示。
$B3:$B9/MMULT(--$C3:$G9,1^ROW(1:5))*C3:C9这部分用上一步分摊金额的结果乘以甲每日的进餐数,得到了甲每日的分摊金额,结果如下图H3:H9所示。最后用sum对其求和就得到了7天内分摊的总金额。选中C10:G10单元格,输入下面的公式,按ctrl+shift+enter。
=MMULT(COLUMN(A:G)^0,B3:B9/MMULT(--C3:G9,ROW(1:5)^0)*C3:G9)
这个公式用了2个mmult,其中B3:B9/MMULT(--C3:G9,ROW(1:5)^0)这部分和第1种是完全一样的。
B3:B9/MMULT(--C3:G9,ROW(1:5)^0)*C3:G9这部分用上一部分乘以C3:G9,得到了一个二维数组,结果如下图灰色区域所示。
MMULT(COLUMN(A:G)^0,B3:B9/MMULT(--C3:G9,ROW(1:5)^0)*C3:G9)这部分用mmult对上图灰色区域的每一列分别求和,得到了最后的结果。
https://pan.baidu.com/s/1m1PkBOhFLS7XTtaGvXw0gQ