Excel计算含有不同项目个数的加权平均值

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Excel计算含有不同项目个数的加权平均值

在计算学生成绩时会遇到下面的问题:

每一位学生所选的课程不同,导致每个学生的学分数不同,这样计算加权平均分时会出现问题。如图

采用的解决方法是,使用VBA功能,自定义函数。

如上图,点击开发工具>Visual Basic,进入VBA编辑窗口。如果没有“开发工具”选项,请点击文件>选项,进入Excel选项窗口,如下图。点击“自定义功能区”,右侧勾选“开发工具”。

VBA窗口如下图所示

2

1

在图中“1”处空白区域点击右键,选择“插入”>模块,双击新建的模块1,打开程序编辑窗口。注意:图中“2”区域显示为“模块1”.程序代码如下

Function zyRowAverage(a, b)

If a.Columns.Count <> b.Columns.Count Or a.Rows.Count <> 1 Or b.Rows.Count <> 1 Then

MsgBox ("所选单元格必须具有相同的列数(行数),且行数(列数)为1")

Exit Function

End If

s = 0

For i = 1 To a.Columns.Count

s = s + a.Cells(1, i) * b.Cells(1, i)

Next i

m = 0

For i = 1 To a.Columns.Count

If a.Cells(1, i) <> 0 Then

m = m + b.Cells(1, i)

End If

Next i

zyRowAverage = s / m

End Function

Function zyColumnAverage(a, b)

If a.Rows.Count <> b.Rows.Count Or a.Columns.Count <> 1 Or b.Columns.Count <> 1 Then

MsgBox ("所选单元格必须具有相同的行数,且列数为1")

Exit Function

End If

s = 0

For i = 1 To a.Rows.Count

s = s + a.Cells(i, 1) * b.Cells(i, 1)

Next i

m = 0

For i = 1 To a.Rows.Count

If a.Cells(i, 1) <> 0 Then

m = m + b.Cells(i, 1)

End If

Next i

zyColumnAverage = s / m

End Function

含有两个函数,分别计算行平均值(zyRowAverage)和列平均值(zyColumnAverage)。

下面使用该函数计算加权平均值。如下图,在G3单元格内输入公式如红圈内所示。该处使用了符号“$”,是为了后续拖动公式时,权值项保持不变。

关于函数使用的说明:

本函数由燕山大学“zhiying”提供,允许任何单位和个人使用。帮助他人就是帮助自己。

相关文档
最新文档