2017-08-10 72 views
0

我想弄清楚如何通过使用来自最终用户的2输入字段来排序数据透视表。目前我只能用一个来做。我现在的代码是:从2输入字段在excel vba中排序数据透视表

Private Sub SortingBox_Change() 
Dim PT As PivotTable 
Dim CB As ComboBox 

Set PT = Worksheets("Tableau Dynamique").PivotTables("LEO") 
Set CB = SortingBox 

If CB.Text = "Asc - % relevé en ligne" Then 
    PT.PivotFields("No Marchand").AutoSort Order:=xlAscending, Field:="% relevé en ligne" 

ElseIf CB.Text = "Desc - % relevé en ligne" Then 
    PT.PivotFields("No Marchand").AutoSort Order:=xlDescending, Field:="% relevé en ligne" 

ElseIf CB.Text = "No Marchand" Then 
    PT.PivotFields("No Marchand").AutoSort Order:=xlAscending, Field:="No Marchand" 

End If 
End Sub 

它工作正常,但我需要每个升序和降序方案的列表条目。我更喜欢设置AutoSort.Order与一个单独的ComboBox设置字段。唯一的问题是,当我尝试这样做时,它告诉我我没有足够的参数。

有谁知道我能做些什么来排序?

+0

你能否进一步澄清你的问题?也许你可以链接到一个图像显示你想要的。 – jeffreyweir

回答

0

嗨,对不起,如果它不明确。同时。我在周末找到了解决方案。对于任何人,如果他们在这里寻找类似的东西,我做了什么。

首先澄清:

我有一个动态表,我想最终用户有一个欢乐的方式进行排序表(没有VBA他们将不得不在主柱去打开排序菜单,然后选择额外的排序选项,而不是选择一堆选项来获得他们想要的内容,并且不太清楚如果你不知道如何执行的操作)。

我选择了放置ComboBox,因此它可以更容易地做这样的排序: ComboBoxImg。对不起它的法语。简而言之,他们将有一个ComboBox来基于(1)字段,(2)订单,(3)枢轴线(基于他们想要的月份)进行排序

为了简化我改为创建的代码每个ComboBox的变量都能够与AutoSort方法进行交互。最终的代码看起来是这样的:

Public Sub Sorter() 
Dim PT As PivotTable 
Dim OrderValue As String 
Dim OrderSort As XlSortOrder 
Dim FieldValue As String 
Dim MonthValue As Integer 
Dim TableName As String 

On Error Resume Next 

TableName = "LEO" 
Set PT = Worksheets("Tableau Dynamique").PivotTables(TableName) 
OrderValue = Range("OrderingBoxValue").Value 
FieldValue = Range("SortingBoxValue").Value 
MonthValue = Range("MonthInt").Value 

If OrderValue = "Ascendant" Then 
    OrderSort = xlAscending 
ElseIf OrderValue = "Descendant" Then 
    OrderSort = xlDescending 
End If 

If MonthValue = 0 Then 
    ActiveSheet.PivotTables(TableName).PivotFields("No Marchand").AutoSort OrderSort _ 
    , FieldValue 
Else 
    ActiveSheet.PivotTables(TableName).PivotFields("No Marchand").AutoSort OrderSort _ 
    , FieldValue, ActiveSheet.PivotTables(TableName).PivotColumnAxis. _ 
    PivotLines(MonthValue), 1 
End If 
End Sub 

基本上,我链接的组合框到另一个片单元和I调用上ComboBox_Change小组。

显然,如果有人认为他们有更高效或整体更好的解决方案,我会很高兴看到它。我对VBA相当陌生,所以我确信我的代码可以改进。