Mój komentarz powyżej miał na celu jedynie otwarcie kilku możliwości, które możesz mieć pod ręką.
PowerQuery to darmowa wtyczka do pakietu Office 2013. W pakiecie Office 2016 jest częścią programu Excel i nie jest już wtyczką.
W każdym razie wydaje się, że wolisz podejście polegające na użyciu tabeli tymczasowej lub zmiennej tabeli w swoim SQL. Dlatego omówię nieco więcej tego podejścia:
Na koniec będziesz potrzebować zapytania podobnego do tego:
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;
Zwróć uwagę na znaczenie set nocount on;
na początku powyższego zapytania SQL. Bez tego to nie zadziała!
Gdy już masz to zapytanie, możesz po prostu wkleić je do Excela za pomocą menu Data
► Get External Data
► From SQL Server
. W pierwszym kroku otrzymasz tabelę klientów, a następnie w drugim kroku doprecyzuj zapytanie, aby uwzględnić zmienną tabeli, jak opisano powyżej. Oto krótkie podsumowanie wizualne:
Myślę, że w tym momencie jedyne pozostałe pytania to:
- Jak dynamicznie utworzyć powyższą instrukcję SQL i
- jak uzyskać powyższą tabelę w programie Excel, a następnie zaktualizować ją zaktualizowaną instrukcją SQL.
Aby dynamicznie tworzyć powyższe kody SQL, warto zapoznać się z poniższym:Korzystanie z tablicy lub słownika z klauzuli from w sql w programie Excel vba
Jeszcze wczoraj odpowiedziałem na podobne pytanie, w którym użytkownik chciał przekazać zawartość arkusza Excela jako dynamicznie utworzoną tabelę do SQL Servera. Możesz łatwo dostosować (lub nawet używać go tak, jak jest) do swoich celów.
W ostatnim kroku (zaktualizuj tę tabelę w Excelu za pomocą tego nowego zapytania SQL) możesz użyć rejestratora makr i zrobić to, co zrobiłem na powyższym zrzucie ekranu. Automatycznie tworzony kod to nic więcej / mniej niż to, co bym Ci zaproponował.
Więc masz to. Daj mi znać, jeśli nie wyraziłem się wystarczająco jasno lub jeśli potrzebujesz dodatkowych informacji, aby zrozumieć to rozwiązanie.