USC Marshall School of Business 
wilmeth@usc.edu 
Dashboards_and_Reports.docx 
5/15/2013  Page 31 of 50  
Understanding the Macro to Update the Price Earnings Ratio Chart 
After typing the code for each company in the previous example, it occurred to me that this wouldn’t be very efficient if 
we were dealing with more than just a handful of companies.  The question is, how do we change the chart to match the 
company’s data w
ithout writing an IF statement for each company?  
The PE ratio data for ACME on the MTXFormat sheet is in row 14 and ACME’s company number is 1.
The PE ratio data for Mom Corp. is in row 15, Oceanic Airlines in row 16 and so on.  If we add 13 to any of these 
company’s number, it will correspond to the row that company’s data is on.  We will create a variable named RN that is 
equal to each company’s row number plus 13 and then use RN in the row part of the code’s 
address.  To do this, we need 
to do two things: 
Set the variable RN equal to whatever value is in cell P6 on the Dashboard sheet plus 13. 
Use RN in the address of the series with the concatenation operator (&). 
The final code is shown below.  Note that there must be a space on both sides of the ampersand   &   or this will return an 
error.  It is broken down on the next page. 
ActiveChart.SeriesCollection(1).Name = "=MTXFormat!A14
ActiveChart.SeriesCollection(1).Values = "=MTXFormat!B14:F14
We know we need to set the chart's 
values and name using the structure 
shown to the right. It specifies the 
address of the numbers to use for 
each company. 
We also know that the radio 
buttons return a number 
representing the company chosen 
by the user and store it in cell P6.    
What if we could use the company 
numbers to specify the row to use 
for each company?  For example, 
for ACME, use row 14. 
Sub ChangeChartSeries_PERatio() 
RN = Worksheets("Dashboard").Range("P6").Value + 13 
ActiveSheet.ChartObjects("PEChart").Activate 
ActiveChart.SeriesCollection(1).Name = "=MTXFormat!A" & RN 
ActiveChart.SeriesCollection(1).Values = "=MTXFormat!B" & RN & ":F" & RN 
N 
End Sub 
Pdf rotate one page - rotate PDF page permanently in C#.net, ASP.NET, MVC, Ajax, WinForms, WPF
Empower Users to Change the Rotation Angle of PDF File Page Using C#
pdf reverse page order online; rotate single page in pdf reader
Pdf rotate one page - VB.NET PDF Page Rotate Library: rotate PDF page permanently in vb.net, ASP.NET, MVC, Ajax, WinForms, WPF
PDF Document Page Rotation in Visual Basic .NET Class Application
permanently rotate pdf pages; rotate pdf page
USC Marshall School of Business 
wilmeth@usc.edu 
Dashboards_and_Reports.docx 
5/15/2013  Page 32 of 50  
Step A:  Creating the Macro to Update the PE Ratio Chart 
Follow the steps below to create the code shown at the bottom of the previous page. 
1.  Press ALT + F11 to access the VBA editor. 
2. 
Click below the previous macro (after its “End Sub”) and type the code shown on the previous page.
3. 
Test the macro by going back to the “
Dashboard
” sheet of Excel and 
run the macro (Developer 
Macro). 
More on the Concatenation Operator 
The concatenation operator (&) is used to glue together a text string whose parts come from different places.  The text part 
of the string must be in quotes “” but the variable name cannot be.  Note also there must be a space on both sides of the &.
If RN is 14, this comes out to be: 
Sub ChangeChartSeries_PERatio() 
RN = Worksheets("Dashboard").Range("P6").Value + 13 
ActiveSheet.ChartObjects("PEChart").Activate 
ActiveChart.SeriesCollection(1).Name = "=MTXFormat!A" & RN 
ActiveChart.SeriesCollection(1).Values = "=MTXFormat!B" & RN & ":F" & RN 
End Sub 
This is the name of our macro. 
This sets the value of the variable RN equal to 
whatever company number is in cell P6 on the 
Dashboard sheet plus 13. If ACME is selected (1) 
then RN becomes 14. This corresponds to the same 
row number ACME PE ratio data is in. 
You must activate a chart to affect it. 
This specifies what cell contains the 
legend to use for the chart.  All legends 
are in column A but the row number is 
given by the value of RN.  For example, if 
the ACME (1) is the company selected 
then RN becomes 14 and the address is: 
MTXFormat!A14 
This specifies what cells 
contain the series values for 
the company selected. The 
column range is always B 
through F but it is up to RN 
to specify the row number.  
For ACME(1), RN is 14 and 
the address becomes: 
MTXFormat!B14:F14 
Macros must end in “End Sub”.
"=MTXFormat!B"  &  RN  &  ":F"  &  RN 
&  RN 
=MTXFormat!B14:F14 
VB.NET PDF Page Delete Library: remove PDF pages in vb.net, ASP.
If you are looking for a solution to conveniently delete one page from your PDF document, you can use this VB.NET PDF Library, which supports a variety of PDF
rotate pages in pdf online; pdf rotate single page and save
C# PDF File Merge Library: Merge, append PDF files in C#.net, ASP.
C# developers can easily merge and append one PDF document to document imaging toolkit, also offers other advanced PDF document page processing and
rotate individual pages in pdf; rotate all pages in pdf
USC Marshall School of Business 
wilmeth@usc.edu 
Dashboards_and_Reports.docx 
5/15/2013  Page 33 of 50  
Step B:  Stringing the Macros Together with "Call" 
We could have just added the code below just above the “
End Sub
” of our ChangeChartSeries_PMChart
macro but we 
didn’t.  It is its own sub procedure.
We can however tell our ChangChartSeires_PMChart macro to run our ChangeChartSeries_PEChart once it is done 
running using the “Call” command.
1. 
Just above the “End Sub” of the ChageChartSeries_PMChart macro, type the co
de circled below. 
Calling Macros stored in other Modules (of the same file) 
Note that this assumes that the macro you are calling is within the same module.  If it is in a different module, you must 
precede it with “Module”.  For example, if it were i
n Module2:  Call Module2.ChangeChartSeries_PERatio 
Testing the Macro 
1. 
If you click a different company on the “Dashboard” sheet, both the Profit Margin chart and the Price Earnings chart 
should both update to reflect the company you selected. 
RN = Worksheets("Dashboard").Range("P6").Value + 13 
ActiveSheet.ChartObjects("PEChart").Activate 
ActiveChart.SeriesCollection(1).Name = "=MTXFormat!A" & RN 
ActiveChart.SeriesCollection(1).Values = "=MTXFormat!B" & RN & ":F" & RN 
VB.NET PDF File Merge Library: Merge, append PDF files in vb.net
all. This guiding page will help you merge two or more PDF documents into a single one in a Visual Basic .NET imaging application.
how to reverse pages in pdf; how to rotate pdf pages and save
C# PDF Page Extract Library: copy, paste, cut PDF pages in C#.net
Extract PDF Pages, Copy Pages from One PDF File and Paste into Others in C#.NET Program. Free PDF document processing SDK supports PDF page extraction, copying
rotate a pdf page; reverse page order pdf online
USC Marshall School of Business 
wilmeth@usc.edu 
Dashboards_and_Reports.docx 
5/15/2013  Page 34 of 50  
Exercise 5:  Creating the Earnings per Share Chart (Pivot Table Chart & Macro) 
In this section we will create the Earnings Per Share chart shown below.  It is based on the data on the "DataForPivot
sheet and is in database format.  We could build another dynamic table as we did in Exercise 1 but now that we are using 
macros, creating a PivotChart will be much faster.  In this exercise, we will do the following: 
Create a PivotChart based on the data on the "DataForPivot" sheet. 
Use a macro to make the company displayed on the chart match the company selected by the user. 
VB.NET PDF Annotate Library: Draw, edit PDF annotation, markups in
to display it. Thus, PDFPage, derived from REPage, is a programming abstraction for representing one PDF page. Annotating Process.
pdf rotate page and save; rotate pdf pages
C# PDF Page Delete Library: remove PDF pages in C#.net, ASP.NET
Using RasterEdge Visual C# .NET PDF page deletion component, developers can easily select one or more PDF pages and delete it/them in both .NET web and Windows
pdf page order reverse; pdf rotate pages and save
USC Marshall School of Business 
wilmeth@usc.edu 
Dashboards_and_Reports.docx 
5/15/2013  Page 35 of 50  
Step A:  Creating the PivotTable 
In this section we will create the PivotTable that our PivotChart will be based upon. 
1.  Click the "DataForPivot" sheet. 
2.  Click in any cell within the data (e.g. B4). 
3.  From the menu, click "Insert 
PivotTable". 
Excel should have included the entire table as the Table/Range 
and suggests you place the PivotTable on a "New Worksheet". 
4.  Click "OK" to accept these settings. 
5.  Build the PivotTable as shown below in steps a-d. 
6.  Hide the Totals: 
a.  Click in the PivotTable to make its menu options appear. 
b.  Click the "Design" tab. 
c.  Click the "Grand Totals" button and then click "Off for Rows and Columns".  
Your PivotTable should 
resemble the image to the 
right. 
d.  Drag "Value $
into "
Σ
Values".  
c.  Drag "Year" into 
nto 
"Axis Fields" (aka 
"Rows").  
a.  Drag "Company
into "Report 
Filter".  
b.  Drag "Financial" into 
nto 
"Legend Field" (aka 
"Columns").  
C# PDF: C# Code to Process PDF Document Page Using C#.NET PDF
for developers on how to rotate PDF page in different two different PDF documents into one large PDF C# PDF Page Processing: Split PDF Document - C#.NET PDF
rotate pages in pdf permanently; pdf expert rotate page
C# PDF copy, paste image Library: copy, paste, cut PDF images in
This C#.NET example describes how to copy an image from one page of PDF document and paste it into another page. // Define input and output documents.
saving rotated pdf pages; rotate one page in pdf
USC Marshall School of Business 
wilmeth@usc.edu 
Dashboards_and_Reports.docx 
5/15/2013  Page 36 of 50  
Step B:  Creating the PivotChart 
We will now create the PivotChart from the data in our PivotTable 
1.  Click in the PivotTable to make its menu options appear. 
2.  From the "Options" (or "Analyze" if 2013) menu tab click the "PivotChart
button. 
3.  Click the "Line" category. 
4.  Click the 2D Line chart button then click "OK".  
5.  Your chart should appear on the sheet. 
Note that sometimes Excel switches the legend with the x-
axis and your chart won't look right.  If this has happened, 
click the chart, click the "Design" tab, and then click the 
button "Switch Row/Column". 
3.  Reversing the Years (Largest to Smallest) 
a.  Right click one of 
of 
the years and select 
"Sort".  
b.  Select "Sort Largest to 
Smallest".  
USC Marshall School of Business 
wilmeth@usc.edu 
Dashboards_and_Reports.docx 
5/15/2013  Page 37 of 50  
4.  Hiding the grey field buttons on the chart. 
a.  Click the PivotChart to make its menu tabs appear. 
b.  Click the "Analyze" tab. 
c.  Click "Field Buttons" then "Hide All". 
5.  Naming the PivotTable 
We don't need to name the chart but we will need to name (or at least 
know the name of) our PivotTable. 
a.  Click anywhere within the PivotTable.  
b.  From the menu, click the "Options" (or "Analyze") tab. 
c.  In "PivotTable Name", type:   EPS_PivotTable  and press enter. 
6.  Naming the Sheet the PivotTable is on 
We will need to refer to our sheet name in macro code so let's give it something meaningful. 
a.  Double click the sheet tab at the bottom of the screen. 
b.  Type:   PTSheet   and press enter.   
Step C:  Copying the PivotChart to the "Dashboard" Sheet 
We will now copy our PivotChart to its final destination on the "Dashboard" sheet.  Note that its data is linked to the 
PivotTable on the "PTSheet".  Any changes we make the PivotTable data will affect the chart on the PDSheet and the 
Dashboard sheet.  (However, formatting changes made directly to the charts 
themselves will not affect one another.) 
1.  Click your PivotChart to select it. 
2.  Copy it to the clipboard (Control + C)
3.  Click in the location on the "Dashboard" sheet where you would like to 
place it. 
4.  Paste it (Control + V). 
5.  Size and move the chart as desired. 
Step D:  Naming the Earnings Per Share Chart Located on the Dashboard Sheet:  "EPSChart" 
Because we might refer to this chart in Macro code, we should give it a meaningful name. 
1.  Click the "Dashboard" sheet and click the chart you just created to select it. 
Excel 2013 
Click in the "Name" box, type:  EPSChart  then press enter.  
Excel 2010 
Click the "Layout" tab, click in the "Chart Name" box, type:  
EPSChart and press enter. 
USC Marshall School of Business 
wilmeth@usc.edu 
Dashboards_and_Reports.docx 
5/15/2013  Page 38 of 50  
Step E:  Creating a Macro to Update the Earning Per share Chart to Match the Company Selected 
In this section, we will create the code to control which company's data is used in the PivotTable based on the radio button 
the user selects back on the Dashboard sheet. 
Sub Macro5() 
Sheets("PTSheet").Select 
ActiveSheet.PivotTables("EPS_PivotTable").PivotFields("Company").CurrentPage = "(All)" 
With ActiveSheet.PivotTables("EPS_PivotTable").PivotFields("Company") 
.PivotItems("Mom Corp.").Visible = False 
.PivotItems("Oceanic Airlines").Visible = False 
.PivotItems("Stark Industries").Visible = False 
.PivotItems("Tyrell Corp.").Visible = False 
.PivotItems("Umbrella").Visible = False 
.PivotItems("Wonka").Visible = False 
End With 
End Sub 
Recorder Code 
If you were to record 
yourself changing the 
pivot table's Company 
filter, you would get 
something similar to the 
code shown to the right.  
It selects the sheet, sets 
the company filter to 
show all, and then makes 
the visibility of all 
companies except the one 
we selected "False". 
First Attempt at Code 
After looking at what the 
recorder did, I created the 
IF structure for each 
company as shown to the 
right.  It works but it is a 
lot of typing and doesn't 
adapt itself if you add 
more companies to your 
database.  You would 
have to remember to 
append the code or you 
would get the wrong 
answer. 
Final Code (Next Page) 
After Googling VBA 
forums and some trial and 
error, I discovered code 
that is much shorter, 
adaptable, and most 
importantly, seems to 
work.  It is shown on the 
next page. 
Sub ChangePivotChartSeries1() 
Sheets("PTSheet").Select 
ActiveSheet.PivotTables("EPS_PivotTable").PivotFields("Company").CurrentPage = "(All)" 
'ACME 
If Worksheets("Dashboard").Range("P7").Value = "ACME" Then 
With Sheets("PTSheet").PivotTables("EPS_PivotTable").PivotFields("Company") 
.PivotItems("Mom Corp.").Visible = False 
.PivotItems("Oceanic Airlines").Visible = False 
.PivotItems("Stark Industries").Visible = False 
.PivotItems("Tyrell Corp.").Visible = False 
.PivotItems("Umbrella").Visible = False 
.PivotItems("Wonka").Visible = False 
End With 
'Umbrella 
ElseIf Worksheets("Dashboard").Range("P7").Value = "Umbrella" Then 
With Sheets("PTSheet").PivotTables("EPS_PivotTable").PivotFields("Company") 
.PivotItems("Mom Corp.").Visible = False 
.PivotItems("Acme").Visible = False 
.PivotItems("Oceanic Airlines").Visible = False 
.PivotItems("Stark Industries").Visible = False 
.PivotItems("Tyrell Corp.").Visible = False 
.PivotItems("Wonka").Visible = False 
End With 
End If 
Sheets("Dashboard").Select 
End Sub 
To fit this page, I omitted the code for Mom Corp., Oceanic Airlines, Start Industries, 
Tyrell Corp., and Wonka.  Their structure is the same as the companies shown:  set 
"Value" to the company and make the "Visible" of all other companies "False". 
USC Marshall School of Business 
wilmeth@usc.edu 
Dashboards_and_Reports.docx 
5/15/2013  Page 39 of 50  
Typing the Code 
1.  Press ALT + 11 to toggle to the VBA editor. 
2.  In a module, type the code shown below. 
How it Works 
Step F:  Testing the code 
We will test the code in this section. 
1.  Click the "Dashboard" sheet and select one of the Companies from the radio buttons we created. 
2.  Click the "Developer" menu tab and click the "Macros" button. 
3.  Click the macro "ChangePivotChartSeries" then click run. 
4.  Debug as needed. (Remember, Control + Shift + F8 usually stops the debugger.) 
Step G:  Calling the "ChangePivotChartSeries" Macro 
Clicking the Company radio buttons runs the "ChangeChartSeries_ProfitMargin" macro.  After it runs, we need it to run 
the "ChangePivotchartSeries" macro. 
1.  Press ALT + F11 to access the VBA editor. 
2.  View the "ChangeChartSeries_ProfitMargin" macro by double clicking Module1. 
3.  At the bottom of the code just above "End Sub", type:  Call  
ChangePivotChartSeries 
Sub ChangePivotChartSeries() 
CO = Worksheets("Dashboard").Range("P7").Value 
Worksheets("PTSheet").PivotTables("EPS_PivotTable").PivotFields("Company").ClearAllFilters 
Worksheets("PTSheet").PivotTables("EPS_PivotTable").PivotFields("Company").CurrentPage = CO 
End Sub 
Sub ChangePivotChartSeries() 
CO = Worksheets("Dashboard").Range("P7").Value 
Worksheets("PTSheet").PivotTables("EPS_PivotTable").PivotFields("Company").ClearAllFilters 
Worksheets("PTSheet").PivotTables("EPS_PivotTable").PivotFields("Company").CurrentPage = CO 
End Sub 
This is the name of our macro. 
CO is the name of a variable.  It is equal to whatever 
company is displayed in cell P7 on the Dashboard 
sheet when the macro is run. 
This line clears any existing Company filters from the 
EPS_PivotTable existing on the PTSheet sheet. 
This line tells the EPS_PivotTable to filter the 
Company using the value of the Variable "CO". 
Mine was in a 
different module 
(Module3) so I had 
to proceed the macro 
name with the name 
of the module as 
shown. 
(If necessary, specify 
the module name.) 
USC Marshall School of Business 
wilmeth@usc.edu 
Dashboards_and_Reports.docx 
5/15/2013  Page 40 of 50  
4.  If you click the company radio buttons, our PivotChart on the Dashboard sheet should now update.  
Exercise 6:  Vlookup() and the Camera Tool to Display Company Information 
This exercise covers how to change which company information is displayed in the table at the bottom of our dashboard 
based upon which company radio button the user selects.  The easiest method of doing this is with VLookup().  No 
macros are needed in this example!  We will also use the Camera tool. 
The company displayed 
in P7 changes when the 
user selects its ratio 
button.  (See Exercise 1). 
Vlookup() 
Vlookup() populates these cells with 
the information in the table below 
based upon the company name 
displayed in cell P7 on the 
Dashboard sheet. 
CompanyInfo Sheet 
Dashboard Sheet 
Camera 
We will 
use the 
Camera 
Tool to 
make the 
table on the 
Company-
Info sheet 
display on 
the 
Dashboard 
sheet. 
Documents you may be interested
Documents you may be interested