【问题标题】:How can I use SQL queries in Excel to join two tables on different worksheets in the same workbook?如何在 Excel 中使用 SQL 查询来连接同一工作簿中不同工作表上的两个表?
【发布时间】:2019-10-03 10:04:43
【问题描述】:

我在一个工作簿的不同工作表中有两个表。我有一个 SQL 语句,它从两个表中连接、转换和派生复杂字段(不能通过 Power Query 连接处理),我想告诉 Excel 在表上执行该 SQL 语句。

我的问题是,我不知道如何在工作簿中已经存在的两个表上实现这一点。如果这两个表存在于数据库中,那很好,因为当我连接到数据库时,Excel 会为我提供一个本机查询对话框,但对于从工作簿中的表获取的数据,情况并非如此。

基本上我希望 Excel 执行这个 SQL 语句:

create table joined_table as 
select id, property_1 from [Sheet1$A1B100] as a
left join id, property_2 from [Sheet2$A1B50] as b
on a.id=b.id

我不知道在哪里可以指示 Excel 执行此操作,也不知道查询是否可以作为本机 SQL 查询执行。非常感谢任何建议。

【问题讨论】:

  • 也许您不应该使用电子表格,而应该使用数据库。
  • 可以使用电量查询。合并为新的左外连接表二到表一的属性列。将保留所有行并在其上连接表 2

标签: sql excel vba


【解决方案1】:

您可以使用 ADO 连接到 Excel 文件并将工作表用作数据库表。但是在 64 位的 office 中这很困难,并且假设您已经安装了适用于 excel 的 ADO 驱动程序。数据必须存储在 XLSX 格式文件中,每张表有一个表,默认情况下,它假定字段名称位于第一行,数据如下。 (我没有驱动程序,而且我在 64 位办公室,所以我不能给你举个例子,但是 This 可能会有所帮助

【讨论】:

    【解决方案2】:

    这是可行的,但并不简单。

    假设您的表格位于单独的表格“table1”和“table2”中。第一步来自here

    • 单击 Excel 功能区上的“数据”。单击“获取外部数据”部分中的“来自其他来源”图标。点击下拉菜单中的“来自 Microsoft Query”
    • 选择excel文件(当前excel文件)
    • 如果您没有看到表格,请参阅this link
    • 将表添加到列表中,您可能会看到 Microsoft Query 无法自动连接表的错误。点击确定。
    • 添加查询(视图->SQL)

    查询(请注意反引号):

    SELECT table1$.id, table1$.property_1, table2$.property_2 
    FROM {oj `C:\yourpath\yourfile.xlsx`.`table1$` `table1$`
    LEFT OUTER JOIN `C:\yourpath\yourfile.xlsx`.`table2$` `table2$`
    ON  table2$.id =table1$.id}
    
    • 文件 -> 将数据返回到 excel

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多