Excel數(shù)據(jù)處理技巧:求數(shù)據(jù)去掉N個(gè)最高、M個(gè)最低后的平均值
修法布施得聰明智慧,多分享讓生活更美好。上次分享了《Excel怎樣處理數(shù)值在某個(gè)范圍內(nèi)查找對(duì)應(yīng)的數(shù)值》,介紹了VLOOKUPRV自定義函數(shù)處理方法,下面分享求數(shù)據(jù)去掉N個(gè)最高、M個(gè)最低后的平均值處理方
修法布施得聰明智慧,多分享讓生活更美好。上次分享了《Excel怎樣處理數(shù)值在某個(gè)范圍內(nèi)查找對(duì)應(yīng)的數(shù)值》,介紹了VLOOKUPRV自定義函數(shù)處理方法,下面分享求數(shù)據(jù)去掉N個(gè)最高、M個(gè)最低后的平均值處理方法。
步驟一:準(zhǔn)備工作
1. 首先打開Microsoft Office Excel 2007,新建文檔并保存文件名為《Excel怎樣求數(shù)據(jù)去掉N個(gè)最高、M個(gè)最低后的平均值.xlsm》(演示文件,下面代碼復(fù)制到能運(yùn)行宏的工作簿都可以)。
2. 按下快捷鍵ALT F11打開VBE(宏)編輯界面,然后點(diǎn)擊菜單欄【插入】,選擇【模塊(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
```
步驟二:計(jì)算平均值
4. 回到工作表窗口,在需要計(jì)算的單元格中輸入公式VLOOKUPRV(數(shù)據(jù)單元格區(qū)域地址,除去最大值個(gè)數(shù),除去最小值個(gè)數(shù))。
5. 填寫公式如下:
- 在單元格F2中輸入:`AVERAGENM(B1:B15, 3, 4)`
- 在單元格F3中輸入:`AVERAGENM(D1:D13, 3, 4)`
步驟三:查看結(jié)果
6. 計(jì)算完成后,您將獲得去掉N個(gè)最高和M個(gè)最低值后的平均值結(jié)果。
如果覺得這篇經(jīng)驗(yàn)幫到了您,請(qǐng)點(diǎn)擊下方的“投票點(diǎn)贊”或者“收藏”支持我!還有疑問的話可以點(diǎn)擊下方的“我有疑問”,謝謝啦!