VBA:基于数据创建多个工作簿
我在一张工作表中有一个大数据集VBA:基于数据创建多个工作簿,vba,excel,Vba,Excel,我在一张工作表中有一个大数据集工作表1。数据集被划分为许多其他数据集(Excel中有一些分隔符,如空行或类似的分隔符) 我必须收集这个数据集中的数据,并根据数据创建许多新的工作手册。比如说, COLA COLB Account # Title ACC1 12 ACC2 3 ACC2 3 ----------------empty row divider --------------- Account # Title ACC2
工作表1
。数据集被划分为许多其他数据集(Excel中有一些分隔符,如空行或类似的分隔符)
我必须收集这个数据集中的数据,并根据数据创建许多新的工作手册。比如说,
COLA COLB
Account # Title
ACC1 12
ACC2 3
ACC2 3
----------------empty row divider ---------------
Account # Title
ACC2 12
ACC3 3
ACC1 3
etc.
因此,我需要一份新的ACC1、ACC2、ACC3和所有其他账户的工作表。实际上,帐号列表是在表2中预定义的
此算法是否适合我的需要:
1) 获取每个帐户的所有必要数据,并将其保存在同一工作簿中,例如,保存在一个名为“结果”的工作表中,其中所有数据将按帐户排序
2) 然后使用一些循环或范围或其他方法为每个帐户创建新的工作簿,并在其中复制/粘贴数据
我是一名程序员,但对VBA比较陌生。。。因此,我不确定这是否是可行的算法。我会去掉不需要的行分隔符和带有列标题的行,然后对剩余行进行排序,以便第1列包含所有且仅包含帐号,然后在下一行直到最后一行创建工作簿和复制范围,类似于:
' TODO: Determine intLastRow
curAcc = ""
' TODO: Add target workbook to store rows to
For i = 1 to intLastRow
If ActiveSheet.Cells(i, 1) <> curAcc Then
' TODO: Save and close previous target workbook
' TODO: Add new target workbook
curAcc = ActiveSheet.Cells(i, 1)
End If
' TODO:Save active row from source workbook in target workbook
Next
' Save and close last target workbook
“TODO:确定intLastRow
curAcc=“”
'TODO:添加要将行存储到的目标工作簿
对于i=1到intLastRow
如果ActiveSheet.Cells(i,1)curAcc那么
'TODO:保存并关闭上一个目标工作簿
'待办事项:添加新的目标工作簿
curAcc=ActiveSheet.Cells(i,1)
如果结束
'TODO:将源工作簿中的活动行保存到目标工作簿中
下一个
'保存并关闭上一个目标工作簿