Excel数据处理技巧:求数据去掉N个最高、M个最低后的平均值
修法布施得聪明智慧,多分享让生活更美好。上次分享了《Excel怎样处理数值在某个范围内查找对应的数值》,介绍了VLOOKUPRV自定义函数处理方法,下面分享求数据去掉N个最高、M个最低后的平均值处理方法。
步骤一:准备工作
1. 首先打开Microsoft Office Excel 2007,新建文档并保存文件名为《Excel怎样求数据去掉N个最高、M个最低后的平均值.xlsm》(演示文件,下面代码复制到能运行宏的工作簿都可以)。
2. 按下快捷键ALT F11打开VBE(宏)编辑界面,然后点击菜单栏【插入】,选择【模块(M)】。
3. 在模块中插入以下代码:
```vba
Option Base 1
Function AVERAGENM(mb As Range, n, m)
Dim n1, m1, mc(), mc1(), md, mf(), k As Long, i As Long, j As Long, nk As Long
Dim k1 As Long, mb1 As Range
On Error Resume Next
n1
If <> 0 Then
n1 n
End If
m1
If <> 0 Then
m1 m
End If
k
ReDim mc(k)
j 0
For Each mb1 In mb
If mb1.Text <> "" And IsNumeric() Then
j j 1
mc(j)
End If
Next mb1
ReDim mc1(j)
For i 1 To j
mc1(i) mc(i)
Next i
If j > n And m Then
md Split(SZSX(mc1), ";")
AVERAGENM md(0)
nk j - n - m
ReDim mf(nk)
k1 0
For i m To j - n - 1
k1 k1 1
mf(k1) Val(md(i))
Next i
AVERAGENM (mf)
Else
' Other cases handling can be added here if needed
End If
End Function
Function SZSX(m As Variant)
Dim sz As Object, t As Variant
Set sz CreateObject("")
"javascript"
t Join(m, ",")
"function aa(bb){szbb.split(',');(function(a,b){return a-b;});return sz;}"
SZSX sz.eval("aa('" t "')")
End Function
```
步骤二:计算平均值
4. 回到工作表窗口,在需要计算的单元格中输入公式VLOOKUPRV(数据单元格区域地址,除去最大值个数,除去最小值个数)。
5. 填写公式如下:
- 在单元格F2中输入:`AVERAGENM(B1:B15, 3, 4)`
- 在单元格F3中输入:`AVERAGENM(D1:D13, 3, 4)`
步骤三:查看结果
6. 计算完成后,您将获得去掉N个最高和M个最低值后的平均值结果。
如果觉得这篇经验帮到了您,请点击下方的“投票点赞”或者“收藏”支持我!还有疑问的话可以点击下方的“我有疑问”,谢谢啦!
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。