Excel 将多个特定单元格数据复制/导出/输出到新的电子表格

Excel 将多个特定单元格数据复制/导出/输出到新的电子表格,excel,excel-2010,vba,Excel,Excel 2010,Vba,我有一个大型Excel电子表格,经过几年的定制和扩充(有许多工作表),我想从中提取特定数据,并将这些数据按照严格的格式插入到新的电子表格中 第二个较新的电子表格是较大和较旧的电子表格的子集,但是第二个电子表格中的数据必须遵循严格的格式-没有标签或标题,只有列和行中的数据,从单元格A1开始,从那里开始,还有多个工作表 如何从原始电子表格中的特定单元格中获取数据,并通过宏或其他机制以编程方式将其插入到第二个较新的电子表格中,以便只需单击此“宏按钮”即可传输数据?旧的较大电子表格中的数据不一定是整行或

我有一个大型Excel电子表格,经过几年的定制和扩充(有许多工作表),我想从中提取特定数据,并将这些数据按照严格的格式插入到新的电子表格中

第二个较新的电子表格是较大和较旧的电子表格的子集,但是第二个电子表格中的数据必须遵循严格的格式-没有标签或标题,只有列和行中的数据,从单元格A1开始,从那里开始,还有多个工作表


如何从原始电子表格中的特定单元格中获取数据,并通过宏或其他机制以编程方式将其插入到第二个较新的电子表格中,以便只需单击此“宏按钮”即可传输数据?旧的较大电子表格中的数据不一定是整行或整列(虽然可以),也可能只是一个单元格,必须放在新电子表格的特定单元格中。

下面附加了一个非常简单的程序,您可以从中选择要复制的文件和要复制的文件以及范围。它为您提供了简单的灵活性。如果你想复制单个单元格,只需提到像
“A10:A10”


我将您的问题理解为源工作簿中有大量单元格和区域要移动到目标工作簿。试图使数百条复制语句正确无误可能是一项非常困难的任务。还有一个问题是,工作簿的所有者(知道要去哪里)必须将其记录下来,以便程序员实现。这增加了工作总量,增加了沟通失误的机会

我发现成功的一种技术是在第三个工作簿中使用copy宏。第三个工作簿包含指定所有副本的工作表。比如说

|     A     |     B   |     C     |     D   |
| ------ Source ----- | --- Destination --- |
| Worksheet |  Range  | Worksheet |   Cell  |
对于每个数据行,A列和B列标识源工作簿中的一个范围,而C列和D列标识目标工作表中该范围的左上角单元格

这种技术的优点包括:

  • 任何Excel用户都能理解格式;它不需要任何编程技能
  • 如果指定目标工作簿涉及多个用户,则每个用户都可以独立开发其规范部分
  • “遵守”此指令列表需要最少的代码
代码将执行的任务包括:

  • 开源工作簿
  • 打开空的目标工作簿
  • 查找最后一行指令
  • 对于每一行指令:将A列和B列定义的范围复制到C列和D列定义的单元格
  • 使用“保存”关闭目标工作簿
  • 关闭源工作簿而不保存
可以将目标工作簿的副本传递给所有者以供批准。任何错误都需要更新指令列表并重新运行宏。可能需要若干个周期才能获得所需的结果,但每个周期都很容易管理

上表是我实现过的最简单的版本,但也可能有更复杂的版本,例如:

 |     A     |     B   |     C     |     D   |
1| ------ Source ----- | --- Destination --- |
2| Worksheet |  Range  | Worksheet |   Cell  |
3|Sheet1     |A1:T230  |Data       |A1       |
4|Sheet2     |A1:T150  |Data       |A?       |
5|Sheet1     |A1:T150  |Data       |A1       |
6|Sheet2     |A1:X150  |Data       |?1       |
在第4行中,问号表示目的地是最后一份副本之后的下一个空闲行。这在组合多个小表时非常方便,因为不需要计算哪一行是下一行。在第6行中,目标是下一个空闲列

如果不清楚重建的复杂性,就不可能建议您应该采取这种技术。您需要检查所有类型的副本,并确定在不使编程太困难的情况下指定这些副本的最简单方法

 |     A     |     B   |     C     |     D   |
1| ------ Source ----- | --- Destination --- |
2| Worksheet |  Range  | Worksheet |   Cell  |
3|Sheet1     |A1:T230  |Data       |A1       |
4|Sheet2     |A1:T150  |Data       |A?       |
5|Sheet1     |A1:T150  |Data       |A1       |
6|Sheet2     |A1:X150  |Data       |?1       |