Save and Load PivotTable configuration at runtime - excel

I'm looking for a way to save and load the entire Excel pivot table configuration using VBA. I'd like to have several layouts(ie. grouping, columns, filters, etc) for a single pivot table that would be selectable from a combo box. Is there something like that already written?

This is something that I intend to put into a commercial PivotTable addin I'm working on (but I haven't coded it up yet). Basically the way to achieve this most simply is to simply store a copy of each of the the PivotTable configurations you want on a hidden sheet, and when the user selects the one they want from a dropdown simply swap it for the one currently viewable.

Related

Editing data through a filter in Excel

I have a large imported .csv as a (Query) table in an Excel workbook. I'd like for users of the workbook to be able to select a small subset of that data and update some values without having to play around with filters on the table.
To that end, I've set up a FILTER on a separate sheet, something like:
=FILTER(my_table[some_column], my_table[id_column]="some value")
That pulls in values from the relevant column and displays them.
My question: is there any way to allow users to edit the values retrieved with the FILTER, so that the changes are reflected in the original table? Attempting to edit such a value now just edits the underlying field, causing the FILTER to update and display #SPILL! (which makes sense, since there is not enough free space to render the result).
I've looked at options for FILTER, and thought about writing some custom VBA code to do what FILTER does "manually", and then watch the sheet for updates in that range - but that seems like a lot of coding to do something I would imagine is more commonly needed?
Am I going to have to code this up in VBA? Or is there some alternative approach to using the FILTER?

How to create a list of all ticked/non-ticked filter in an excel pivot table

This, I hope, is a really simple question but it might not be possible.
In excel, I have used multiple filters in a pivot table, I now want to create a list of the options ticked from the various filters.
How can I create a list/copy all the ticked (or un-ticked) boxes. I have around 800 filters with about 250 boxes ticked.
The Manual approach:
Select a cell in the PivotTable. Then from the PivotTable Tools>Analyze tab use the Select icon to select the entire PivotTable. Copy it and paste it somewhere else. Drag every field out of it, leaving just the Customers field in it as a Rows field. There's your list.
If you add a slicer, and connect it to both PivotTables, then any changes to the Customer field in your original Pivot will flow through to this new one.
The VBA Approach:
See my UDF at https://superuser.com/questions/1254703/add-slicer-selections-to-sheet-in-a-list-excel-vba/1255885#1255885
And if you want a way to 'recall' a filter, then check out my answer here:
Pivotfields multiple filter

Copy Filters from one PowerPivot PivotTable to another

I have 2 PivotTables that were created from PowerPivot connections. I would like the second PivotTable to change based on a selection the user makes on the first PivotTable. I have some VBA background, so you don't need to write the whole code but point me to the right functions/structure.
If you use slicers, you can simply link both tables to the same set of slicers. You can even have multiple copies of each slicer.
It's the same in all versions of Excel since 2010. Here's a link.
Edit: Adding information from my comment below here.
You can use this technique even when you're explicitly using a filter on the pivot table, whether by adding a field to the Filters section, or by putting that field on the row/column labels and then limiting the selection based on that row/column header drop down. You can mix and match these as well, with Pivot1 having the field in question in the Filters section, and Pivot2 having the field in the Rows section.
Just create your two pivot tables as normal, and then connect both to the same slicer. This slicer can be hidden on another sheet that is not displayed to the end users. This solution is much more expedient than the VBA solutions I've seen.

How do I apply data filter to only the table range and not the whole row?

I have got two adjacent tables. When I apply data filter on first table, it filters the whole row hiding rows from 2nd table as well. How do I restrict filter to only the first table range?
To answer your direct question How do I restrict filter to only the first table range? the answer is - you can't.
Reading the comments it seems what you need is to display the filtered table data next to a chart and another table. There is a little know tool in Excel that you can use to achieve this - the Camera Tool. With this you can create a dynamic image of a range and place it where you want. The image updates when a filter is applied to the source range, without affecting the rows on the Dashboard sheet.
Screenshots to demonstrate:
Setup with tables on seperate sheets, and camera images beside chart on dashboard sheet
With Filter applied to Table A
The Camera tool is not on the Ribbon (Excel 2010) or the standard toolbars (Excel 2003). You need to add it using Customisation. (Add to Qucik Access Toolbar in 2010 or Tools/Customisation Menu in 2003)
Unfortunately you won't be able to do that. When you filter, it filters the entire row (something to think about would be how the row number would display if that weren't the case). You will need to restructure your setup if you wish to prevent that (not sure of your particular use case, so sorry I can't give a more specific suggestion).
I had a similar issue, where i had a table I wanted to remain static - like a key, but wanted to filter the main table.
To get around this, I copied the static table, and pasted it as an image. This way, when you filter on the main table, the image remains where you have put it.
A simple workaround for this general issue that others may have mentioned (but I don't see here):
You can't filter just a range (e.g. a few columns in a spreadsheet), but you can sort just a range. And by sorting the range, then deleting some blocks of unwanted cells in the range, then sorting the range back to the original order, you can fake a filter.
A bit clunky, but easy for some jobs if you're careful.

How to select entire excel spreadsheet for pivot table?

I want to be able to select and reference all of the tabs in my excel spreadsheet (to get totals of everything), but the data source only allows one tab to be selected... is there a way to select and use the entire workbook in the pivot table?
Thank you!
You actually just have a data formatting problem. You're using tabs to separate devices by departments instead of simply creating a department field/column and putting everything in one tab. The data was likely delivered to you that way, but don't let the delivery format define the true working format of the data.
Combine everything in one tab, and then you'll be able to use the data in a pivot table just fine.
If you have more data than will fit in a tab, put it in a database such as MS Access, MS SQLServer or mySQL, and then tell excel to use the database as the pivot table source.
I think Jonathan M has the best answer, but here's a way to do it using SQL that I've used successfully.
I don't know any easy way of doing this, but you could write a macro to copy and paste all your existing sheets onto a single new sheet (assuming there's enough room on a single sheet).
In 2007 Multiple Consolidated Ranges isn't in the default pivot table window. You need to create your pivot table, click on it, hit Alt + D, then P. Click back to step one and you'll have the option for multiple consolidated ranges.
Select the data on any of the one sheet and hit Alt D > P. It will show you Step 1 of 3 for PivotTable Wizard. Now select Multiple Consolidation Ranges and hit Next.
Select and add different fields from different tabs and it will create a consolidated range for your PivotTable and then you can run your PivotTable based on data located on different tabs of sheet at the same time.
Hope it helps.

Resources