<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3854028497797027529</id><updated>2026-02-08T14:41:59.045+00:00</updated><category term="excel"/><category term="pivot"/><category term="trick"/><category term="count"/><category term="unique"/><title type='text'>Lazy VBA</title><subtitle type='html'>VBA homemade solutions for missing functions in Excel pivot tables</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://lazyvba.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3854028497797027529/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://lazyvba.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>lazy vba</name><uri>http://www.blogger.com/profile/09662529570975366246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>3</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3854028497797027529.post-1006119234932626570</id><published>2012-12-16T18:28:00.000+00:00</published><updated>2013-02-04T19:04:59.292+00:00</updated><title type='text'>The one-click number auto format</title><content type='html'>&lt;b&gt;How many times do you right click, format cell, number format, no decimals....?&lt;/b&gt;&lt;br /&gt;
Select a range, launch the macro: all numbers are&amp;nbsp;formatted according to rules explained below.&lt;br /&gt;
Best part: if you select a cell that is part of a pivot datafield, it will format the whole value field (equivalent of value field settings- number format).&lt;br /&gt;
Time and sanity saver on a daily basis. Tested on Excel 2003 and Excel 2010.&lt;br /&gt;
&lt;br /&gt;
It is tweaked for my usage but feel free to adapt it, playing on conditions and format output (end of the macro). Final format will be as good as your rules.&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;Rules&amp;nbsp;Examples:&lt;/i&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;All values between 1900 and 2020: no decimals, no 1000&#39;s separator&lt;/li&gt;
&lt;li&gt;All values between -5 and +5: &amp;nbsp;percentage format&lt;/li&gt;
&lt;li&gt;No decimals if the sum of the values has no decimals (not perfect but faster than a loop)&lt;/li&gt;
&lt;li&gt;Value between first&amp;nbsp;January&amp;nbsp;1995 and first&amp;nbsp;January&amp;nbsp;2020: Date format&lt;/li&gt;
&lt;li&gt;All values inferior to 10: two decimals if any&lt;/li&gt;
&lt;li&gt;All values inferior to 1000&amp;nbsp;: one decimal if any&lt;/li&gt;
&lt;/ul&gt;
&lt;br /&gt;
For best usage, save it within a personal macro book ( see&amp;nbsp;&lt;a href=&quot;http://www.rondebruin.nl/personal.htm&quot;&gt;http://www.rondebruin.nl/personal.htm&lt;/a&gt;) and add a shortcut in the Quick Access Toolbar or a keybord shortcut: The macro will be permanently available.&lt;br /&gt;
&lt;br /&gt;
Enjoy and suggest alternative rules in comments.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Sub oneclicknumberformat()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Application.EnableEvents = False&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Dim myarray As Variant&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Dim rCcells As Range, rFcells As Range, rAcells As Range, rngsel As Range, trng As Range&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Dim pt As PivotTable, ptdn As String, nf As String, rCell As Range, df As PivotField&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Dim i As Integer&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Set rngsel = Selection&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Set trng = rngsel&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;ptdn = &quot;none&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If rngsel.Cells.Count = 1 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If rngsel = vbNullString Then Exit Sub&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If ActiveSheet.PivotTables.Count &amp;gt; 0 And Selection.Cells.Count = 1 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For i = 1 To ActiveSheet.PivotTables.Count&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; If Not Intersect(Selection, ActiveSheet.PivotTables(i).DataBodyRange) Is Nothing Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; Set pt = ActiveSheet.PivotTables(i)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; For Each df In ActiveSheet.PivotTables(i).DataFields&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ActiveSheet.PivotTables(i).PivotSelect &quot;&#39;&quot; &amp;amp; df.Name &amp;amp; &quot;&#39;&quot;, xlDataOnly&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Set trng = Selection&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; If Not Intersect(rngsel, trng) Is Nothing Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ptdn = df.Name&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; trng.ClearFormats&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Exit For&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; Exit For&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If ptdn = &quot;none&quot; And Selection.Cells.Count &amp;gt; 1 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; On Error Resume Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Set rCcells = rngsel.SpecialCells(xlCellTypeConstants, xlNumbers)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Set rFcells = rngsel.SpecialCells(xlCellTypeFormulas, xlNumbers)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; If rCcells Is Nothing And rFcells Is Nothing Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Exit Sub&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ElseIf rCcells Is Nothing Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set trng = rFcells&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ElseIf rFcells Is Nothing Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set trng = rCcells&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;Set trng = Application.Union(rFcells, rCcells)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; On Error GoTo 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;trngmax = Application.Max(trng)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;trngmin = Application.Min(trng)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;trngmax2 = Application.Max(trngmax, Abs(trngmin))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;trngs = Application.Sum(trng)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;trngd = trngs - Int(trngs)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If ptdn = &quot;none&quot; And trngmin &amp;gt;= 34700 And trngmax &amp;lt;= 43831 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;nf = &quot;dd-mmm-yy&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;ElseIf ptdn = &quot;none&quot; And trngmin &amp;gt;= 1900 And trngmax &amp;lt;= 2020 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;nf = &quot;0&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;ElseIf trngmax2 &amp;lt; 5 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;nf = &quot;0%&quot;&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;ElseIf trngd = 0 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;nf = &quot;#,##0&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;ElseIf trngmax2 &amp;lt; 10 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;nf = &quot;#,##0.00&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;ElseIf trngmax2 &amp;lt; 1000 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;nf = &quot;#,##0.0&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;nf = &quot;#,##0&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If ptdn = &quot;none&quot; Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;trng.Select&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;trng.NumberFormat = nf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;df.NumberFormat = nf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;rngsel.Select&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Application.EnableEvents = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End Sub&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazyvba.blogspot.com/feeds/1006119234932626570/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lazyvba.blogspot.com/2012/12/the-one-click-number-auto-format.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3854028497797027529/posts/default/1006119234932626570'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3854028497797027529/posts/default/1006119234932626570'/><link rel='alternate' type='text/html' href='http://lazyvba.blogspot.com/2012/12/the-one-click-number-auto-format.html' title='The one-click number auto format'/><author><name>lazy vba</name><uri>http://www.blogger.com/profile/09662529570975366246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3854028497797027529.post-2323424953713467243</id><published>2012-08-17T23:04:00.000+01:00</published><updated>2013-02-04T19:08:26.645+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="excel"/><category scheme="http://www.blogger.com/atom/ns#" term="pivot"/><category scheme="http://www.blogger.com/atom/ns#" term="trick"/><title type='text'>Little Big Pivot: a pivot compressor</title><content type='html'>Back!&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Short version:&lt;/b&gt;&lt;br /&gt;
Creates a lighter copy of the pivot table, removing unwanted fields an values.&lt;br /&gt;
So you can share a real pivot table, as you designed it, instead of a useless copy of pivot table.&lt;br /&gt;
Lighter (email friendly), cleaner, more performance, no confidentiality issues as unwanted data are not&amp;nbsp;embedded in the new pivot table.&lt;br /&gt;
&lt;br /&gt;
The before &amp;amp; after picture:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;a href=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGL3vidkAATvBrPOZPePEyzcocKof6Snz75zj97M3gSQHYcvxvd9dmmbs5bFAK-m4qxC2Tk0hB9n8FJSAdnx2pzm-Sq27PJr4qm7QSVbFuj4eOG5uHGNKqKbWH6BLHFimDuTiIli7ZMH3Y/s1600/compressor.png&quot; imageanchor=&quot;1&quot; style=&quot;clear: left; float: left; margin-bottom: 1em; margin-right: 1em;&quot;&gt;&lt;img border=&quot;0&quot; height=&quot;210&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGL3vidkAATvBrPOZPePEyzcocKof6Snz75zj97M3gSQHYcvxvd9dmmbs5bFAK-m4qxC2Tk0hB9n8FJSAdnx2pzm-Sq27PJr4qm7QSVbFuj4eOG5uHGNKqKbWH6BLHFimDuTiIli7ZMH3Y/s400/compressor.png&quot; width=&quot;400&quot; /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;The idea is to &quot;slim&quot; a pivot:&amp;nbsp;&lt;/b&gt;&lt;br /&gt;
The macro&amp;nbsp;aggregates the values used in the pivot table as a new source for the new pivot table.&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;The new pivot table is an exact copy: same&amp;nbsp;formatting, same custom names, same value formats&lt;/li&gt;
&lt;li&gt;Only visible fields ( including&amp;nbsp;page fields&amp;nbsp;on top of pivot) are kept&lt;/li&gt;
&lt;li&gt;Filtered values won&#39;t be available in the new pivot&lt;/li&gt;
&lt;li&gt;You can use the unique count macro with this new pivot, it should be a lot faster&amp;nbsp;&amp;nbsp;and resolves the issues of grouped fields in the &amp;nbsp; &amp;nbsp; &amp;nbsp;&lt;a href=&quot;http://lazyvba.blogspot.co.uk/2010/11/improve-your-pivot-table-to-count.html&quot;&gt;http://lazyvba.blogspot.co.uk/2010/11/improve-your-pivot-table-to-count.html&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;Instructions:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Work on a copy of your document, of course&lt;/li&gt;
&lt;li&gt;Paste the code in any module&lt;/li&gt;
&lt;li&gt;Prepare your table: Move unwanted fields into the &quot;Pivot Fields List&quot;&lt;/li&gt;
&lt;li&gt;Set up your filters&lt;/li&gt;
&lt;li&gt;Run the code: two new sheets are created, one with the new pivot, one named &quot;lightdata&quot; with the new aggregated source.&lt;/li&gt;
&lt;/ul&gt;
&lt;b&gt;My comments:&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;
&lt;li&gt;Tested briefly on various versions of Excel: 2003, 2007, 2010, feedback welcome.&lt;/li&gt;
&lt;li&gt;Grouped and renamed fields are managed&lt;/li&gt;
&lt;li&gt;It only works if your data fields are sums! (no average, min, max or other calculations)&lt;/li&gt;
&lt;li&gt;Previous pivot tables and sources are still in the workbooks: delete them if your satisfied with the result.&lt;/li&gt;
&lt;li&gt;Bug with remote connection to solve&lt;/li&gt;
&lt;/ul&gt;
Example can be downloaded &lt;a href=&quot;http://dl.dropbox.com/u/58435293/lazyvba%20pivot%20compressor.xlsm&quot;&gt;here&lt;/a&gt;, dummy data (20,000 rows generated via &lt;a href=&quot;http://fakenamegenerator.com/&quot;&gt;fakenamegenerator.com&lt;/a&gt;&amp;nbsp;).&lt;br /&gt;
Code already run, so you can see the result.&lt;br /&gt;
A security warning could appear according to your settings: it&#39;s still a file with macro downloaded from internet.&lt;br /&gt;
&lt;br /&gt;
Let now know your&amp;nbsp;thoughts, or suggestions to improve our pivot tables, in the comments.&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: x-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Sub LittleBigPivot()&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&#39;by lazyvba.blogspot.com&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Dim vArr, arraypos As Variant&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Dim pfc, r, c, gt, c2 As Integer&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Dim tem As String&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Dim datarng, newdata As Range&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Dim wb As Workbook, wp, wp2, newdatasheet As Worksheet, _&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt, pt2 As PivotTable, pf, cf, rf As PivotField&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Set wb = ActiveWorkbook&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Set wp = ActiveSheet&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Set pt = wp.PivotTables(1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Err.Clear&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;On Error Resume Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;wp.Copy after:=wp&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Set wp2 = ActiveSheet&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Set pt2 = wp2.PivotTables(1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pfc = pt2.PivotFields.Count&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;r = 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;ReDim arraypos(1 To 4, 1 To 1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;For Each pf In pt2.PivotFields&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;If pf.Orientation &amp;lt;&amp;gt; xlHidden Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;If Err.Number &amp;lt;&amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;GoTo suite&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;arraypos(4, r) = pf.ChildField.Name&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;arraypos(1, r) = pf.Name&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;arraypos(2, r) = pf.Orientation&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;arraypos(3, r) = pf.Position&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;ReDim Preserve arraypos(1 To 4, 1 To UBound(arraypos, 2) + 1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;r = r + 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;suite:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Err.Clear&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;On Error GoTo 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.ManualUpdate = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;For Each pf In pt2.PageFields&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.PivotFields(pf.Name).Orientation = xlRowField&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;For Each cf In pt2.ColumnFields&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.PivotFields(cf.Name).Orientation = xlRowField&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;On Error Resume Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.DataPivotField.Orientation = xlColumnField&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;With pt2&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; .RowAxisLayout xlTabularRow&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; .InGridDropZones = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; .DisplayContextTooltips = False&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;End With&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;On Error GoTo 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;For Each rf In pt2.RowFields&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.PivotFields(rf.Name).Subtotals(1) = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.PivotFields(rf.Name).Subtotals(1) = False&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.ManualUpdate = False&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;For c = 1 To pt2.RowRange.Columns.Count - 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.RowRange.Columns(c).Offset(1, 0).Resize(pt2.RowRange.Rows.Count - 1, 1).Select&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Selection.ShowDetail = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;If pt2.RowRange.Cells(pt2.RowRange.Rows.Count, 1).Value = &quot;Grand Total&quot; Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;gt = 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;gt = 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Set datarng = Range(pt2.RowRange.Cells(1, 1), pt2.DataBodyRange. _&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Cells(pt2.DataBodyRange.Rows.Count - gt, pt2.DataBodyRange.Columns.Count))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;vArr = datarng.Value&lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;For c = 1 To pt2.RowRange.Columns.Count&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;For r = 2 To datarng.Rows.Count&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;If IsEmpty(vArr(r, c)) Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;vArr(r, c) = vArr(r - 1, c)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;If pt2.DataFields.Count = 1 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;vArr(1, datarng.Columns.Count) = pt2.DataFields(1).SourceName&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;For c2 = 1 To datarng.Columns.Count&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;vArr(1, c2) = pt2.PivotFields(vArr(1, c2)).SourceName&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;c2 = datarng.Columns.Count&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Application.DisplayAlerts = False&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;wp2.Delete&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Application.DisplayAlerts = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Worksheets.Add&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Set newdata = Range(Cells(1, 1), Cells(r - 1, c2))&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Set newdatasheet = ActiveSheet&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;newdata.Value = vArr&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;ActiveSheet.Name = &quot;lightdata&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;wp.Copy after:=wp&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Set wp2 = ActiveSheet&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Set pt2 = wp2.PivotTables(1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.ManualUpdate = False&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.SourceData = &quot;lightdata!&quot; &amp;amp; newdata.Address(ReferenceStyle:=xlR1C1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.RefreshTable&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;If UBound(arraypos, 2) &amp;gt; 1 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;For r = 1 To UBound(arraypos, 2) - 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.PivotFields(arraypos(1, r)).Orientation = arraypos(2, r)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.PivotFields(arraypos(1, r)).Position = arraypos(3, r)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;pt2.ManualUpdate = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;End Sub&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-family: Courier New, Courier, monospace; font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
</content><link rel='replies' type='application/atom+xml' href='http://lazyvba.blogspot.com/feeds/2323424953713467243/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lazyvba.blogspot.com/2012/08/little-big-pivot.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3854028497797027529/posts/default/2323424953713467243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3854028497797027529/posts/default/2323424953713467243'/><link rel='alternate' type='text/html' href='http://lazyvba.blogspot.com/2012/08/little-big-pivot.html' title='Little Big Pivot: a pivot compressor'/><author><name>lazy vba</name><uri>http://www.blogger.com/profile/09662529570975366246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGL3vidkAATvBrPOZPePEyzcocKof6Snz75zj97M3gSQHYcvxvd9dmmbs5bFAK-m4qxC2Tk0hB9n8FJSAdnx2pzm-Sq27PJr4qm7QSVbFuj4eOG5uHGNKqKbWH6BLHFimDuTiIli7ZMH3Y/s72-c/compressor.png" height="72" width="72"/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3854028497797027529.post-8336967679376073439</id><published>2010-11-18T16:52:00.004+00:00</published><updated>2012-12-12T22:17:10.838+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="count"/><category scheme="http://www.blogger.com/atom/ns#" term="excel"/><category scheme="http://www.blogger.com/atom/ns#" term="pivot"/><category scheme="http://www.blogger.com/atom/ns#" term="trick"/><category scheme="http://www.blogger.com/atom/ns#" term="unique"/><title type='text'>Improve your Excel Pivot Table to count unique values or items</title><content type='html'>&lt;b&gt;&lt;i&gt;Short Version:&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;i&gt;Updated in November 12, &amp;nbsp;faster execution.&lt;/i&gt;&lt;br /&gt;
A macro to allow a dynamic unique/distinct count field&amp;nbsp;within&amp;nbsp;your pivot table.&lt;br /&gt;
Copy the code, paste it in the right place, just renaming what you want to count.&lt;br /&gt;
Refresh the pivot: Done.&lt;br /&gt;
&lt;br /&gt;
No intervention on source data required, factors pivot fields disposition and filters into the count.&lt;br /&gt;
&lt;br /&gt;
I tried to anticipate most of the treacherous actions that treacherous users like you or me could try, to make it as adaptable as possible.&lt;br /&gt;
&lt;br /&gt;
&amp;nbsp;Unimaginative preview of unique customers buying stuff:&lt;br /&gt;
&lt;div class=&quot;separator&quot; style=&quot;clear: both; text-align: left;&quot;&gt;
&lt;img border=&quot;0&quot; height=&quot;180&quot; src=&quot;https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji5TsnnUk3-VfzRwIPinx-Vh2tnlpyzeFYp0czIcRvDmodkAD_OwTtg6ho_8MIcLcwMwP82xIktNVz90L3-xdKLoBa0z65J3rNk40_i5XotLL1DM8viSb2Apj0YUiMA1XD_8ParPRbs_Hb/s320/untitled.JPG&quot; width=&quot;320&quot; /&gt;&lt;/div&gt;
&lt;br /&gt;
&amp;nbsp; &lt;br /&gt;
&lt;b&gt;&lt;i&gt;Restrictions :&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
-English Excel 2007 or Excel 2010 only (the macro converts the data source into table format)&lt;br /&gt;
-No filter on invisible fields&lt;br /&gt;
-Save your file with xlsm extension.&lt;br /&gt;
-If you reopen your file, you may have an alert message, click&amp;nbsp;OK, refresh the pivot table.&lt;br /&gt;
&lt;br /&gt;
Also:&lt;br /&gt;
-No grouping of values&lt;br /&gt;
-Data must be within the workbook (no remote connection to database)&lt;br /&gt;
These two restrictions and slow performance can be avoided with the pivot compressor:&amp;nbsp;&lt;a href=&quot;http://lazyvba.blogspot.co.uk/2012/08/little-big-pivot.html&quot;&gt;http://lazyvba.blogspot.co.uk/2012/08/little-big-pivot.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
That’s it, I think.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;Installation :&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
-Create your Pivot Table (only one please)&lt;br /&gt;
-Open Visual Basic Editor (Alt+F11)&lt;br /&gt;
&lt;b&gt;-Paste the code in the sheet module where is your pivot table (use the tab name) and nowhere else.&lt;/b&gt;&lt;br /&gt;
-&lt;b&gt;Edit the row « tocount = &quot;name of the field&quot; » and replace name by the field name you want to count &lt;/b&gt;&lt;br /&gt;
-Come back to Excel&lt;br /&gt;
-Do a refresh or a modification on the Pivot : Unik is appearing : that’s the count of unique items!&lt;br /&gt;
-Any modification recalculates Unik :&amp;nbsp; Just play with your pivot&lt;br /&gt;
-If your’re bored of it, hiding the Unik field stops the code. Put it back in the pivot, it’s counting again.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;My comments :&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
-Totals are false (sum of unique count), but not visible (except collapsed items&amp;nbsp;)&lt;br /&gt;
-If nothing happens, events may be disabled : just run the private sub&lt;i&gt; boom&lt;/i&gt; at the beginning&lt;br /&gt;
-The method is not the most elegant, but I found it to be the fastest &lt;br /&gt;
-Code is not commented yet, and so not easily readable, please forgive me&lt;br /&gt;
&lt;br /&gt;
Enjoy and let me know your comments.&lt;br /&gt;
&lt;br /&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;b&gt;The thing:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Private Sub boom()&lt;br /&gt;
Application.EnableEvents = True&lt;br /&gt;
End Sub&lt;br /&gt;
&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Private Sub Worksheet_PivotTableUpdate(ByVal Target As PivotTable)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&#39;by lazyvba.blogspot.com&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Dim tocount As String&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;tocount = &quot;name of the field&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Application.EnableEvents = False&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Dim wb As Workbook, ws As Worksheet, wd As Worksheet, wp As Worksheet, pt As PivotTable, pf As PivotField _&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;, pi As PivotItem, str As String, str2 As String, Kode As String, totr As String, totc As String, rng As Range _&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;, li As ListObject, lo As ListObject, loc As ListColumn, rng1 As Range, rng2 As Range, t As Integer&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Dim rf As Integer&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Set wb = ActiveWorkbook&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Set wp = ActiveSheet&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Set pt = wp.PivotTables(1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;pt.Name = &quot;PT&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;t = 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For Each ws In wb.Worksheets&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For Each li In ws.ListObjects&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If li.Name = pt.SourceData Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;li.Name = &quot;Datas&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Set lo = li&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;t = 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next li&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next ws&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If t = 0 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For Each ws In wb.Worksheets&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;On Error Resume Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Set wd = ws.Range(Application.ConvertFormula(pt.SourceData _&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;, fromreferencestyle:=xlR1C1, toreferencestyle:=xlA1)).Parent&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;On Error GoTo 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next ws&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If wd.ListObjects.Count = 0 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;wd.ListObjects.Add(xlSrcRange, wd.Range(Application.ConvertFormula _&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;(pt.SourceData, fromreferencestyle:=xlR1C1, toreferencestyle:=xlA1 _&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;)), , xlYes).Name = &quot;Datas&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;wd.ListObjects(1).Name = &quot;Datas&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Set lo = wd.ListObjects(&quot;Datas&quot;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;t = 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For Each pf In pt.PivotFields&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If pf.Name = &quot;Unik&quot; Then t = 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next pf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If t = 1 Then GoTo testunik&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Setup:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;lo.ListColumns.Add&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;lo.ListColumns(lo.ListColumns.Count).Name = &quot;Visi&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;lo.ListColumns.Add&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;lo.ListColumns(lo.ListColumns.Count).Name = &quot;Kode&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;lo.ListColumns.Add&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;lo.ListColumns(lo.ListColumns.Count).Name = &quot;Unik&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;With pt&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; .ChangePivotCache ActiveWorkbook.PivotCaches. _&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Create(SourceType:=xlDatabase, SourceData:=&quot;Datas&quot;, Version:= _&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; xlPivotTableVersion12)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp;.PivotCache.Refresh&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.InGridDropZones = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.RowAxisLayout xlTabularRow&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End With&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;With pt.PivotFields(&quot;Unik&quot;)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.Orientation = 4&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; .Caption = &quot; Unik&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; .Function = xlSum&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End With&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;testunik:&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;t = 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For Each pf In pt.DataFields&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If InStrB(pf.Name, &quot;Unik&quot;) &amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;t = 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If pf.Name &amp;lt;&amp;gt; &quot; Unik&quot; Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;With pf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.Caption = &quot; Unik&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.Function = xlSum&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End With&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next pf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If t = 0 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Application.EnableEvents = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Exit Sub&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Kode = &quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;With pt&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For Each pf In pt.PageFields&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If pf.AllItemsVisible = False Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; For Each pi In pf.PivotItems&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; If pi.Visible = False Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; If Kode = &quot;&quot; Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Kode = &quot;[&quot; &amp;amp; pf.Name &amp;amp; &quot;]&quot; &amp;amp; &quot;&amp;lt;&amp;gt;&quot; &amp;amp; &quot;&quot;&quot;&quot; &amp;amp; pi.Name &amp;amp; &quot;&quot;&quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; Kode = Kode &amp;amp; &quot;,&quot; &amp;amp; &quot;[&quot; &amp;amp; pf.Name &amp;amp; &quot;]&quot; &amp;amp; &quot;&amp;lt;&amp;gt;&quot; &amp;amp; &quot;&quot;&quot;&quot; &amp;amp; pi.Name &amp;amp; &quot;&quot;&quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&amp;nbsp; &amp;nbsp; Next pi&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next pf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End With&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If Kode = &quot;&quot; Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Kode = 1&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Else&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Kode = &quot;=IF(and(&quot; &amp;amp; Kode &amp;amp; &quot;),1,0)&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;With lo.ListColumns(&quot;Visi&quot;).DataBodyRange&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.Value = Kode&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.Value = .Value&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End With&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Kode = &quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For Each pf In pt.RowFields&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If pf.Name &amp;lt;&amp;gt; &quot;Data&quot; And pf.Name &amp;lt;&amp;gt; &quot;Values&quot; Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Kode = Kode &amp;amp; &quot;[&quot; &amp;amp; pf.Name &amp;amp; &quot;]&amp;amp;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next pf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For Each pf In pt.ColumnFields&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If pf.Name &amp;lt;&amp;gt; &quot;Data&quot; And pf.Name &amp;lt;&amp;gt; &quot;Values&quot; Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Kode = Kode &amp;amp; &quot;[&quot; &amp;amp; pf.Name &amp;amp; &quot;]&amp;amp;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next pf&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If Right(Kode, 1) = &quot;&amp;amp;&quot; Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Kode = Left(Kode, Len(Kode) - 1)&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Kode = &quot;=IF([Visi]=1,&quot; &amp;amp; Kode &amp;amp; &quot;&amp;amp;[&quot; &amp;amp; tocount &amp;amp; &quot;],0)&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If Kode = &quot;&quot; Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Kode = &quot;=IF([Visi]=1,[&quot; &amp;amp; tocount &amp;amp; &quot;],0)&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;With lo&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.ListColumns(&quot;Kode&quot;).DataBodyRange.FormulaR1C1 = Kode&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.ListColumns(&quot;Kode&quot;).DataBodyRange.Value = .ListColumns(&quot;Kode&quot;).DataBodyRange.Value&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.Range.Sort key1:=&quot;Kode&quot;, order1:=xlDescending, Header:=xlYes&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.ListColumns(&quot;Unik&quot;).DataBodyRange.FormulaR1C1 = &quot;=IF(RC[-1]&amp;lt;&amp;gt;R[-1]C[-1],1,0)*[Visi]&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.ListColumns(&quot;unik&quot;).DataBodyRange.Value = .ListColumns(&quot;unik&quot;).DataBodyRange.Value&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End With&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;With pt&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.PivotCache.Refresh&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.PivotFields(&quot; Unik&quot;).NumberFormat = &quot;#&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.DataBodyRange.Font.Size = Range(&quot;a1&quot;).Font.Size&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;.DataBodyRange.Font.ColorIndex = xlAutomatic&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End With&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;pt.PivotFields(&quot; Unik&quot;).NumberFormat = &quot;#,##0&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;On Error Resume Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Range(&quot;f1&quot;).Select&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For rf = 1 To pt.RowFields.Count&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If pt.RowFields(rf).Name &amp;lt;&amp;gt; &quot;Data&quot; And pt.RowFields(rf).Position &amp;lt;&amp;gt; pt.RowFields.Count Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;str2 = pt.RowFields(rf).Name &amp;amp; &quot;[All;Total] &#39; Unik&#39;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;pt.PivotSelect str2, xlDataOnly, True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Selection.NumberFormat = &quot;&quot;&quot;&quot;&quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;For rf = 1 To pt.ColumnFields.Count&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If pt.ColumnFields(rf).Name &amp;lt;&amp;gt; &quot;Data&quot; And pt.ColumnFields(rf).Position &amp;lt;&amp;gt; pt.ColumnFields.Count Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;str2 = pt.ColumnFields(rf).Name &amp;amp; &quot;[All;Total] &#39; Unik&#39;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;pt.PivotSelect str2, xlDataOnly, True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Selection.NumberFormat = &quot;&quot;&quot;&quot;&quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Next&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If pt.RowFields.Count &amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;pt.PivotSelect &quot;&#39; Unik&#39; &#39;Column Grand Total&#39;&quot;, xlDataOnly, True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Selection.NumberFormat = &quot;&quot;&quot;&quot;&quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;If pt.ColumnFields.Count &amp;gt; 0 Then&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;pt.PivotSelect &quot;&#39; Unik&#39; &#39;Row Grand Total&#39;&quot;, xlDataOnly, True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Selection.NumberFormat = &quot;&quot;&quot;&quot;&quot;&quot;&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End If&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;On Error GoTo 0&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Range(&quot;c1&quot;).Select&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;Application.EnableEvents = True&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;End Sub&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;
&lt;span style=&quot;font-size: xx-small;&quot;&gt;&lt;br /&gt;&lt;/span&gt;</content><link rel='replies' type='application/atom+xml' href='http://lazyvba.blogspot.com/feeds/8336967679376073439/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://lazyvba.blogspot.com/2010/11/improve-your-pivot-table-to-count.html#comment-form' title='132 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3854028497797027529/posts/default/8336967679376073439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3854028497797027529/posts/default/8336967679376073439'/><link rel='alternate' type='text/html' href='http://lazyvba.blogspot.com/2010/11/improve-your-pivot-table-to-count.html' title='Improve your Excel Pivot Table to count unique values or items'/><author><name>lazy vba</name><uri>http://www.blogger.com/profile/09662529570975366246</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEji5TsnnUk3-VfzRwIPinx-Vh2tnlpyzeFYp0czIcRvDmodkAD_OwTtg6ho_8MIcLcwMwP82xIktNVz90L3-xdKLoBa0z65J3rNk40_i5XotLL1DM8viSb2Apj0YUiMA1XD_8ParPRbs_Hb/s72-c/untitled.JPG" height="72" width="72"/><thr:total>132</thr:total></entry></feed>