簡體   English   中英

在VBA中計算平均值

[英]Calculate average value in VBA

我需要計算VBA中不同數字的平均值,但是它變得很復雜,我不確定下一步該怎么做。

我求助於Google尋找可能解決我問題的方法,但是沒有找到任何相關的方法。

這是我的桌子:

表例

每個ID:

  • ...是一個非唯一的數字。
  • ...具有關聯的價值。

每個ID的平均值都需要在VBA中計算。

  • ID為“ ID1”的值是2,3和4,因此平均值為3
  • ID為“ ID2”的值均為4,因此平均值為4
  • ...

我現在所擁有的要么計算整個列的平均值,要么簡單地重復該值。

我將非常感謝您的幫助和建議。

很公平。 如果您對VBA解決方案充滿信心,那么這個方法就可以解決問題(例如您的示例)...

Sub Av()

Dim LastRow As Long

LastRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row

For i = 2 To LastRow

    Cells(i, 3).Value = Application.WorksheetFunction.SumIf(Range("A2:A" & LastRow), Range("A" & i), Range("B2:B" & LastRow)) / _
Application.WorksheetFunction.CountIf(Range("A2:A" & LastRow), Range("A" & i))

Next

End Sub

此解決方案將在您發布的示例中保留表格行(按ID非唯一)

如果您不想像wilson88一樣使用數據透視表,可以嘗試以下操作,

從您的數據集中創建一個沒有重復ID的列表。

在此列表旁邊的列中,您可以執行sumif公式來從每個ID的數據集中獲取總和。

然后,在此旁邊的列中,您可以執行一個countif公式來計算用戶ID出現的次數。 然后,您可以將sumif列除以countif列以獲得平均值。

一旦有了這個想法,就可以將公式合並為一個單元格,如下所示

= sumif(“ ID RANGE”,“ ID”,“ sum Range”)/ Countif(“ ID_RANGE”,“ ID”)

這將是生成數據透視表的手動方法,可以使用vba生成公式的表。

Sheet1.range(“ A1:A100”)。value =“ =在此處輸入公式”

您還可以使用數組公式查找唯一ID

我在a1:a10中使用id,在b1:b10中使用我的值

在d1:d10中使用此數組

=INDEX($A$2:$A$10,MATCH(0,COUNTIF($D$1:D1,$A$2:$A$10),0))

給我唯一的ID,然后如上所述,簡單的SUMIF / COUNTIF

=SUMIF($A$1:$A$10,$D1,$B$1:$B$10)/COUNTIF($A$1:$A$10,$D1)

在此處輸入圖片說明

希望這可以幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM