Sinhronizacija rezalnikov iz različnih naborov podatkov - Excel Nasveti

Rezalniki so super za vrtilne tabele, saj lahko iz enega niza rezalnikov nadzorujete več vrtilnih tabel. Ampak - to je nekako laž. Nadzirate lahko več vrtilnih tabel, ki prihajajo iz istega nabora podatkov. Ko imate vrtilne tabele, ki prihajajo iz dveh različnih naborov podatkov, je precej težavno. Pokazal vam bom nekaj VBA, ki vam bo to omogočil.

Oglejte si video

  • Kako lahko rezalnik poganja dve vrtilni tabeli?
  • Če sta obe vrtilni tabeli iz istega nabora podatkov: Izberite rezalnik, Prijavi povezave, Izberite druge vrtilne tabele
  • Če pa vrtilne tabele prihajajo iz različnih naborov podatkov:
  • S funkcijo Shrani kot spremenite razširitev delovnega zvezka na XLSM namesto na XLSX
  • Uporabite alt = "" + TMS in spremenite varnost makra na drugo nastavitev.
  • Alt + F11, da pridete do VBA
  • Ctrl + R za prikaz raziskovalca projekta
  • Poiščite delovni list, ki vsebuje vašo prvo vrtilno tabelo in rezalnik
  • Vstavite kodo za Worksheet_Update
  • Skrij drugi rezalnik, da bo še naprej obstajal, vendar nihče ne more nikoli izbirati med njim

Video zapis

Naučite se Excel za podcast, epizoda 2104: Sinhronizirajte rezalnike iz različnih naborov podatkov.

Hej, dobrodošli nazaj v omrežju, jaz sem Bill Jelen, in današnje vprašanje ni, kako vzeti ti dve vrtilni tabeli, ki sta izhajali iz enega nabora podatkov, in narediti, da Slicer nadzoruje vse te vrtilne tabele. Ne gre za to. To je enostavno narediti - Slicer, Tools, Options, ali Report Connections ali Slicer Connections v stari različici in preverite, ali želite, da ta Slicer nadzoruje vse te vrtilne tabele. Preprosto, kajne? To vprašanje je v zvezi s tem delovnim listom, kjer imamo dva različna nabora podatkov in iz tega bomo ustvarili vrtilno tabelo, iz tega pa naj zdaj pospešim video, ko ustvarjam te vrtilne tabele. V redu, zdaj boste videli, da imam dve vrtilni tabeli, ta vrtilna tabela je ustvarjena iz enega nabora podatkov in tam je rezalnik, ki nadzoruje to vrtilno tabelo;in nato imam drugo vrtilno tabelo, ki je bila ustvarjena iz drugega nabora podatkov, in rezalnik, ki nadzoruje to vrtilno tabelo. Ampak absolutno ni mogoče, da bi ta rezalnik nadzoroval to vrtilno tabelo in vrtilno tabelo, ki je zgrajena iz drugega nabora podatkov. Vredu. Ampak pokazal vam bom, kako to danes narediti z makrom.

Zdaj je to težko. Ko je prišlo vprašanje, sem rekel: "Zdaj to, mislim, da tega ne zmoreš." Toda delal sem na tem in eksperimentiral in mislim, da sem ga končno dobil. Moram misliti, da sem končno prišel dol. V redu, pojdimo skozi to. Najprej se shrani kot datoteka xlsx. To je lep tip datoteke, le da je grozljiv, ker je edina vrsta datoteke, ki ne dovoljuje makrov. To morate spremeniti iz xlsx v xlsm, sicer bo vse vaše delo v preostalem delu video posnetka vrženo skozi okno. Shrani kot, spremenite vrsto datoteke v xlsm ali, heck, xlsb, katera koli od teh bo delovala. To je tisti, ki je pokvarjen - xlsx - in je privzet, kajne? Xlsm, kliknite Shrani. Če še nikoli niste delali makrov, Alt + T za Toma, M za makro,S za varnost in vse makre boste lahko shranili brez obvestila. To morate spremeniti v drugega, kar bo omogočilo delo vaših makrov.

