上記の私のコメントは、あなたが手元に持っているかもしれないいくつかの可能性を開くことを単に意図したものでした。
PowerQueryは、Office 2013用の無料のプラグインです。Office2016では、PowerQueryはExcelの一部であり、プラグインではなくなりました。
とにかく、SQLで一時テーブルまたはテーブル変数を使用するアプローチを好むようです。したがって、このアプローチについてもう少し詳しく説明します。
最後に、次のようなクエリが必要になります:
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;
set nocount on;
の重要性に注意してください 上記のSQLクエリの開始時。それがないと機能しません!
このクエリを取得したら、メニューのData
を使用してExcelに貼り付けることができます。 ►Get External Data
►From SQL Server
。最初のステップでcustomerテーブルを取得し、次に2番目のステップでクエリを絞り込んで上記のようにテーブル変数を含めます。短い視覚的な要約は次のとおりです:
この時点で残っている質問は次のとおりです。
- 上記のSQLステートメントを動的に作成するにはどうすればよいですか
- 上記のテーブルをExcelで取得し、この更新されたSQLステートメントで更新するにはどうすればよいですか。
上記のSQLを動的に作成するには、次を確認することをお勧めします。ExcelvbaのSQLで配列または辞書をfrom句として使用する
ちょうど昨日、ユーザーがExcelシートのコンテンツを動的に作成されたテーブルとしてSQLServerに渡したいという同様の質問に答えました。目的に合わせて簡単に適応(またはそのまま使用)できます。
最後のステップ(この新しいSQLクエリを使用してExcelでこのテーブルを更新する)では、マクロレコーダーを使用して、上のスクリーンショットで行ったことを実行できます。自動的に作成されたコードは、私があなたに提案するものにすぎません。
だから、あなたはそれを持っています。私が十分に明確でなかった場合、またはこの解決策を理解するためにさらに詳細が必要な場合は、私に知らせてください。