2017-08-22 5 views
-1

私は3つの列と162のデータセット(行)+ヘッダーを持つテーブルを持つシート( "DATA")を持っています。vbaを使用してExcelで条件に基づいて平均を計算する方法

enter image description here

私は列A(「サイト」)におけるサイト名に基づいて、列C(「研修ステータス[%]」)の平均値を計算する必要があります。それは、テーブルがどのように見えるかです。

新しいシート(「概要」)にテーブルを作成するマクロを作成しました。ここでは、各サイトは1回だけ記述されていますが、各サイトの平均「トレーニングステータス」を計算する必要があります。

決勝テーブル:

enter image description here

どのように私は、元のテーブルからのデータに基づいて最終テーブルに正しい値を取得するには、プラス平均は、各サイトのために計算しなければならないという条件を検討することもでき名?もちろん、各サイトには同じ量のデータセットがありません(たとえば、「BRU-Logistics」には3つのデータセットがあり、「FRA-Logistics」には15のデータセットがあります)。

私はいくつかのVBAコードを見つけましたが、正に、私は実際には後ろのロジックを理解できず、必要に応じて渡すことができませんでした。

私のコードは完全ではありません。私は何とか始めようとしましたが、私は迷ってしまいました。

Sub Average() 

Dim rng As Range 
Dim LastRow As Long 
Dim r1 As Long, r2 As Long 
Dim lNoRows As Long 

LastRow = Sheets("DATA").Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row 
Set rng = Sheets("DATA").Range("A2:C" & LastRow) 
lNoRows = rng.Row.Count 

For r1 = 1 To lNoRows 
If rng(r1, 1) = rng(r2, 1) And r1 = r2 Then 

End Sub 

ありがとうございました!

+0

AVERAGEIF() –

+1

を使用して、問題の特定に役立ててください。ありがとう –

答えて

0

これは実際にはVBAを必要としません。セルD2に=AVERAGEIF(A:A,A2,C:C)と入力してコピーします。

+0

あなたの答えのために多くのありがとう。私もこの解決策を試しましたが、サイトの名前を補完するものではありません。つまり、最終テーブルで並べ替えを変更すると、値が正しいサイト名と一致しません。おそらく、それはvlookupを組み合わせるときに機能するでしょう。 –

+0

スクリーンショットを投稿できますか? AVERAGEIFは間違いなく動作するはずです。 – gattoun

関連する問題