Griezējinstrumentu sinhronizēšana no dažādām datu kopām - Excel padomi

Satura rādītājs

Sagriezēji ir lieliski piemēroti rakurstabulām, jo ​​jūs varat kontrolēt vairākas rakurstabulas no viena sagriezēju komplekta. Bet - tas ir sava veida meli. Varat kontrolēt vairākas rakurstabulas, kas nāk no vienas un tās pašas datu kopas. Kad jums ir rakurstabulas, kas nāk no divām dažādām datu kopām, tas ir diezgan sarežģīti. Es jums parādīšu kādu VBA, kas ļaus jums to izvilkt.

Skatīties video

  • Kā jūs varat sadalītājam vadīt divus pagrieziena galdus?
  • Ja abas rakurstabulas nāca no vienas un tās pašas datu kopas: atlasiet sadalītāju, ziņot par savienojumiem, izvēlieties citas rakurstabulas
  • Bet, ja rakurstabulas nāca no dažādām datu kopām:
  • Izmantojiet Saglabāt kā, lai mainītu darbgrāmatas paplašinājumu uz XLSM, nevis uz XLSX
  • Izmantojiet alt = "" + TMS un nomainiet makro drošību uz otro iestatījumu.
  • Alt + F11, lai nokļūtu VBA
  • Ctrl + R, lai parādītu projekta pētnieku
  • Atrodiet darblapu, kurā ir jūsu pirmā rakurstabula un griezējs
  • Ievietojiet darblapas_Update kodu
  • Paslēpiet otro griezēju prom, lai tas saglabātu pastāvēšanu, taču neviens no tā nevar izvēlēties

Video atšifrējums

Uzziniet programmu Excel for Podcast, 2104. sērija: Sinhronizējiet sagriezējus no dažādām datu kopām.

Sveiki, laipni lūdzam atpakaļ netcast apraidē, es esmu Bils Jelens, un šodienas jautājums nav par to, kā paņemt šīs divas rakurstabulas, kas nāk no vienas datu kopas, un likt Slicer kontrolēt visas šīs rakurstabulas. Par to nav runa. Tas ir viegli izdarāms - sagriezējs, Rīki, Opcijas, vai nu Ziņot par savienojumiem, vai arī par veco versiju - un pārbaudiet, vai vēlaties, lai šis griezējs kontrolētu visas šīs rakurstabulas. Viegli, vai ne? Šis jautājums ir par šo darblapu, kur mums ir divas dažādas datu kopas, un mēs no tā izveidosim rakurstabulu un no šī - tagad ļaujiet man paātrināt video, kamēr es veidoju šīs rakurstabulas. Labi, tagad jūs redzēsiet, ka man ir divas rakurstabulas, šī rakurstabula ir izveidota no vienas datu kopas, un ir griezējs, kas kontrolē šo rakurstabulu;un tad man ir otra rakurstabula, kas izveidota no citas datu kopas, un griezējs, kas kontrolē šo rakurstabulu. Bet nav pilnīgi nekādu iespēju panākt, lai šī sagriezēja kontrolētu gan šo rakurstabulu, gan šo rakurstabulu, kas veidota no citas datu kopas. Labi. Bet es jums parādīšu, kā to izdarīt šodien ar makro.

Tagad to izdarīt ir sarežģīti. Kad ienāca jautājums, es teicu: "Tagad, es domāju, ka jūs to nevarat izdarīt." Bet es esmu pie tā strādājis un eksperimentējis, un es domāju, ka es beidzot to saņēmu. Man jādomā, ka beidzot to dabūju. Labi, tāpēc pārdzīvosim to. Pirmkārt, tas tiek saglabāts kā xlsx fails. Tas ir lielisks faila tips, izņemot to, ka tas ir briesmīgs faila tips, jo tas ir vienīgais faila tips, kas nepieļauj makro. Jums tas jāmaina no xlsx uz xlsm, vai arī viss jūsu darbs uz pārējo videoklipu tiks izmests pa logu. Saglabāt kā, mainiet faila tipu uz xlsm vai, heck, xlsb, darbosies kāds no šiem. Tas ir salauzts - xlsx--, un tas ir noklusējums, traks, vai ne? Noklikšķiniet uz Saglabāt. Ja vēl nekad neesat darījis makro, Alt + T Tomam, M Macro,S drošībai, un jūs varēsiet saglabāt visus makro bez paziņojuma. Nomainiet to uz otro, kas ļaus jūsu makro darboties.

