Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于类别的vba拆分列表_Vba_Excel - Fatal编程技术网

基于类别的vba拆分列表

基于类别的vba拆分列表,vba,excel,Vba,Excel,我有一个简单的excel列表,其中的数据可以分为三类(项目、活动和计划) 使用vba,我希望拆分列表,使其首先显示项目,然后换行并重复标题以显示活动,然后换行并重复标题以显示“全部在1”工作表中的计划 范例 Description Type Project a project Project b project Maintenance a activity Project c project Initiative 1 initiative

我有一个简单的excel列表,其中的数据可以分为三类(项目、活动和计划)

使用vba,我希望拆分列表,使其首先显示项目,然后换行并重复标题以显示活动,然后换行并重复标题以显示“全部在1”工作表中的计划

范例

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代码来实现这一点

问候
Geert

这需要一个简单的循环函数来检查项目类型并将其写入另一个表中。假设Sheet1是原始列表所在的位置,Sheet2是新列表所在的位置,则可以实现类似以下的功能。您可以通过在第一列上使用类似counta的工作表函数来获取行数。此函数将在主子程序中运行,为ItemType输入“项目”、“活动”等。对于计数器,您可以获取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

欢迎来到SO,请将您的评论放在评论框中,而不是答案框中。转到下面的链接,阅读所有关于“询问”和“回答”的内容