سؤال

ولدي بيانات هذا النموذج:

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

وليس هناك ترتيب. وهذه الفئات هي غير معروفة في وقت الترجمة. أريد ماكرو VBA للتنقل عبر المدى، إخراج قائمة القيم متميزة، مع المجاميع الفرعية لكل منها. للبيانات المذكورة أعلاه، فإنه تبدو مثل هذا:

Category      Total Amount
Dues          $224
Donations     $55

وكيف يمكنني أن أفعل هذا؟ أيضا، هل هناك طريقة لجعل المدى الكلي في كل مرة يتم تحديث الجدول أعلاه، أو هل من الضروري للمستخدم أن ينقر على زر؟

هل كانت مفيدة؟

المحلول

وأنت قد تحتاج إلى استخدام المدمج في Excel ميزة للقيام بذلك. حلقات يمكن أن يستغرق وقتا طويلا ويكون مشكلة إذا كان لديك الكثير من القيم إلى حلقة من خلال.

وشيء من هذا القبيل ما يلي قد تحصل بدأت في إنشاء جدول محوري (من 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

وهذا هو لالمجاميع الفرعية (على الرغم من أنني أفضل بكثير الجداول المحورية) http://msdn.microsoft.com/en-us /library/aa213577(office.11).aspx


وتحرير: أنا نعيد قراءة ولها الأفكار التالية. إعداد جدول محوري على ورقة منفصلة (دون استخدام أي رمز) ثم ضع التعليمات البرمجية التالية على ورقة لديه الجدول المحوري بحيث الجدول سيتم تحديث كل مرة يتم تحديد ورقة.

    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

وتحرير # 2 تحديث كافة الجداول المحورية على ورقة http://www.ozgrid.com/VBA/pivot-table-refresh. هتم

Private Sub Worksheet_Activate()    
    Dim pt As PivotTable

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

وصلة لديها خيارات متعددة على كيفية تحديث الجداول المحورية في ورقة / المصنف.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top