Labi, tagad mums ir divas šķēlītes. Varat derēt, ka jūs to nekad nezinājāt, bet sagriezējiem ir nosaukumi. Mēs ejam uz Slicer Tools, Options, Slicer Settings un redzam, ka šo sauc Slicer_Name. Tāds. Pārejiet uz otro, dodieties uz sadaļu Slicer Tools, Options, Slicer Settings, to sauc Slicer_Name1 - nevis Name Space 1, Name1. Divi tādi vārdi.

Lūk, ko mēs darīsim. Mēs pārejam uz VBA - Alt + F11. Ja VBA nekad neesat veicis VBA, jums būs šis lielais pelēkais ekrāns. Mēs nāksim šeit un teiksim View, Project Explorer, Project Explorer atrodiet jūsu failu - mans sauc Podcast 2104. Atveriet Microsoft Excel objektus, un lapu, kurā es vēlos, lai tā darbotos, sauc par Dashboard. Es ar peles labo pogu noklikšķiniet tur un saku Skatīt kodu. Šis mūsu rakstītais kods nevar atrasties modulī kā parastā makro - tam jābūt šajā darblapā. Atveriet augšējo kreiso nolaižamo izvēlni Darblapa, pēc tam augšējā labajā nolaižamajā sarakstā mēs teiksim rakurstabulas atjauninājumu. Labi, tāpēc mūsu kods tagad iet. Es jau iepriekš esmu cepis šo kodu. Apskatīsim kodu šeit, bloknotā. Tātad, mēsJums būs divas Slicer kešatmiņas - SC1 un SC2 - viens Slicer elements, un tad tieši šeit tas būs jāpielāgo. Tāpēc manas divas šķēlītes sauca Vārds un Vārds1. Labi, jums tur būs jāievieto savi griezēju vārdi. Application.Screenupdating = False, Application.EnableEvents = False un pēc tam Slicer Cache 2 - mēs notīrīsim filtru un pēc tam katram vienumam SI1 un sc1. SlicerItems, ja tas ir atlasīts, tad mēs izveidosim to pašu vienumu Slicer Cache, kas jāizvēlas. Šī ir maza cilpa, kas darbosies cauri, lai gan daudzi priekšmeti atrodas šajā šķēlītē. Manā gadījumā man ir 11 vai 12; jūsu gadījumā jums varētu būt vairāk.Tāpēc manas divas šķēlītes sauca Vārds un Vārds1. Labi, jums tur būs jāievieto savi griezēju vārdi. Application.Screenupdating = False, Application.EnableEvents = False un pēc tam Slicer Cache 2 - mēs notīrīsim filtru un pēc tam katram vienumam SI1 un sc1. SlicerItems, ja tas ir atlasīts, tad mēs izveidosim to pašu vienumu Slicer Cache, kas jāizvēlas. Šī ir maza cilpa, kas darbosies cauri, lai gan daudzi priekšmeti atrodas šajā šķēlītē. Manā gadījumā man ir 11 vai 12; jūsu gadījumā jums varētu būt vairāk.Tāpēc manas divas šķēlītes sauca Vārds un Vārds1. Labi, jums tur būs jāievieto savi griezēju vārdi. Application.Screenupdating = False, Application.EnableEvents = False un pēc tam Slicer Cache 2 - mēs notīrīsim filtru un pēc tam katram vienumam SI1 un sc1. SlicerItems, ja tas ir atlasīts, tad mēs izveidosim to pašu vienumu Slicer Cache, kas jāizvēlas. Šī ir maza cilpa, kas darbosies cauri, lai gan daudzi priekšmeti atrodas šajā sagriezējā. Manā gadījumā man ir 11 vai 12; jūsu gadījumā jums varētu būt vairāk.gatavojas izveidot to pašu vienumu Slicer Cache, kas jāizvēlas. Šī ir maza cilpa, kas darbosies cauri, lai gan daudzi priekšmeti atrodas šajā šķēlītē. Manā gadījumā man ir 11 vai 12; jūsu gadījumā jums varētu būt vairāk.gatavojas izveidot to pašu vienumu Slicer Cache, kas jāizvēlas. Šī ir maza cilpa, kas darbosies cauri, lai gan daudzi priekšmeti atrodas šajā šķēlītē. Manā gadījumā man ir 11 vai 12; jūsu gadījumā jums varētu būt vairāk.

