MS Excel - 加入外部 (SQL) 数据与本地 table (sheet)

MS Excel - join external (SQL) data with local table (sheet)

我正在尝试从外部源和我的 excel 文件的另一个 sheet 中获取数据到一个 table 中。 我在 SQL 服务器中拥有的是 table 我的客户: ╔════╦══════╦═════════╗ ║ ID ║ Name ║ Country ║ ╠════╬══════╬═════════╣ ║ 1 ║ Joe ║ Spain ║ ║ 2 ║ Bob ║ Frence ║ ║ 3 ║ Eva ║ Spain ║ ╚════╩══════╩═════════╝ 我的 excel 文件的另一个 sheet 中有一个国家和税收列表: ╔═════════╦═════╗ ║ Country ║ VAT ║ ╠═════════╬═════╣ ║ Germany ║ 19% ║ ║ Frence ║ 20% ║ ║ Spain ║ 21% ║ ╚═════════╩═════╝ 最后我需要的是一个 table ,其中包含我的客户和他应该支付的税款。 table 应该在我的 excel 文档的 sheet 之一中,用户应该能够根据需要轻松更新它。 ╔══════════╦═════╗ ║ Customer ║ VAT ║ ╠══════════╬═════╣ ║ Joe ║ 21% ║ ║ Bob ║ 20% ║ ║ Eva ║ 21% ║ ╚══════════╩═════╝ 知道什么是简单易用的解决方案吗?

我尝试了两个 excel sql 查询 - 一个来自 SQL 服务器,第二个 "from microsoft query" (来自 excel 文件)。但是因为我不能运行他们后续,我不能确定一次更新后的数据是否正确。

我还尝试了一个 sql 查询(来自 SQL 服务器)和一个 VLOOKUP 公式。但是填入table后公式不会自动计算

我上面的评论只是想打开一些你手头可能有的可能性。

PowerQuery 是 Office 2013 的免费插件。在 Office 2016 中,它是 Excel 的一部分,不再是插件。

无论如何,您似乎更喜欢在 SQL 上使用临时 table 或 table 变量的方法。因此,我将详细说明这种方法:

最后你会想要一个类似于这个的查询:

set nocount on;
declare @tblVAT table
    (
     Country nvarchar(50),
     VAT decimal(9, 7)
    );

insert  into @tblVAT
        (Country, VAT)
values  (N'Germany', 0.19),
        (N'Frence', 0.20),
        (N'Spain', 0.21);


select  tc.Name,
        tc.ID,
        case when tc.Country is null then tv.Country
             else tc.Country
        end as Country,
        tv.VAT
from    dbo.tblCustomers as tc
full outer join @tblVAT as tv
on      tv.Country = tc.Country;

请注意上述 SQL 查询开头 set nocount on; 的重要性。没有它,它将无法工作!

有了这个查询后,您只需使用菜单 DataGet External DataFrom SQL Server 将其粘贴到 Excel。在第一步中,您将获得客户 table,然后在第二步中优化查询以包括如上所述的 table 变量。这是一个简短的视觉摘要:

我想,此时唯一剩下的问题是:

  1. 如何动态创建上面的SQL语句和
  2. 你如何在 Excel 中获得上面的 table 然后用这个更新的 SQL 语句更新。

要动态创建上述内容 SQL,您可能需要查看以下内容:

就在昨天,我回答了一个类似的问题,用户想将 Excel sheet 的内容作为动态创建的 table 传递给 SQL 服务器。您可以根据自己的目的轻松调整(甚至按原样使用)。

对于最后一步(使用这个新的 SQL 查询更新 Excel 中的 table),您可以使用宏记录器并执行我在上面的屏幕截图中所做的操作。自动创建的代码只不过是我建议给你的。

所以,你有它。让我知道我是否不够清楚,或者您是否需要更多详细信息来理解此解决方案。