我分析在Excel電子數據表的數字數據,每行包含數據,其是在一式三份的一個又一個柱(從左到右,請參閱Excel數據集圖片)。對於每一行,總共可以有30-180列(因此每行10到60個樣本一式三份)。另外,可以有10-180行的數據。我希望VB代碼在每第三列之後插入一列(從D列開始),並在該新列中計算三個行值的CV [= STDEV(D3:F3)/ AVERAGE(D3:F3)]]列(D3/E3/F3),並在插入列的底部計算該列的所有CV的平均值(請參閱處理的Excel數據集圖片)。由於我的數據集有不同數量的列(但總是以3個爲一組),並且我還希望代碼能夠識別它何時到達列的末尾由於行數也不同,所以在「有數據」的行上結束。以下是開始的Excel數據集和已處理的Excel數據集的圖片。我查看了搜索中出現的很多相關的回答問題,但沒有一個適合這個應用程序,而且我對編寫代碼的知識很少。感謝您的幫助,非常感謝。的Excel /插入柱和計算CV(STDEV /平均),然後計算CV的平均該列
回答
嘗試下面的代碼...只是改變工作表名稱到你擁有的任何表名稱。
Option Explicit
Function STDEV_AVG()
Dim ws As Worksheet
Dim iRow As Integer
Dim iCol As Integer
Dim iLastrow As Long
Dim iLastCol As Long
Dim rng1 As Range
Set ws = ActiveWorkbook.Sheets("sheet5")
Sheets(ws.Name).Activate
With ws
iLastrow = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
iLastCol = Cells.Find(What:="*", After:=Range("A1"), SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).column
End With
If iLastCol < 6 Then
MsgBox "There must be a minimum of 6 columns, else this format seems incorrect!"
End If
For iCol = iLastCol + 1 To 7 Step -3
ws.Cells(1, iCol).Select
ActiveCell.Offset(1).EntireColumn.Insert (xlShiftToRight)
Cells(2, iCol) = "StdDev"
For iRow = 3 To iLastrow
If Cells(iRow, iCol - 1) <> "" Then
Set rng1 = ws.Range(Cells(iRow, iCol - 3), Cells(iRow, iCol - 1))
'ws.Range(Cells(iRow, iCol - 3), Cells(iRow, iCol - 1)).Select
Cells(iRow, iCol).Formula = "=STDEV.P(" & rng1.Address & ")"
End If
Next iRow
Set rng1 = ws.Range(Cells(3, iCol), Cells(iLastrow, iCol))
'ws.Range(rng1.Address).Select
Cells(iLastrow + 1, iCol).Formula = "=Average(" & rng1.Address & ")"
Next iCol
End Function
嗨韋恩,我錯誤地描述了我想要的STDEV,真的很想CV(STDEV /平均; STDEV (D3:F3)/ AVERAGE(D3:F3))。我試圖修改你的代碼從計算STDEV到CV,但沒有任何運氣。你的幫助將再次得到真正的讚賞。 – Bill
然後嘗試用 「=(STDEV(」 &rng1.Address& 「))/平均值(」 &rng1.Address& 「)」 代替 「= STDEV.P(」 &rng1.Address& 「)」 這導致STDEV/AVERAGE –
好的,那是有效的,我碰到的唯一問題是當我將這個宏應用到一個Excel文件,並且它已經運行了一個宏並離開#DIV/0時!對於它無法計算的值,在我替換所有#DIV/0之前,這個宏不會在這些文件上運行!與0.0,然後它運行完美。 – Bill
- 1. 計算平均
- 2. 計算平均
- 3. 平均計算
- 4. Excel vba計算列的平均值
- 5. 計算平均值的平均值
- 6. 計算平均值
- 7. 計算平均值?
- 8. T-SQL平均值計算
- 9. 計算列的平均值,然後使用Google Spreadsheet刪除列
- 10. 在Excel中計算移動平均線
- 11. Excel VBA - 簡單平均計算
- 12. 計算Lisp中的平均分和平均分
- 13. 計算div標記的平均高度和平均寬度
- 14. 計算移動平均數
- 15. 計算條件平均值
- 16. 計算實際平均值
- 17. PHP:計算平均值3
- 18. 計算平均成本
- 19. 計算MBPS - 平均值
- 20. Rails計算平均值belongs_to
- 21. RavenDB計算平均值
- 22. MySql計算平均分
- 23. 計算平均時間
- 24. 熊貓:計算平均值
- 25. 計算移動平均MySQL?
- 26. 貓鼬計算平均
- 27. 複雜平均值計算
- 28. 如何計算平均值?
- 29. 計算平均明智
- 30. 計算滑動平均值
什麼是'數據結束'的'規則'?行或列中的空白/空單元格值? –
嗨韋恩,感謝尋找這個,我的數據規則的結束是一個「空/空單元格的行或列的值」 – Bill