使用基于类别的vba拆分列表

时间:2014-03-20 19:17:27

标签: excel vba excel-vba

我有一个扁平的Excel列表,其数据可以分为三类(项目,活动和计划)

使用vba我希望拆分列表,以便首先显示项目,然后重复显示项目的标题,然后重复标题,并在1个工作表中显示所有计划< / p>

实施例

Description   Type 
Project a       project 
Project b       project
Maintenance a   activity
Project c       project
Initiative 1    initiative

分成

Description Type 
Project a       project
Project b       project
Project c       project

Description     Type
Maintenance a  activity  

Description           Type
Initiative 1    initiative

是否有任何VBA代码可以实现这一目标?

问候 吉尔特

1 个答案:

答案 0 :(得分:0)

这需要一个简单的循环函数来检查项目类型并将其写入另一个工作表。假设Sheet1是原始列表的位置而Sheet2是新列表的位置,您可以实现类似下面的函数。您可以使用第一列上的counta等工作表函数来获取行数。您将在主子例程中运行此函数,为ItemType输入“project”,“activity”等。对于计数器,您可以获取CopyVals的返回值并将其反馈到每次。

Function CopyVals(ItemType As String, counter As Integer)
    For j = 2 To numRows + 1
        Sheet2.Cells(counter, 1) = Sheet1.Cells(1, 1)     'Write a header line
        Sheet2.Cells(counter, 2) = Sheet1.Cells(1, 2)
        counter = counter + 1
        If Sheet1.Cells(j, 2) = ItemType Then             'Copy items into new list
            Sheet2.Cells(counter, 1) = Sheet1.Cells(j, 1)
            Sheet2.Cells(counter, 2) = Sheet1.Cells(j, 2)
            counter = counter + 1
        End If
    Next j
    counter = counter + 1                                 'Blank line in between
    CopyVals = counter                                    'Return counter value
End Function