我有一本工作簿(采购订单日志.xls) 列出了我们本财年的所有维修和维护资金支出。布局如下:
| Date | Req Number | Acct | Vendor # | Vendor Name | Description | Cost |
我需要能够拆分成更小的工作表的数据是帐户(Acct
)列。
最终结果将是几张工作表,其中包含与每个帐户名称(R & M、Op Sup、Well R & M 等)相关的整行信息,每次我输入新信息或通过按钮运行脚本时,这些信息都会更新。最好都放在同一个工作簿中。
我尝试过在该站点上找到的其他代码,但得到的是创建多个工作簿的实例,每个帐户只有 2 或 3 行(电子表格有几百行),然后系统询问我是否要覆盖已创建的工作簿。
我对 VB 的工作原理略知一二,足以编辑现有代码,但不足以编写自己的代码。任何帮助都将不胜感激。
答案1
公式解决方案很难实现/调试,容易出错,并且会大大增加文件大小。 VBA 程序可以分为几个步骤:
- 删除上次运行宏时创建的所有工作表(如果你显示的日志是仅有的工作簿中的工作表,但您可以调整任何内容)
- 获取名称的唯一列表
Acct
(这可以通过循环遍历列中所有使用的单元格并将新项目添加到列表中或通过更优雅的方式来完成) - 为每个工作表添加一个新的工作表
Acct
(使用 非常简单Worksheets.Add(name)
) - 对于每个
Acct
名称,过滤源表 - 复制所有单元格并粘贴到
A1
相应工作表的单元格中。
如果需要,我可以扩展这些部分,但我希望看到你尝试一下。自己找到每个部分的解决方案可能比一次性找到所有部分的解决方案更容易。使用宏记录器或网络搜索将它们拼凑在一起。
尝试一下,然后带着一些小问题和目前所取得成果的证据回来。