Pjaustyklių sinchronizavimas iš skirtingų duomenų rinkinių - „Excel“ patarimai

Pjaustyklės yra nuostabios „pivot“ lentelėms, nes galite valdyti kelias „pivot“ lenteles iš vieno pjaustyklių rinkinio. Bet - tai tarsi melas. Galite valdyti kelias suvestines lenteles, gautas iš to paties duomenų rinkinio. Kai turite sukamas lenteles, gautas iš dviejų skirtingų duomenų rinkinių, tai yra gana keblu. Aš jums parodysiu keletą VBA, kurie leis jums tai išspręsti.

Žiūrėti video

  • Kaip galite, kad pjaustyklė valdytų dvi sukamas lenteles?
  • Jei abi suvestinės lentelės buvo gautos iš to paties duomenų rinkinio: pasirinkite „Slicer“, „Report Connections“, pasirinkite „Other Pivot“ lenteles
  • Bet jei suvestinės lentelės buvo gautos iš skirtingų duomenų rinkinių:
  • Norėdami pakeisti darbaknygės plėtinį į XLSM, o ne į XLSX, naudokite „Išsaugoti kaip“
  • Naudokite alt = "" + TMS ir pakeiskite makrokomandą į antrą nustatymą.
  • Alt + F11 patekti į VBA
  • „Ctrl“ + R, kad būtų rodomas projekto naršyklė
  • Raskite darbalapį, kuriame yra pirmoji sukimosi lentelė ir pjaustyklė
  • Įterpkite „Worksheet_Update“ kodą
  • Paslėpkite antrą pjaustyklę, kad ji išliktų, tačiau niekas niekada negali rinktis iš pjaustyklės

Vaizdo įrašo nuorašas

Sužinokite „Excel for Podcast“, 2104 serija: Sinchronizuokite pjaustykles iš skirtingų duomenų rinkinių.

Ei, sveiki sugrįžę į internetinę transliaciją, aš esu Billas Jelenas, o šiandien klausimas nėra apie tai, kaip paimti šias dvi suvestines lenteles, gautas iš vieno duomenų rinkinio, ir priversti „Slicer“ valdyti visas tas suvestines lenteles. Tai ne apie tai. Tai padaryti lengva - „Slicer“, „Tools“, „Options“, „Report Connections“ arba „Slicer Connections“ senojoje versijoje, ir patikrinkite, ar norite, kad šis „Slicer“ valdytų visas tas suvestines lenteles. Lengva, tiesa? Šis klausimas yra apie šį darbalapį, kuriame mes turime du skirtingus duomenų rinkinius ir iš to sukursime suvestinę lentelę, o dabar - leiskite man paspartinti vaizdo įrašą, kol aš kuriu šias suvestines lenteles. Gerai, dabar tai, ką pamatysite, turiu dvi suvestines lenteles, ši suvestinė lentelė sukurta iš vieno duomenų rinkinio ir yra pjaustyklė, valdanti tą suvestinę lentelę;tada turiu antrą suvestinę lentelę, sukurtą iš kito duomenų rinkinio, ir pjaustyklę, valdančią tą suvestinę lentelę. Bet jokiu būdu negalima priversti šios pjaustyklės valdyti tiek šią suvestinę lentelę, tiek šią suvestinę lentelę, sukurtą iš kito duomenų rinkinio. Gerai. Bet aš jums parodysiu, kaip tai padaryti šiandien naudojant makrokomandą.

Dabar tai padaryti yra keblu. Kai kilo klausimas, aš pasakiau: „Dabar, nemanau, kad tu gali tai padaryti“. Bet aš dirbau ir eksperimentavau, ir manau, kad pagaliau tai gavau. Turiu pagalvoti, kad pagaliau jį nugavau. Gerai, todėl pereikime tai. Pirmiausia tai išsaugoma kaip xlsx failas. Tai puikus failo tipas, išskyrus siaubingą failo tipą, nes tai vienintelis failo tipas, kuris neleidžia makrokomandų. Turite pakeisti tai iš „xlsx“ į „xlsm“, kitaip visas jūsų darbas į likusį vaizdo įrašą bus išmestas pro langą. Išsaugoti kaip, pakeiskite failo tipą į xlsm arba, heck, xlsb, bet kuris iš jų veiks. Tai tas, kuris yra sugedęs - xlsx - ir tai yra numatytasis nustatymas, beprotiška, ar ne? Xlsm, spustelėkite Išsaugoti. Jei dar niekada nedarėte makrokomandų, „Alt“ + T - Tomui, M - makrokomandai,„S for Security“ ir galėsite be įspėjimo išsaugoti visas makrokomandas. Reikia pakeisti į antrą, kad jūsų makrokomandos veiktų.