V redu, zdaj imamo dva rezalnika. Stavim, da tega niste nikoli vedeli, toda rezalniki imajo imena. Odpravili se bomo na Slicer Tools, Options, Slicer Settings in videli bomo, da se ta imenuje Slicer_Name. Kot to. Pojdite na drugo, pojdite na Slicer Tools, Options, Slicer Settings, ta se imenuje Slicer_Name1 - ne Name space 1, Name1. Dve taki imeni.

Evo, kaj bomo storili. Prešli bomo na VBA - Alt + F11. Če v VBA še niste delali VBA, boste imeli ta velik sivi zaslon. Prišli bomo sem in rekli View, Project Explorer, v Project Explorerju poiščite svojo datoteko - moja se imenuje Podcast 2104. Odprite Microsoft Excel Objects in list, kjer želim, da to deluje, se imenuje Nadzorna plošča. Tam bom z desno tipko miške kliknil in rekel Ogled kode. Ta koda, ki jo pišemo, ne more iti v modul kot v običajni makro - ta mora biti na tem delovnem listu. Odprite zgornji levi spustni list, Delovni list, nato pa v zgornjem desnem spustnem meniju izgovorimo Posodobitev vrtilne tabele. Torej, tu bo zdaj šla naša koda. To kodo sem že predhodno spekel. Oglejmo si kodo tukaj v beležnici. Torej,imeli boste dva predpomnilnika Slicer - SC1 in SC2 - en element Slicer, potem pa ga boste morali tukaj prilagoditi. Tako sta se moji dve rezalnici imenovali Ime in Ime1. V redu, tam boste morali vstaviti imena svojih rezalnikov. Application.Screenupdating = False, Application.EnableEvents = False in nato Slicer Cache 2 - očistili bomo filter, nato pa za vsak element SI1 in sc1.SlicerItems, če je izbran, bomo naredili isti element v predpomnilniku rezalnikov, ki ga želite izbrati. To je majhna zanka, ki bo potekala skozi, kljub temu, da je v tem rezalniku veliko elementov. V mojem primeru jih imam 11 ali 12; v vašem primeru bi lahko imeli več.Tako sta se moja dva rezalnika imenovala Ime in Ime1. V redu, tam boste morali vstaviti imena svojih rezalnikov. Application.Screenupdating = False, Application.EnableEvents = False in nato Slicer Cache 2 - očistili bomo filter, nato pa za vsak element SI1 in sc1.SlicerItems, če je izbran, bomo naredili isti element v predpomnilniku rezalnikov, ki ga želite izbrati. To je majhna zanka, ki bo potekala skozi, kljub temu, da je v tem rezalniku veliko elementov. V mojem primeru jih imam 11 ali 12; v vašem primeru bi lahko imeli več.Tako sta se moja dva rezalnika imenovala Ime in Ime1. V redu, tam boste morali vstaviti imena svojih rezalnikov. Application.Screenupdating = False, Application.EnableEvents = False in nato Slicer Cache 2 - očistili bomo filter, nato pa za vsak element SI1 in sc1.SlicerItems, če je izbran, bomo naredili isti element v predpomnilniku rezalnikov, ki ga želite izbrati. To je majhna zanka, ki bo potekala skozi, kljub temu, da je v tem rezalniku veliko elementov. V mojem primeru jih imam 11 ali 12; v vašem primeru bi lahko imeli več.izbrali boste isti element v predpomnilniku rezalnikov, ki ga želite izbrati. To je majhna zanka, ki bo potekala skozi, kljub temu, da je v tem rezalniku veliko elementov. V mojem primeru jih imam 11 ali 12; v vašem primeru bi lahko imeli več.izbrali boste isti element v predpomnilniku rezalnikov, ki ga želite izbrati. To je majhna zanka, ki se bo pretakala, ne glede na to, koliko elementov je v tem rezalniku. V mojem primeru jih imam 11 ali 12; v vašem primeru bi lahko imeli več.

