我有一个扁平的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代码可以实现这一目标?
问候 吉尔特
答案 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