如何有条件地合并/加入 Excel 工作表?
Posted
技术标签:
【中文标题】如何有条件地合并/加入 Excel 工作表?【英文标题】:How to conditionally merge/join excel worksheets? 【发布时间】:2013-01-16 04:54:58 【问题描述】:+---------+---------+ +---------+--------------+ +---------+-------------+
+ country + widgets + + country + frammis rods + + country + comex gears +
+---------+---------+ +---------+--------------+ +---------+-------------+
+ alpha + 1 + + bravo + 8 + + charlie + 18 +
+ bravo + 3 + + charlie + 16 + + delta + 9 +
+ charlie + 7 + + delta + 32 + +---------+-------------+
+ delta + 11 + +---------+--------------+
+---------+---------+
我在同一个电子表格中有多个类似 ^^^ 的 Excel 工作表。我正在尝试创建一个包含合并数据的新工作表,其中仅显示具有所有工作表类别中的数据的国家/地区。
例如,
+---------+---------+--------------+-------------+
+ country + widgets + frammis rods + comex gears +
+---------+---------+--------------+-------------+
+ charlie + 7 + 16 + 18 +
+ delta + 11 + 32 + 9 +
+---------+---------+--------------+-------------+
随着各种工作表的更新/新工作表的添加,我正在寻找一种相当简单、灵活的方式来执行此操作。我知道如何在 mysql 中执行此操作,但我不确定在 excel 中是否可行。
那么,专家们有什么要说的呢?
提前谢谢。 :)
【问题讨论】:
如果您想要新工作表的灵活性,您可能需要创建一个过程来循环您的工作表并将任何新的国家/地区名称添加到您的主(合并)工作表中。获得合并的工作表后,您可以使用 Excel 的广泛公式从每个工作表中获取所需的数据。如果您最终添加了一张新的“部分”,则您必须让程序也添加该部分。 +1 Scott - 在 VBA 或 VBA plus 公式中完全可能,前提是您的表格具有一致的标题,但您必须编写该代码。没有用于此的内置工具。I have several Excel worksheets like these ^^^ within the same spreadsheet.
我想你的意思是在同一个Workbook
内?您可以使用.Find
和.Offset
从相关国家/地区检索数据。在第 4 节http://siddharthrout.wordpress.com/2011/07/14/find-and-findnext-in-excel-vba/
中可以看到一个小例子
根据数据集的大小,您可能会发现.find
非常慢。
【参考方案1】:
首先,感谢@MikeD 撰写了关于使用数据透视表的解决方案的精彩文章。我确实设法让它在 Excel 2007 中工作。
但是,我决定使用 SQL 查询,因为它的速度要快得多。 (是的,您可以使用 SQL 来合并工作表。太好了!)
1) 数据 --> 来自其他来源 --> 来自 Microsoft Query
2) 选择数据源 --> Excel 文件* --> 选中“使用查询向导创建/编辑查询”
3) 选择工作簿
4) 选择您想要的列 --> 点击下一步 --> 在弹出警告您需要设置手动加入时点击“确定”
5)在“Microsoft Query”窗口-->表格-->联接
6)点击“返回数据”图标
7) 导入数据 --> CTL + 单击重复项的列标题(例如,“Country2”、“Country3”)--> 右键单击 - -> “隐藏”
8) !
【讨论】:
如果第 4 步中没有表可见,请点击“选项”并勾选“系统表”【参考方案2】:我建议使用具有多个合并范围的数据透视表。 (至少在 2010 年)无论工作表是在同一个工作簿中还是在不同的工作簿中(见图)
提示:在 Excel 2010 中按 Alt-D,然后按 P 以访问 2003 像数据透视表向导。
没有页面字段
不要忘记要求 SUM 而不是 COUNT(任何值单元格 --> 右键单击 --> 汇总值)
要达到您的最终布局,在数据透视表上方添加一个额外的标题行(深蓝色 A、B;C、...),创建一个自动过滤器并过滤所有列中的非空白
ta-taaaaa!
【讨论】:
哇!非常感谢您的详细撰写!我最终使用了 SQL,但由于您的帖子,我学到了很多关于数据透视表的知识,我相信将来会派上用场。 (: @phpwns 我的荣幸;根据您在数据透视表上方设置过滤器的方式,您将获得“外部联接”和“内部联接”;-) 是的,它与 excel '07 中的一些细微变化完美配合。将我的数据更新为数据透视表只用了大约 4 秒,而使用 SQL 不到一秒(我正在合并 400 多列)。以上是关于如何有条件地合并/加入 Excel 工作表?的主要内容,如果未能解决你的问题,请参考以下文章
如何将一个 Excel 工作簿中的多个工作表合并成一个工作表?
在excel中如何将第一个工作表中的数据求和汇总到另一个表中