Ko končamo s tem, znova vklopite omogočite dogodke in ponovno vklopite možnost Posodobitev zaslona. Vredu. Torej, vzeli bomo to kodo, kopirali jo in jo tako prilepili sem sredi našega makra. V redu, samo poskrbimo, da bom pritisnil Ctrl + G in vprašal za Application.EnableEvents, vklop ali izklop - torej,? Application.EnableEvents - in res je. Če se vaš prikaže kot napačen, se želite vrniti sem in reči, da je = True - torej vklopite te dogodke. Vredu. Zdaj, tukaj se bo zgodilo. Naš trener bi torej moral delati tukaj, to je na pravem delovnem listu. Shranjeni smo v datoteko xlxm in vklopil sem makre in kar bomo videli, je, da ko izberem iz levega rezalnika, ta predpomnilnik rezalnikov 1--Izbral bom Andyja prek Delle - posodobil se bo tudi drugi Slicer. V redu In tudi če bi izbral samo Glorijo - samo Glorijo - zdi se, da deluje res zelo dobro. Tudi če bi CTRL + kliknil, ko se spustim Ctrl, se bodo vsi trije posodobili.

Ampak tukaj je razumevanje - vedno obstaja vprašanje - ta rezalnik mora obstajati, vendar tega rezalnika ne morete uporabljati - počakajte, mislim, da lahko, lahko uporabite rezalnik, vendar bo stvari zmedlo . Ker se bo zgodilo, bom to spremenil v Hanka in vrnili se bodo k temu, kar je v predpomnilniku Slicer 1, ker sem na tem listu spremenil vrtilno tabelo. Ali boste v resničnem življenju imeli dve vrtilni tabeli na istem listu? Ne vem, če si ali ne, v redu, ampak stvari bodo postale malce nore.

Zdaj pa si oglejmo to. Prva stvar, ki jo želim narediti, je, da vstavim nov delovni list - Alt + IW za vstavljanje delovnega lista - in temu bom rekel DarkCave. Lahko mu rečete, kakor želite. Vzel bom tisto armaturno ploščo, ki ne bo delovala, skopiral jo bom in prišel sem v temno jamo in jo prilepil, nato pa z desno miškino tipko skril ta list, da nihče nikoli ne bo videl tega rezalnika. In potem bi ga od tu morali imeti možnost izbrisati. Lepo, v redu. In samo preverili bomo, ali še vedno delajo - izberite Charlieja prek Eddieja in oba še vedno posodabljata. Kaj se zdaj dogaja? Rezalnik, ki ga ne moremo videti, tisti, ki smo ga skrili, se tudi posodablja, vendar nam je vseeno, da se posodablja.

Kaj pa, če želite imeti svoje stvari na različnih listih? Sem vstavim nov delovni list - Alt + IW - in vzamem eno od teh vrtilnih tabel - morda drugo vrtilno tabelo - in jo premaknem na tisti drugi list - torej, Ctrl + C za kopiranje vrtilno tabelo, Ctrl + V, da prilepite vrtilno tabelo sem. In če moram tukaj imeti rezalnik - ne vstavljajte rezine iz te vrtilne tabele - se moramo vrniti na našo nadzorno ploščo, vzemite rezalnik, ki je nadzorni rezalnik, Ctrl + C, da ga kopirate, in prilepite sem - Ctrl + V. Vredu? Zdaj na tem listu nimamo kode - na Sheet4 ni nobene kode - in mislil sem, da bom moral Sheet4 dodati nekaj kode, toda tu je nekaj lepega: ko zamenjam ta rezalnik, se dogaja, na armaturni plošči ta pivot tabela 's posodabljanje, čeprav se ta vrtilna tabela na tem listu, ki ni aktivna, posodablja, bodo zagnali kodo in tudi to se bo posodobilo. Prekleto neverjetno, da to deluje.

