Frage

Ich habe Daten dieser Form:

Category      Source      Amount
Dues          FTW         $100
Donations     ODP         $20
Donations     IOI         $33
Dues          MMK         $124

Es gibt keine Sortierreihenfolge. Die Kategorien sind unbekannt bei der Kompilierung. Ich mag einen VBA-Makro, um durch den Bereich, Ausgabe einer Liste mit verschiedenen Werten, mit den Zwischensummen für jeden. Für die oben genannten Daten, würde es wie folgt aussehen:

Category      Total Amount
Dues          $224
Donations     $55

Wie kann ich das tun? Auch ist es eine Möglichkeit, das Makro jedes Mal, wenn die oben stehende Tabelle zu machen aktualisiert wird, oder ist es erforderlich, dass der Benutzer auf eine Schaltfläche klicken?

War es hilfreich?

Lösung

können Sie möchten ein in Excel integriert verwenden verfügen, dies zu tun. Looping kann eine lange Zeit in Anspruch nehmen und problematisch sein, wenn Sie eine Menge von Werten einer Schleife durch haben.

So etwas wie die folgenden können Sie zum Erstellen einer Pivot-Tabelle erhalten begonnen (von http: //www.ozgrid.com/News/pivot-tables.htm )

Sub MakeTable()
Dim Pt As PivotTable
Dim strField As String

    'Pass heading to a String variable
    strField = Selection.Cells(1, 1).Text

    'Name the list range
    Range(Selection, Selection.End(xlDown)).Name = "Items"

    'Create the Pivot Table based off our named list range.
    'TableDestination:="" will force it onto a new sheet
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
        SourceData:="=Items").CreatePivotTable TableDestination:="", _
            TableName:="ItemList"

    'Set a Pivot Table variable to our new Pivot Table
    Set Pt = ActiveSheet.PivotTables("ItemList")

    'Place the Pivot Table to Start from A3 on the new sheet
    ActiveSheet.PivotTableWizard TableDestination:=Cells(3, 1)

    'Move the list heading to the Row Field
    Pt.AddFields RowFields:=strField
    'Move the list heading to the Data Field
    Pt.PivotFields(strField).Orientation = xlDataField
End Sub

Dies ist für Teilsumme (obwohl ich viel lieber Pivot-Tabellen) http://msdn.microsoft.com/en-us /library/aa213577(office.11).aspx


EDIT: Ich las und haben die folgenden Gedanken. Richten Sie die Pivot-Tabelle auf einem separaten Blatt (ohne Code zu verwenden), dann setzen Sie den folgenden Code auf dem Blatt, dass die Pivot-Tabelle hat, so dass die Tabelle jedes Mal das Blatt aktualisieren ausgewählt ist.

    Private Sub Worksheet_Activate()

    Dim pt As PivotTable

        'change "MiPivot" to the name of your pivot table
        Set pt = ActiveSheet.PivotTables("MyPivot")

        pt.RefreshTable

    End Sub

Edit # 2 Aktualisieren Sie alle Pivot-Tabellen auf dem Blatt http://www.ozgrid.com/VBA/pivot-table-refresh. htm

Private Sub Worksheet_Activate()    
    Dim pt As PivotTable

    For Each pt In ActiveSheet.PivotTables
        pt.RefreshTable
    Next pt
End Sub

Der Link hat mehrere Optionen, wie Pivot-Tabellen in dem Blatt / Arbeitsmappe zu aktualisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top