Thema Datum  Von Nutzer Rating
Antwort
23.11.2016 14:37:37 Conrad
NotSolved
26.11.2016 22:16:11 Mackie
NotSolved
27.11.2016 10:33:41 Gast34625
NotSolved
Blau VBA: Blockweise Mittelwert bilden und in neue Tabelle
27.11.2016 11:12:29 Gast34625
NotSolved
27.11.2016 12:03:40 Mackie
NotSolved

Ansicht des Beitrags:
Von:
Gast34625
Datum:
27.11.2016 11:12:29
Views:
876
Rating: Antwort:
  Ja
Thema:
VBA: Blockweise Mittelwert bilden und in neue Tabelle

Hallo Conrad,

hier mal ein Ansatz. Schau ihn dir an und versuche ihn nachzuvollziehen. Bei Unklarheiten einfach fragen.

Hier noch ein Beispiel zur Ausgabe mittels Debug.Print:

Option Explicit 'erzwingt Deklaration aller verwendeten Variablen

Sub Mittelwert()
  
  Dim rngZielblattZelle   As Excel.Range
  Dim rngBasisBereich     As Excel.Range
  Dim rngBereich          As Excel.Range
  Dim i                   As Long
  
  With tblZieldaten
    'letzte belegte Zelle in Zielblatt Spalte A (von unten aus) suchen
    Set rngZielblattZelle = .Cells(.Rows.Count, "A").End(xlUp)
    'wir brauchen die leere Zelle unter der gefundenen Zelle
    If Trim$(rngZielblattZelle.Value) <> "" Then Set rngZielblattZelle = rngZielblattZelle.Offset(1)
  End With
  
  With tblBasisdaten
    'Hier wird davon ausgegangen, dass die Daten in Spalte A, sowie in Zeile 1 unterbrechungsfrei (!!)
    'mit Inhalt befüllt sind, um so den >vollständigen< Datenbreich zu ermitteln.
    Set rngBasisBereich = .Range(.Range("A1").End(xlDown), .Range("A1").End(xlToRight))
  End With
  
  For i = 1 To WorksheetFunction.RoundUp(rngBasisBereich.Rows.Count / 6, 0)
    
    'den für die Mittelwertsbildung zu betrachenden Bereich referenzieren
    Set rngBereich = rngBasisBereich.Resize(6).Offset(6 * (i - 1))
    
    'die nachfolgende Codezeile kann man auskommentieren oder löschen. Sie dient nur
    'zur Veranschaulichung.
    Debug.Print rngBereich.Address(0, 0); Tab(12); " | Mittelwert = " & WorksheetFunction.AverageIf(rngBereich, ">0"); Tab(50); " -> " & rngZielblattZelle.Address(0, 0, External:=True)
    
    'Mittelwert bilden und in die Zieltabelle schreiben
    rngZielblattZelle.Value = WorksheetFunction.AverageIf(rngBereich, ">0")
    
    'Zelle für nächsten Mittelwert referenzieren
    Set rngZielblattZelle = rngZielblattZelle.Offset(1)
  Next
  
End Sub

Gruß


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
23.11.2016 14:37:37 Conrad
NotSolved
26.11.2016 22:16:11 Mackie
NotSolved
27.11.2016 10:33:41 Gast34625
NotSolved
Blau VBA: Blockweise Mittelwert bilden und in neue Tabelle
27.11.2016 11:12:29 Gast34625
NotSolved
27.11.2016 12:03:40 Mackie
NotSolved