Синхронизујте резаче из различитих скупова података - Екцел савети

Преглед садржаја

Резачи су сјајни за изведене табеле, јер можете да контролишете више изведених табела из једног скупа резача. Али - то је врста лажи. Можете да контролишете више пивот табела које потичу из истог скупа података. Када имате пивот табеле које потичу из два различита скупа података, то је прилично незгодно. Показаћу вам неки ВБА који ће вам омогућити да то изведете.

Погледајте видео

  • Како можете да направите резач за погон две стожерне табеле?
  • Ако су обе пивот табеле из истог скупа података: Изаберите Слицер, Репорт Цоннецтионс, Селецт Отхер Пивот Таблес
  • Али ако пивот табеле потичу из различитих скупова података:
  • Користите Сачувај као да бисте додатак радне свеске променили у КСЛСМ уместо у КСЛСКС
  • Користите алт = "" + ТМС и промените сигурност макронаредби на друго подешавање.
  • Алт + Ф11 да бисте дошли до ВБА
  • Цтрл + Р за приказ истраживача пројеката
  • Пронађите радни лист који садржи вашу прву стожерну табелу и резач
  • Уметните код за Ворксхеет_Упдате
  • Сакријте други резач, тако да он настави да постоји, али нико никада не може да бира између њега

Видео транскрипт

Научите Екцел за подцаст, епизода 2104: Синхронизујте резаче из различитих скупова података.

Хеј, добро дошао на нетцаст, ја сам Билл Јелен, и данашње питање није о томе како узети ове две стожерне табеле које су потекле из једног скупа података и натерати Слицер да контролише све те пивот табеле. Није ствар у томе. То је лако учинити - Слицер, Тоолс, Оптионс, или Репорт Цоннецтионс или Слицер Цоннецтионс у старој верзији и проверите да ли желите да овај Слицер контролише све те стожерне табеле. Лако, зар не? Ово питање се односи на овај радни лист, где имамо два различита скупа података и креираћемо пивот табелу од овога, а од овога-- дозволите ми сада да убрзам видео док правим ове пивот табеле. У реду, оно што ћете видети је да имам две пивот табеле, ова пивот табела је креирана из једног скупа података, а ту је и слицер који контролише ту пивот табелу;а затим имам другу пивот табелу која је креирана из другог скупа података и резач који контролише ту пивот табелу. Али апсолутно не постоји начин да овај резач контролише и ову пивот табелу и ову пивот табелу која је изграђена из другог скупа података. У реду. Али показаћу вам како се то данас ради са макронаредбом.

Ово је сада незгодно урадити. Када је питање ушло, рекао сам: „Сад, ово, мислим да то не можете учинити“. Али радио сам на томе и експериментисао и мислим да сам га коначно добио. Морам да мислим да сам га коначно успео. У реду, хајде да прођемо кроз ово. Прво, ово се чува као клск датотека. То је добар тип датотеке, осим што је ужасног типа, јер је једини тип датотеке који не дозвољава макронаредбе. Морате да промените ово из клск у клсм, или ће сав ваш рад у остатку видеа бити бачен кроз прозор. Сачувај као, промени тип датотеке у клсм или, дођавола, клсб, било који од њих ће радити. То је онај који је покварен - клск - и то је подразумевано, зар не? Кслсм, кликните на Сачувај. Ако никада раније нисте радили макронаредбе, Алт + Т за Тома, М за макро,С фор Сецурити и моћи ћете да сачувате све макронаредбе без обавештења. Треба то да промените у други, што ће омогућити вашим макроима да раде.

У реду, сада имамо две резачице. Кладим се да ово никада ниси знао, али резачи имају имена. Отићи ћемо на Слицер Тоолс, Оптионс, Слицер Сеттингс и видети да се овај зове Слицер_Наме. Онако. Идите на другу, идите на Слицер Тоолс, Оптионс, Слицер Сеттингс, овај се зове Слицер_Наме1-- не Наме наме 1, Наме1. Два таква имена.