Kad tas ir paveikts, atkal ieslēdziet iespējošanas pasākumus, atkal ieslēdziet ekrāna atjaunināšanu. Labi. Tātad, mēs paņemsim šo kodu, nokopēsim šo kodu un ielīmēsim to šeit sava makro vidū. Labi, tagad tikai pārliecinieties, ka es nospiedīšu Ctrl + G, un mans lūgums ir Lietojumprogramma. Iespējot vai izslēgt ieslēgt notikumus - tātad,? Application.EnableEvents-- un tā ir taisnība. Ja jūsu viedoklis izrādās nepatiess, tad jūs vēlaties atgriezties šeit un teikt, ka tā ir = Patiesi - tāpēc jūs ieslēdzat šos notikumus. Labi. Lūk, kas notiks. Tātad mūsu trenerim vajadzētu strādāt šeit, tas ir pareizajā darblapā. Mēs esam saglabāti xlxm failā, un es ieslēdzu makro, un tas, ko mēs redzēsim, ir tas, ka tad, kad es izvēlos no kreisās Slicer, Slicer Cache 1 - esEs izvēlēšos Endiju caur Dellu - gatavojas atjaunināt arī otru sagriezēju. Labi, un pat tad, ja es izvēlētos tikai Gloria - tikai Gloria - izskatās, ka tas darbojas ļoti, ļoti labi. Pat ja es nospiedu CTRL + klikšķi, kad es atlaidīšu Ctrl, viņi visi trīs tiks atjaunināti.

Bet šeit ir gotcha - vienmēr ir gotcha - šis Slicer, tam ir jāpastāv, bet jūs nevarat izmantot šo Slicer - pagaidiet, es domāju, ka jūs varat, jūs varat izmantot Slicer, bet tas sajauks heck no lietām . Tā kā notiks, es mainīšu to uz Hanku, un viņi atgriezīsies pie visa, kas atrodas Slicer Cache 1, jo es mainīju šīs lapas rakurstabulu. Vai reālajā dzīvē vienā un tajā pašā lapā jums būs divas rakurstabulas? Es nezinu, vai jūs esat, vai neesat, labi, bet viss kļūs mazliet traks.

Tagad to vienkārši apskatīsim. Pirmā lieta, ko es vēlos darīt, ir tas, ka es ievietošu jaunu darblapu - Alt + IW darblapas ievietošanai - un es to saucu par DarkCave. Jūs to varat saukt kā vien vēlaties. Es paņemšu to informācijas paneli, kas nedarbosies, es nokopēšu to informācijas paneli un atnākšu šeit uz tumšo alu un ielīmēšu to tur, un pēc tam ar peles labo pogu noklikšķiniet un paslēpšu šo lapu, lai neviens nekad neredzētu to sadalītāju. Un tad no šejienes mums vajadzētu būt iespējai to izdzēst. Jauki, labi. Mēs tikai pārbaudīsim, vai viņi joprojām strādā - izvēlieties Čārliju caur Ediju, un viņi abi joprojām tiek atjaunināti. Kas notiek? Šķēlētājs, kuru mēs nevaram redzēt, tas, kuru esam paslēpuši, tas arī tiek atjaunināts, taču mums ir vienalga, ka tas tiek atjaunināts.

Ko darīt, ja vēlaties, lai jūsu mantas būtu uz dažādām lapām? Es šeit ievietošu jaunu darblapu - Alt + IW - un paņemšu vienu no šīm rakurstabulām - varbūt otro rakurstabulu - un pārvietošu to uz citu lapu - tātad, lai kopētu, nospiediet Ctrl + C rakurstabulu, Ctrl + V, lai šeit ielīmētu pagrieziena tabulu. Un, ja man šeit ir nepieciešams griezējs - neievietojiet šķēli no šīs rakurstabulas - mums jāatgriežas pie mūsu informācijas paneļa, paņemiet griezēju, kas ir kontrolējošais griezējs, Ctrl + C, lai izveidotu tā kopiju, un ielīmējiet to šeit - Ctrl + V. Labi? Tagad mums šajā lapā nav koda - Sheet4 nav koda - un es domāju, ka man būs jāpievieno kods Sheet4, bet šeit ir skaista lieta: kad es mainu šo sagriezēju, notiek tas, informācijas panelī, kas ir pagrieziena galds "s atjaunināšana, pat ja tā rakurstabula tajā lapā, kas nav aktīva, tiek atjaunināta, viņi palaidīs kodu un arī tas tiks atjaunināts. Diezgan pārsteidzoši, ka tas darbojas.

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.

Vēlaties pateikties, ka apstājāties, mēs tiksimies nākamreiz, lai skatītu citu netcast no.

Lejupielādēt failu

Lejupielādējiet faila paraugu šeit: Podcast2104.xlsm

Interesanti raksti...