Gerai, dabar mes turime dvi pjaustykles. Lažinkitės, kad to niekada nežinojote, tačiau pjaustyklės turi pavadinimus. Eisime į „Slicer Tools“, „Options“, „Slicer Settings“ ir pamatysime, kad šis vadinamas Slicer_Name. Šitaip. Eikite į antrąjį, eikite į „Slicer Tools“, „Options“, „Slicer Settings“, tai vadinama „Slicer_Name1“ - ne „Name Name 1“, „Name1“. Du tokie vardai.

Štai ką mes darysime. Mes pereisime prie VBA - „Alt“ + F11. Jei VBA niekada nedarėte VBA, turėsite šį didelį pilką ekraną. Ateisime čia ir pasakysime „View“, „Project Explorer“, „Project Explorer“ suraskite jūsų failą - mano vadinamą „Podcast 2104“. Atidarykite „Microsoft Excel“ objektus, o lapas, kuriame noriu, kad tai veiktų, vadinamas informacijos suvestine. Dešiniuoju pelės mygtuku spustelėkite ten ir sakau Peržiūrėti kodą. Šis kodas, kurį rašome, negali patekti į modulį kaip į įprastą makrokomandą - tai turi būti šiame darbalapyje. Atidarykite viršutinį kairįjį išskleidžiamąjį meniu „Worksheet“, tada viršutiniame dešiniajame išskleidžiamajame meniu pasakysime „Pivot Table Update“. Gerai, todėl dabar eis mūsų kodas. Aš jau iš anksto iškepiau šį kodą. Pažvelkime į kodą čia, bloknotuose. Taigi, mesturėsite dvi „Slicer“ talpyklas - SC1 ir SC2 - vieną „Slicer“ elementą, tada čia turėsite jį pritaikyti. Taigi mano dvi pjaustyklės buvo pavadintos vardu ir vardu1. Gerai, jūs turėsite ten įvesti savo pjaustyklės vardus. „Application.Screenupdating = False“, „Application.EnableEvents = False“, tada „Slicer Cache 2“ - mes išvalysime filtrą, tada kiekvienam elementui SI1 ir sc1. SlicerItems, jei jis pažymėtas, tada mes padarysime reikia pasirinkti tą patį elementą „Slicer Cache“. Tai yra maža kilpa, kuri eis per daugelį daiktų, esančių toje pjaustyklėje. Mano atveju turiu 11 arba 12; jūsų atveju galite turėti daugiau.Taigi mano dvi pjaustyklės buvo pavadintos vardu ir vardu1. Gerai, jūs turėsite ten įvesti savo pjaustyklės vardus. „Application.Screenupdating = False“, „Application.EnableEvents = False“, tada „Slicer Cache 2“ - išvalysime filtrą, tada kiekvienam elementui SI1 ir sc1. „SlicerItems“, jei jis pažymėtas, tada padarysime reikia pasirinkti tą patį elementą „Slicer Cache“. Tai yra maža kilpa, kuri eis per daugelį daiktų, esančių toje pjaustyklėje. Mano atveju turiu 11 arba 12; jūsų atveju galite turėti daugiau.Taigi mano dvi pjaustyklės buvo pavadintos vardu ir vardu1. Gerai, jūs turėsite ten įvesti savo pjaustyklės vardus. „Application.Screenupdating = False“, „Application.EnableEvents = False“, tada „Slicer Cache 2“ - mes išvalysime filtrą, tada kiekvienam elementui SI1 ir sc1. SlicerItems, jei jis pažymėtas, tada mes padarysime reikia pasirinkti tą patį elementą „Slicer Cache“. Tai yra maža kilpa, kuri eis per daugelį daiktų, esančių toje pjaustyklėje. Mano atveju turiu 11 arba 12; jūsų atveju galite turėti daugiau.darysime tą patį elementą Slicer Cache, kurį reikia pasirinkti. Tai yra maža kilpa, kuri eis per daugelį daiktų, esančių toje pjaustyklėje. Mano atveju turiu 11 arba 12; jūsų atveju galite turėti daugiau.darysime tą patį elementą „Slicer Cache“, kurį reikia pasirinkti. Tai yra maža kilpa, kuri eis per daugelį daiktų, esančių toje pjaustyklėje. Mano atveju turiu 11 arba 12; jūsų atveju galite turėti daugiau.