Ево шта ћемо учинити. Прећи ћемо на ВБА-- Алт + Ф11. Ако у ВБА никада нисте радили ВБА, имаћете овај велики сиви екран. Доћи ћемо овде и рећи Виев, Пројецт Екплорер, у Пројецт Екплорер-у пронађите своју датотеку - моја се зове Подцаст 2104. Отворите Мицрософт Екцел Објецтс, а лист на коме желим да ово ради зове се Дасхбоард. Кликнућу тамо десним тастером и рећи Виев Цоде. Овај код који пишемо не може ићи у модулу као у уобичајеном макронаредбу - ово мора бити на овом радном листу. Отворите горњи леви падајући мени, Радни лист, а затим ћемо у горњем десном падајућем делу изговорити Ажурирање изведене табеле. У реду, значи, овде ће сада ићи наш код. Већ сам испекао овај код. Погледајмо код овде у бележници. Дакле, миимаћете две Слицер кеш меморије - СЦ1 и СЦ2 - једну ставку Слицер-а, а овде, управо овде, мораћете да је прилагодите. Тако су се моја два резача звала Име и Име1. У реду, мораћете тамо да ставите имена својих резача. Апплицатион.Сцреенупдатинг = Фалсе, Апплицатион.ЕнаблеЕвентс = Фалсе, а затим Слицер Цацхе 2 - очистићемо филтер, а затим за сваку ставку СИ1 и сц1.СлицерИтемс, ако је изабрана, онда ћемо направити иста ставка у Слицер Цацхе која ће бити изабрана. Ово је мала петља која ће проћи кроз онолико случајева колико се случајно налази у том резачу. У мом случају имам 11 или 12; у вашем случају, можда бисте имали више.Тако су се моја два резача звала Име и Име1. У реду, мораћете тамо да ставите имена својих резача. Апплицатион.Сцреенупдатинг = Фалсе, Апплицатион.ЕнаблеЕвентс = Фалсе, а затим Слицер Цацхе 2 - очистићемо филтер, а затим за сваку ставку СИ1 и сц1.СлицерИтемс, ако је изабрана, онда ћемо направити иста ставка у Слицер Цацхе која ће бити изабрана. Ово је мала петља која ће проћи кроз онолико случајева колико се случајно налази у том резачу. У мом случају имам 11 или 12; у вашем случају, можда бисте имали више.Тако су се моја два резача звала Име и Име1. У реду, мораћете тамо да ставите имена својих резача. Апплицатион.Сцреенупдатинг = Фалсе, Апплицатион.ЕнаблеЕвентс = Фалсе, а затим Слицер Цацхе 2 - очистићемо филтер, а затим за сваку ставку СИ1 и сц1.СлицерИтемс, ако је изабрана, онда ћемо направити иста ставка у Слицер Цацхе која ће бити изабрана. Ово је мала петља која ће проћи кроз онолико случајева колико се случајно налази у том резачу. У мом случају имам 11 или 12; у вашем случају, можда бисте имали више.поново ћете направити исту ставку у Слицер Цацхе-у која ће бити изабрана. Ово је мала петља која ће проћи кроз онолико случајева колико се случајно налази у том резачу. У мом случају имам 11 или 12; у вашем случају, можда бисте имали више.поново ћете направити исту ставку у Слицер Цацхе-у која ће бити изабрана. Ово је мала петља која ће проћи кроз онолико случајева колико се случајно налази у том резачу. У мом случају имам 11 или 12; у вашем случају, можда бисте имали више.

Када завршимо с тим, поново укључите омогућавање догађаја, поново укључите Ажурирање екрана. У реду. Дакле, узећемо овај код, копирати га и налепити овде у средину нашег макроа тако. У реду, хајде само да будемо сигурни да ћу притиснути Цтрл + Г и мој захтев је Апплицатион.ЕнаблеЕвентс, укључен или искључен - па,? Апплицатион.ЕнаблеЕвентс - и то је тачно. Ако се ваше испостави као нетачно, онда желите да се вратите овде и кажете да је = Тачно-- па, онда укључујете те догађаје. У реду. Ето, ево шта ће се догодити. Дакле, наш тренер би требало да ради овде, налази се на правом радном листу. Сачувани смо у клкм датотеци, а ја сам укључио Макрое и оно што ћемо видети је да када изаберем из левог резача, тај Слицер Цацхе 1-- И 'Изабраћу Андија преко Делла-а - ажурираће се и други Слицер. У реду. Чак и ако бих изабрао само Глорију - само Глорију - изгледа да то стварно, заиста добро функционише. Чак и ако бих притиснуо ЦТРЛ + клик, када пустим Цтрл, све три ће се ажурирати.

Али овде је проблем - увек постоји проблем - овај Резач мора да постоји, али не можете га користити. Чекајте, мислим, можете, можете користити Резач, али то ће збунити ствари. . Јер оно што ће се догодити је да ћу ово променити у Ханк, а они ће се вратити на оно што је у Слицер Цацхе 1, јер сам променио стожерну табелу на овом листу. Сада ћете у стварном животу имати две стожерне табеле на истом листу? Не знам да ли јеси или ниси, у реду, али ствари ће постати помало луде.

Сада, само да погледамо ово. Прва ствар коју желим да урадим је да убацим нови радни лист - Алт + ИВ за уметање радног листа - и назваћу ово ДаркЦаве. Можете га назвати како год желите. Узећу ону контролну таблу која неће радити, скопираћу ту контролну таблу и доћи овде у мрачну пећину и залепити је тамо, а затим десним тастером миша сакрити тај лист да нико никада не види тај резач. А онда бисмо одавде могли да га избришемо. Лепо, у реду. А ми ћемо само проверити да ли још увек раде - одаберите Цхарлиеја преко Еддиеја и обојица се и даље ажурирају. Шта се сада дешава? Резач који не можемо видети, онај који смо сакрили, такође се ажурира, али нас није брига што се ажурира.

Now, what if you want to have your things on different sheets? I'll insert a new worksheet here--Alt+IW-- and I'll take one of these pivot tables-- maybe the second pivot table-- and move it to that other sheet-- so, Ctrl+C to copy the pivot table, Ctrl+V to paste the pivot table here. And if I need to have a slicer here-- don't insert a slice from this pivot table-- we have to come back to our dashboard, take the slicer that's the controlling Slicer, Ctrl+C to make a copy of it, and paste it here-- Ctrl+V. Alright? Now, we have no code on this sheet-- there's no code on Sheet4-- and I was thinking I was going to have to add some code to Sheet4, but here's the beautiful thing: When I change this slicer, what's happening is, on the dashboard that pivot table's updating even though that pivot table on that sheet that's not active is updating, they will run the code and this will update as well. Pretty darn amazing that that works.

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.

Желимо да вам се захвалимо што сте навратили, видимо се следећи пут за још једно емитовање од.

Скини докуменат

Преузмите датотеку узорка овде: Подцаст2104.клсм

Занимљиви Чланци...