2016-11-30 23 views
0

VBAで異なる数値の平均値を計算する必要がありますが、複雑になり、次に何をすべきかわかりません。VBAの平均値を計算する

私はGoogleに問題の潜在的な解決策を見つけたが、関連するものは見つかりませんでした。 ...

  • 非固有の番号です:

    Table example

    各ID:

    は、ここに私のテーブルです。

  • ...関連する値があります。

各IDの平均値は、VBAで計算する必要があります。 'ID1' のIDで

  • 値は2,3および4であるので、 'ID2' のIDで3
  • 値の平均値を有することは、両方とも4でありますそのため4
  • ...

の平均は、私が今持っている何列全体の平均値を算出しているのいずれか、または単に値を繰り返します。

私は非常に助けと助言に感謝します。

+0

こんにちはに役立ちます。これを行うためにピボットテーブルを使用することを検討しましたか?値の列をドラッグすると、値フィールドの設定が「平均」に変更されます。 –

+0

@ wilson88ありがとうございます。私はそれを使用しようとします。しかし、私の仕事によれば、私はVBAでこれを行う必要があります。私はVBAでいくつかの計算をしており、これもまたその一部にする必要があります。 –

+0

こんにちは、@ wilson88で提案されているように、VBAを作成してピボットテーブルを作成し、VBAを使用してvlookup式を追加すると、ピボットテーブルから希望の列に平均を引きます。 –

答えて

0

あなたは、VBAソリューションにあなたの心を設定している場合(IDによってユニークでないように)このソリューションは、あなたが投稿の例では、あなたのテーブルの行を保持します

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 

(あなたの例のための)トリックを行う必要があり、この1 ...

+0

非常にありがとうございます。完璧に動作します。今私は私の計算で終わることができます:) –

0

wilson88あなたは以下のことを試みることができる勧めとしてあなたは、ピボットテーブルを使用していなかった場合は、

はそれに全く重複のIDを持っていないデータセットからのリストを作成します。

このリストの横にある列には、各IDのデータセットの合計を得るsumif式を使用できます。

次に、この横の列で、countif式を使用してユーザーIDが表示される回数をカウントできます。次にsumif列をcountif列で除算して平均値を得ることができます。

あなたはこの考えを得れば、あなたは以下の

= SUMIF(「ID範囲」、「ID」、「合計範囲」)/ COUNTIF(「ID_RANGE」として一つのセルに数式を組み合わせることができ、 "ID")

これはピボットテーブルを手動で作成する方法です.VBAを使用して数式を作成することができます。

Sheet1.range( "A1:A100")。値=「= enterformulahere」

0

また、A1にIDを使ってユニークなIDの

イムを見つけるために、配列数式を使用することができます。A10とB1の私の値を:

B10 D1でこの配列を使用します: D10

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

は、単純なSUMIF/COUNTIF、上記のように私に続いユニークなIDを与える

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

enter image description here

希望これは