Now, the whole key to this is, you can never use the slicer tied to the second pivot table. You have to have the slicer that's tied to the second pivot table but you cannot use it-- you have to use this slicer tied to the first pivot table. Alright? But in general, I think this is working fairly well.

Alright, now hey, Sal, the person who asks this question, wrote in and said, "Look, I have a disconnected pivot table-- disconnected slicer in the second pivot table only." So let's just add a new field here called Region, East, West, we'll refresh our second pivot table, cool, and I'll insert a slicer that is disconnected-- in other words, it's only in the second data set, not in the first data set, Alright, now, this is going to be tricky because when I choose East from here, we're not going to have anybody selected. Alright? So the pivot table goes away. I would have to clear this slicer on the left hand side and then East remains selected. And now things have gone to hell, right? So, you are choosing from a slicer tied to the second data set and, while the second one is updating, the first one is not going to respect that because it has no idea there's no region filled back in the other field. This is only going to work when you have the same field in both data sets. If you have some other situation like this, then it will not fly.

So here's what you're going to have to do: You're going to have to insert that field-- the Region field-- back in your original data set, refresh this pivot table, insert a new slicer that will control that first pivot table. Alright? Now, we have two different slicers now, and because I built them backwards their names are backwards-- this one's Slicer_Region 1, and the one that's going to be the controlling one is called Slicer_Region2. If I would have planned differently, we would have had a different result, but here we are. Alt+F11, I want to take a lot of cutting and pasting. I'm going to take those first three lines and paste them, change it to SlicerCache3, SlicerCache4, SlicerItem3. I'll initialize SlicerCache3, ClicerCache4 to be Region2, Region1, clear the manual filter on SC4-- so that was a copy and paste, take this entire loop here and paste it. There are a lot of places you have to change-- your SI3, SC3 and then SC4, SI3. SI3-- don't miss that one, I missed that one-- next SI3. Alright, so now this set of code will hopefully control two sets of slicers. If you had a third set of slicers you're going to do the same changes I just made, copying and pasting and changing things carefully. Carefully. And again, now, this this guy is the one that we will never see-- we never want to see that one work-- because the ones on the Pivot Table 1 are the controlling ones. So this, we have to copy this-- Ctrl+C-- go to our sheet where we're hiding things away-- so Home, Format, Hide and Unhide, Unhide that sheet (the DarkCave), Paste so it continues to exist, it has to live somewhere, and then once I know it's back there on the DarkCave I can delete it and then hide this sheet here. Alright, and so now we should have on our dashboard, one set of slicers, we choose Central, they both update; we choose Just Flow, they both update; I clear the filter and Central stays. That's actually good. I'm glad that works-- clear this filter and everybody comes back. But these all have to be driving off that first pivot table. What if you have a field in the second data set that's not in your first data set? Then all bets are off. We'll go back to "I don't know how to solve that".

Well, hey, Macros came to the solution today and Macros are amazing and awesome. If you want to learn all about Macros, Tracy Syestad and I have written this great book, "Excel 2016, VBA and Macros." Check that out, Click the "I" on the top right hand corner to get to a page where you can buy that book.

Alright, Episode recap. How can you have a slicer drive two pivot tables? If they both came from the data set it's simple-- Slicer, Report Connections, Choose Other pivot tables. But if a pivot table came from two data sets, lots of steps change-- xlsx to xlsm, change your macro security setting, Alt+F11 to get the VBA, Ctrl+R to display the Project Explorer, find the worksheet name that contains your first pivot table and slicer, right-click and say View Code, and then Insert code for worksheet, Update, then, really important, Hide that second slicer away on a hidden worksheet or far out to the right so no one can ever choose from that slicer. By the way, don't cut that slicer-- you have to copy it and paste and then delete the first one in order to get it to work.

Želimo se vam zahvaliti, da ste se ustavili. Naslednjič se vidimo za še eno oddajo od.

Prenesite datoteko

Prenesite vzorčno datoteko tukaj: Podcast2104.xlsm

Zanimive Članki...