Kai tai atliksime, vėl įjunkite įgalinimo įvykius, vėl įjunkite „Screen Update“. Gerai. Taigi, mes paimsime šį kodą, nukopijuosime jį ir įklijuosime jį čia, savo makro viduryje. Gerai, dabar įsitikinkime, kad paspausiu „Ctrl“ + G, o mano prašymas yra „Application“. Įjunkite arba išjunkite įvykius, taigi,? Application.EnableEvents-- ir tai tiesa. Jei jūsų klaidinga, jūs norite grįžti čia ir pasakyti, kad tai = Tiesa - taigi, jūs įjungiate tuos įvykius. Gerai. Štai, kas nutiks. Taigi mūsų treneris turėtų dirbti čia, jis yra tinkamame darbalapyje. Esame išsaugoti xlxm faile, aš įjungiau makrokomandas ir tai, ką pamatysime, yra tai, kad kai pasirenku iš kairiosios pjaustyklės, tą pjaustyklės talpyklą 1 - aš 'Aš pasirinksiu Andy per Della - kitas pjaustyklė taip pat ketina atnaujinti. Gerai, net jei aš rinkčiausi tik „Gloria“ - tiesiog „Gloria“, atrodo, kad tai veikia tikrai labai gerai. Net jei norėčiau paspausti CTRL + paspaudus, kai paleidžiu „Ctrl“, jie visi trys bus atnaujinti.

Bet čia yra gauja - visada yra gauja - šis pjaustyklė, ji turi egzistuoti, bet jūs negalite naudoti šios pjaustyklės - palaukite, aš turiu galvoje, jūs galite naudoti pjaustyklę, bet tai supainios daiktus . Nes tai, kas nutiks, pakeisiu į „Hank“ ir jie grįš prie visko, kas yra „Slicer Cache 1“, nes aš pakeičiau šio lapo sukamą lentelę. Ar realiame gyvenime jūs turėsite dvi sukamas lenteles tame pačiame lape? Nežinau, ar tu, ar ne, gerai, bet viskas taps šiek tiek pašėlusi.

Dabar pažvelkime tik į tai. Pirmas dalykas, kurį noriu padaryti, yra tai, kad įvesiu naują darbalapį - „Alt + IW“, kad įterpčiau darbalapį, ir pavadinsiu tai „DarkCave“. Galite tai vadinti kaip tik norite. Pasiimsiu tą prietaisų skydelį, kuris neveiks, nukopijuosiu tą prietaisų skydelį ir ateisiu čia į tamsų urvą, įklijuosiu jį ten, tada dešiniuoju pelės mygtuku spustelėkite ir paslėpsiu tą lapą, kad niekas niekada nematytų to pjaustyklės. Tada turėtume sugebėti jį ištrinti. Gražu, gerai. Mes tiesiog patikrinsime, ar jie vis dar dirba. Pasirinkite Charlie per Eddie ir jie abu vis dar atnaujina. Kas vyksta? Pjaustyklė, kurios nematome, paslėpta, ji taip pat atnaujinama, bet mums nerūpi, kad ji atnaujinama.

Ką daryti, jei norite, kad daiktai būtų ant skirtingų lapų? Aš čia įterpsiu naują darbalapį - Alt + IW - ir paimsiu vieną iš šių suvestinių lentelių - galbūt antrą sukimosi lentelę - ir perkelsiu ją į tą kitą lapą - taigi, „Ctrl“ + C, kad nukopijuotumėte „Pivot“ lentelę, „Ctrl“ + V, kad čia įklijuotumėte „Pivot“ lentelę. Ir jei man čia reikia turėti pjaustyklę - neįdėkite skiltelės iš šios sukamosios lentelės - turime grįžti į savo prietaisų skydelį, paimti pjaustyklę, kuri yra valdanti pjaustyklė, „Ctrl“ + C, kad padarytumėte jos kopiją, ir įklijuokite jį čia - „Ctrl“ + V. Gerai? Dabar šiame puslapyje mes neturime kodo - „Sheet4“ nėra kodo - ir aš galvojau, kad turėsiu pridėti kodą prie „Sheet4“, bet čia yra gražus dalykas: kai pakeisiu šią pjaustyklę, kas vyksta, prietaisų skydelyje tas sukamasis stalas “Atnaujinama, nors atnaujinama ta suvestinė lentelė tame lape, kuri nėra aktyvi, jie paleis kodą ir jis taip pat bus atnaujintas. Gana nuostabu, kad tai veikia.

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.

Norime padėkoti už tai, kad užsukote, pamatysime kitą kartą per kitą internetinę transliaciją iš.

Atsisiųsti failą

Atsisiųskite failo pavyzdį čia: Podcast2104.xlsm

Įdomios straipsniai...