合并两张表中的数据以形成聚合输出(类似于数据库外连接)
Posted
技术标签:
【中文标题】合并两张表中的数据以形成聚合输出(类似于数据库外连接)【英文标题】:Combine data from two sheets to form conglomerated output (similar to database outer join) 【发布时间】:2015-12-30 22:50:12 【问题描述】:假设我有一个 Excel 工作簿 (.xlsx / .xlsm),其中包含以下两个工作表(为了举例而进行了简化):
表 1:
Student_Id: Name: Age: Sex: ...
1 Bobby 10 Male ...
2 Suzy 11 Female ...
3 Mike 10 Male ...
4 Sally 9 Female ...
....
表 2:
Class: Student_Id:
Math 1
Math 2
Math 4
English 3
English 4
....
现在,我想创建一个混合了两者的输出表,看起来类似于:
输出:
Class: Name: Age: Sex: ...
Math Bobby 10 Male ...
Math Suzy 11 Female ...
Math Sally 9 Female ...
English Mike 10 Male ...
English Sally 9 Female ...
....
现在,我知道使用 VLOOKUP
s 和 INDEX
、MATCH
函数很容易做到这一点,我已经做到了,但我的问题是 Excel 中是否存在更好的功能来实现这一点.
我正在考虑只使用 ADO 来查询两张表并将其输出,但我只是觉得必须有更好的方法/内置功能。
补充说明:
我的数据不需要实时 - 这意味着它不需要是会减慢 Excel 速度的公式 - 我知道我可以使用复制/选择性粘贴、值来做到这一点。
我知道 Power Query,但我尽量不使用需要我的用户安装加载项的东西(但工作簿中的宏可以)。
【问题讨论】:
如果您不需要Excel的公式,为什么不直接使用数据库,例如MS Access?否则你也可以试试Run SQL on an Excel table (sheet)。 我可以向您展示我将如何使用记录集读取所有数据,但我不知道这是否比使用 VLookups & Index、Match 函数或做一些技巧更好工作表的查询。 @agold,我完全同意,只是用户想要 Excel 中的数据,这是我给定的限制。 @MatthewD,非常感谢。我知道如何使用记录集来做到这一点,并且可能会这样做,这让我感到奇怪的是 Excel 没有使用 Data / ListObject 类库在某处内置它......我只是想知道是否有是一个 Excel 功能,我不知道它是否可以更智能地做到这一点。 【参考方案1】:这可以通过 Excel 的内置功能轻松完成。它被称为Microsoft Query
。
可以在功能区上的Data
- Other Sources
- From Microsoft Query
下找到。
您从看起来很古老的对话框中选择您的工作簿(它可以是同一个工作簿)。
它会抱怨找不到任何表,单击确定。然后从对话框中进入选项并选中系统表框。您现在可以从两个源表中选择所需的列。您可以像这样在查询构建器中加入它们:
现在从“文件”菜单中选择Return Data to Microsoft Excel
。
将显示一个导入数据对话框,让您可以选择新数据表的显示位置。
如果需要,您甚至可以将属性设置为定期刷新。
注意:此解决方案不需要 VBA 和工作表公式。它根据您在 Microsoft Query(它是 Excel 的内置组件)中创建的 SQL 生成连接表。结果表可以是静态的或动态的。
【讨论】:
只是诗意,@Hero!!! - 花了一些时间,但以最美丽的方式做了我想要的! - 非常感谢!!! 不客气。这很有趣......这一直存在于 Excel 中,大多数人从未发现它。它隐藏得很好。 同意! - 一旦我将它移入 VBA 并开始直接使用 SQL 文本,该死的正是我想要的! - 真的,谢谢!!以上是关于合并两张表中的数据以形成聚合输出(类似于数据库外连接)的主要内容,如果未能解决你的问题,请参考以下文章