2017-07-12 4 views
1

Ich habe gerade angefangen, VBA in den letzten zwei Wochen zu lernen, also entschuldigt, wenn dies eine grundlegende Aufsicht ist.Durchschnitt jeder Spalte einer dynamischen Tabelle Excel VBA

Ich versuche, den Durchschnitt von jeder Spalte in einer dynamischen Tabelle zu finden und dann diese Werte (die Durchschnittswerte jeder einzelnen Spalte) in eine Tabelle der Durchschnittswerte in Tabelle3 aufzufüllen. Alle anderen Posts, die ich über Mittelungsbereiche gefunden habe, beziehen sich auf einen bestimmten Bereich (z. B. "A2: A23") und würden dazu führen, dass der durchschnittliche Durchschnitt einer Spalte im Vergleich zum Durchschnitt jeder Spalte einmal eingefügt wird. Dies ist der Code, den ich bisher habe. Jede Rückmeldung, wo es verbessert werden könnte, wird sehr geschätzt.

Sub AVERAGES() 


Set s1 = ThisWorkbook.Sheets("Sheet1") 
Set s3 = ThisWorkbook.Sheets("Sheet3") 

j = 0 

Do While s1.Range("B2").Offset(0, j).Value <> "" 

    i = 0 

    Do While s1.Range("B2").Offset(i, j).Value <> "" 

    s1.Range("B2").Offset(i, j).Select 

    i = i + 1 

    Loop 

Ave = Application.WorksheetFunction.Average(s1.Range(Cells(2, j), s1.Range(Cells(2, j).Offset(i, j)))) 

s3.Range(s3.Range("B2"), s3.Range("B2").Offset(0, j)).Value = Ave 

j = j + 1 

Loop 

End Sub 

Antwort

1

Sie können Formeln direkt in Excel, oder Sie können Ihr VBA-Code dies reduzieren:

Sub AVERAGES() 
    Dim lastCol As Long 
    lastCol = ThisWorkbook.Sheets("Sheet1").Cells(2, Columns.Count).End(xlToLeft).Column 

    With ThisWorkbook.Sheets("Sheet3").Range("B2").Resize(1, lastCol - 1) 
    .Formula = "=Average(Sheet1!B:B)" 
    .value = .value 
    End With 
End Sub 
+1

Nizza, wie spät ist es dort jetzt? –

+0

'@Shairado lol, habe ich vor langer Zeit aufgehört zu sehen: P –

+1

Danke @ A.S.H, das hat sofort funktioniert. Ich schätze deine Hilfe sehr. Ja, ich habe vorher direkte Excel-Formeln verwendet, aber in Kombination mit den anderen Berechnungen, die ich für eine große Tabelle mit dynamischen Daten durchgeführt habe, die aus einer API gezogen wurden, stürzte es immer wieder in die Arbeitsmappe. – overflowing

Verwandte Themen