2012-05-04 16:20:11 +0000 2012-05-04 16:20:11 +0000
123
123
Advertisement

如何在Excel中连接两个工作表,就像在SQL中一样?

Advertisement

我有两个不同的Excel文件中的两个工作表。它们都包含了姓名、ID号和相关数据的列表。一个是主列表,包括一般的人口统计字段,另一个是只包括姓名、ID和地址的列表。这个列表是由另一个办公室从主列表中筛选出来的。

我想用第二个列表来过滤第一个列表。此外,我想让结果包括主工作表中的其他字段和第二个工作表中的地址字段。我知道如何通过数据库内部连接很容易做到这一点,但我不太清楚如何在Excel中有效地做到这一点。如何在Excel中连接两个工作表?奖励分,如果你能展示如何进行外部连接,我更希望知道如何在不需要宏的情况下进行这样的操作。

Advertisement
Advertisement

答案 (10)

158
158
158
2012-05-07 09:37:24 +0000

转到Data> From Other Sources> [选择刚刚创建的连接] > From Microsoft Query> Excel File>

你现在可以把这个Options编辑成SQL了。不知道支持什么语法,但我试过隐式连接,"内联接","左联接 “和联合,都可以。下面是一个示例查询:

SELECT *
FROM `C:\Users\Peter\Documents\Excel-to-excel\Source_1.xlsx`.`Sheet1$` a
LEFT JOIN `C:\Users\Peter\Documents\Excel-to-excel\Source_2.xlsx`.`Sheet1$` b
ON a.col2 = b.col2
11
11
11
2013-12-09 18:20:43 +0000

支持接受的答案。我只想强调一下 “选择列(如果没有看到任何列的列表,一定要勾选选项>系统表)”

一旦你选择了excel文件,很有可能会看到this data source contains no visible tables的提示,可用的选项卡和列都没有。微软承认这是一个BUG,excel文件中的选项卡被当作 “系统表 "处理,而 "系统表 "的选项在默认情况下没有选择。所以这一步不要慌,只要点击 "选项",勾选 "系统表",就可以看到可用的列了。

9
Advertisement
9
9
2012-05-04 16:22:05 +0000
Advertisement

VLOOKUP和HLOOKUP可用于搜索匹配的主键(垂直或水平存储),并从 “属性 "列/row中返回值。

7
7
7
2017-05-17 14:09:42 +0000

你可以使用Microsoft Power Query,它适用于较新版本的Excel(类似于公认的答案,但更简单、更容易)。Power Query将合并称为 “合并"。

最简单的方法是将你的2个Excel表作为Excel表。然后在Excel中,进入Power Query功能区选项卡,点击 "从Excel "按钮。一旦你将两个表导入到Power Query中,选择其中一个并点击 "合并"。

4
Advertisement
4
4
2016-02-12 11:00:43 +0000
Advertisement

雖然我認為Aprillion的答案是很好的,但它啟發了我使用Microsoft Access来连接数据表,我发现这样做更容易。

当然,你需要安装MS Access。

步骤:

  • 创建一个新的Access数据库(或使用一个新的数据库)。
  • 使用Get External Data来显示你的表是如何连接的。
  • 设置关系类型来匹配你想要的类型(代表左键连接等)
  • 创建一个新的查询来连接你的表。
3
3
3
2014-07-04 22:25:25 +0000

在XLTools.net,我们为MS Query创建了一个很好的替代方案,特别是针对Excel表的SQL查询。它被称为XLTools SQL Queries。它比MS Query更容易使用,如果您只需要创建和运行SQL,它的效果非常好–无需VBA,无需MS Query的复杂操作…..

有了这个工具,您可以使用内嵌的SQL编辑器对Excel工作簿中的表创建任何SQL查询,并立即运行,还可以选择将结果放在新的或任何现有的工作表上。

你可以使用几乎任何类型的联接,包括LEFT OUTER JOIN(只支持RIGHT OUTER JOIN和FULL OUTER JOIN)。

3
Advertisement
3
3
2012-05-04 17:29:37 +0000
Advertisement

你不能在Excel内部对Excel表进行SQL样式的预连接。在Excel中,就像Reuben说的那样,有多种方法可以完成你要做的事情。在这两种情况下,你在一个唯一的行上进行匹配,它将返回给定列的值从找到的id向左下移。

如果你只想在第二个列表中添加几个额外的字段,那么就把公式添加到第二个列表中。如果你想要一个 “外部联接 "风格的表,那么将VLOOKUP公式添加到第一个列表中,用HLOOKUP来测试查找是否被找到。如果Excel的帮助没有给你足够的细节来说明如何在你的特定实例中使用这些,请告诉我们。

如果你喜欢使用SQL,那么将数据链接到你的数据库程序中,创建你的查询,然后将结果导出到Excel。(在Access中,你可以将Excel工作表或命名范围导入为链接表。)

2
2
2
2013-07-16 02:41:41 +0000

对于Excel 2007用户:数据>从其他数据源>从微软查询>浏览到Excel文件

根据本文,从XLS 2003版本查询可能会出现 “此数据源不包含可见表 "的错误,因为你的工作表被视为系统表。所以,在 "查询向导–选择列 "对话框的选项中检查 "系统表",当你创建查询时,就可以工作了。Microsoft Query 对话框>表菜单>Joins…..

要返回数据到原来的Excel表,请在Microsoft Query 对话框>文件菜单中选择 "返回数据到Excel表"。

0
Advertisement
0
0
2016-05-25 17:19:06 +0000
Advertisement

在寻找同样的问题时,我遇到了RDBMerge,我认为这是一个用户友好的方法,可以将多个Excel工作簿、csv和xml文件中的数据合并到一个汇总工作簿中。

0
0
0
2012-05-04 16:44:30 +0000

如果你对数据库足够熟悉,你可以用SQL Server将两个工作表作为链接服务器连接起来,然后用T-SQL来完成后端数据工作。然后通过将Excel连接回SQL,将数据拉到一个表(正则或透视)中来完成。你也可以考虑使用Powerpivot;它将允许在任何数据库源之间进行连接–包括作为平面数据库使用的Excel。

Advertisement

相关问题

6
13
9
10
5
Advertisement