Excel VBA中自动过滤器的动态嵌套循环

时间:2011-08-23 03:11:54

标签: excel vba

我有一个程序设置来吐出一个特定的摘要。现在我想采用该程序并允许它接受用户输入的范围。虽然我使用的是3D数组来存储数值,但我在概念上很难让我更进一步。

远离我的工作电脑,但它的类似,

Dim array1(3) As String 'Fill it with some values like Group1, Group2, Group3...
Dim array2(4) As String 'Again the next level with some values like NY, PA,..., Total
Dim arVal(3,5,4) as Long 'For each Group 1, it will summarize 5 fields for each item in arr2

For i = LBound(array1) To UBound(array1)
   Autofilter based on array1
   For j = LBound(array2) to UBound(array2)
      If Not j = 4
          Autofilter based on array2
      EndIf
      arVal(i, 0, j) = Value
      arVal(i, 1, j) = Value
      ...
   Next j
Next i

我的一个想法是使用链表,其中将有第一个列表,其中每个后续列表将链接到列表中的每个节点。唯一的问题是我只是在概念上学习了C ++中的链表,所以虽然这可能是一个解决方案但我不知道如何在VBA中实现它。

增加:

  

array1 = {Group 1,Group 2,.... Total}
  array2 = {东北,西,东南......}   arVal(1,1,1)=对于东北地区第1组内的所有人,购买的马铃薯总和(值1)
  arVal(1,1,2)=对于东北地区第1组内的所有人来说,唯一的人数(值2)

然后继续

  

arVal(1,2,1)=对于西部地区第1组内的所有人来说,马铃薯之和......   等等,对于每个小组,我想总结该小组中的每个区域。

如果我想在区域下动态添加更多子类别,则会出现问题。

所以我猜主要问题是如果给定一个整数,创建一个等于该整数的嵌套循环,使得:

If i = 2
{ For Each item in Group
     For Each item in Regions
         some function
}
If i = 3
{ For Each item in Group
     For Each item in Regions
        For Each item in NextSubcategory
           some function
}

虽然我可以限制子类的数量并且可以使用switch语句,但如果是动态的,程序将更加健壮。如果我尝试使用多维数组来存储值,那么还有即将发生的动脉瘤。

1 个答案:

答案 0 :(得分:0)

关于VBA中链接列表的主题,这可能对您有用。

http://www.cpearson.com/excel/classes.aspx

然后,您可以按照您在C ++中使用的方法,使用VBA类创建链接列表。

修改:这也有助于Link