2016 - 2024

感恩一路有你

Excel数据处理技巧:求数据去掉N个最高、M个最低后的平均值

浏览量:4762 时间:2024-03-09 16:10:49 作者:采采

修法布施得聪明智慧,多分享让生活更美好。上次分享了《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个最低值后的平均值结果。

如果觉得这篇经验帮到了您,请点击下方的“投票点赞”或者“收藏”支持我!还有疑问的话可以点击下方的“我有疑问”,谢谢啦!

版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。