Preface |
|
xxv |
|
About the Author |
|
xxvii |
|
About the Website |
|
xxix |
|
Part One Introduction to Modelling, Core Themes and Best Practices |
|
1 |
(22) |
|
Chapter 1 Models of Models |
|
|
3 |
(4) |
|
|
3 |
(1) |
|
|
3 |
(1) |
|
|
3 |
(1) |
|
Backward Thinking and Forward Calculation Processes |
|
|
4 |
(3) |
|
Chapter 2 Using Models in Decision Support |
|
|
7 |
(8) |
|
|
7 |
(1) |
|
|
7 |
(2) |
|
Providing Numerical Information |
|
|
7 |
(1) |
|
Capturing Influencing Factors and Relationships |
|
|
7 |
(1) |
|
Generating Insight and Forming Hypotheses |
|
|
8 |
(1) |
|
Decision Levers, Scenarios, Uncertainties, Optimisation, Risk Mitigation and Project Design |
|
|
8 |
(1) |
|
Improving Working Processes, Enhanced Communications and Precise Data Requirements |
|
|
9 |
(1) |
|
Challenges in Using Models |
|
|
9 |
(6) |
|
The Nature of Model Error |
|
|
9 |
(1) |
|
Inherent Ambiguity and Circularity of Reasoning |
|
|
10 |
(1) |
|
Inconsistent Scope or Alignment of Decision and Model |
|
|
10 |
(1) |
|
The Presence on Biases, Imperfect Testing, False Positives and Negatives |
|
|
11 |
(1) |
|
Balancing Intuition with Rationality |
|
|
11 |
(1) |
|
Lack of Data or Insufficient Understanding of a Situation |
|
|
12 |
(1) |
|
Overcoming Challenges: Awareness, Actions and Best Practices |
|
|
13 |
(2) |
|
Chapter 3 Core Competencies and Best Practices: Meta-themes |
|
|
15 |
(8) |
|
|
15 |
(1) |
|
|
15 |
(10) |
|
Decision-support Role, Objectives, Outputs and Communication |
|
|
16 |
(1) |
|
Application Knowledge and Understanding |
|
|
17 |
(1) |
|
Skills with Implementation Platform |
|
|
17 |
(1) |
|
Defining Sensitivity and Flexibility Requirements |
|
|
18 |
(2) |
|
Designing Appropriate Layout, Input Data Structures and Flow |
|
|
20 |
(1) |
|
Ensuring Transparency and Creating a User-friendly Model |
|
|
20 |
(1) |
|
Integrated Problem-solving Skills |
|
|
21 |
(2) |
Part Two Model Design and Planning |
|
23 |
(34) |
|
Chapter 4 Defining Sensitivity and Flexibility Requirements |
|
|
25 |
(12) |
|
|
25 |
(1) |
|
Key Issues for Consideration |
|
|
25 |
(12) |
|
Creating a Focus on Objectives and Their Implications |
|
|
26 |
(1) |
|
Sensitivity Concepts in the Backward Thought and Forward Calculation Processes |
|
|
26 |
(4) |
|
|
30 |
(1) |
|
Level of Detail on Input Variables |
|
|
30 |
(1) |
|
Sensitising Absolute Values or Variations from Base Cases |
|
|
31 |
(1) |
|
Scenarios Versus Sensitivities |
|
|
32 |
(1) |
|
Uncertain Versus Decision Variables |
|
|
33 |
(1) |
|
Increasing Model Validity Using Formulae |
|
|
34 |
(3) |
|
Chapter 5 Database Versus Formulae-driven Approaches |
|
|
37 |
(10) |
|
|
37 |
(1) |
|
Key Issues for Consideration |
|
|
37 |
(10) |
|
Separating the Data, Analysis and Presentation (Reporting) Layers |
|
|
37 |
(2) |
|
The Nature of Changes to Data Sets and Structures |
|
|
39 |
(1) |
|
Focus on Data or Formulae? |
|
|
40 |
(2) |
|
|
42 |
(5) |
|
Chapter 6 Designing the Workbook Structure |
|
|
47 |
(10) |
|
|
47 |
(2) |
|
Designing Workbook Models with Multiple Worksheets |
|
|
47 |
(1) |
|
|
47 |
(1) |
|
Multiple Worksheets: Advantages and Disadvantages |
|
|
48 |
(1) |
|
Generic Best Practice Structures |
|
|
49 |
(3) |
|
The Role of Multiple Worksheets in Best Practice Structures |
|
|
49 |
(1) |
|
Type I: Single Worksheet Models |
|
|
50 |
(1) |
|
Type II: Single Main Formulae Worksheet, and Several Data Worksheets |
|
|
50 |
(1) |
|
Type III: Single Main Formulae Worksheet, and Several Data and Local Analysis Worksheets |
|
|
51 |
(1) |
|
Further Comparative Comments |
|
|
51 |
(1) |
|
Using Information from Multiple Worksheets: Choice (Exclusion) and Consolidation (Inclusion) Processes |
|
|
52 |
(7) |
|
Multi-sheet or "Three Dimensional" Formulae |
|
|
53 |
(1) |
|
Using Excel's Data/Consolidation Functionality |
|
|
54 |
(1) |
|
Consolidating from Several Sheets into a Database Using a Macro |
|
|
55 |
(1) |
|
|
56 |
(1) |
Part Three Model Building, Testing and Auditing |
|
57 |
(96) |
|
Chapter 7 Creating Transparency: Formula Structure, Flow and Format |
|
|
59 |
(20) |
|
|
59 |
(1) |
|
Approaches to Identifying the Drivers of Complexity |
|
|
59 |
(3) |
|
Taking the Place of a Model Auditor |
|
|
59 |
(1) |
|
Example: Creating Complexity in a Simple Model |
|
|
60 |
(1) |
|
Core Elements of Transparent Models |
|
|
61 |
(1) |
|
|
62 |
(5) |
|
Creating Short Audit Paths Using Modular Approaches |
|
|
63 |
(4) |
|
Creating Short Audit Paths Using Formulae Structure and Placement |
|
|
67 |
(2) |
|
Optimising Logical Flow and the Direction of the Audit Paths |
|
|
68 |
(1) |
|
Identifying Inputs, Calculations and Outputs: Structure and Formatting |
|
|
69 |
(7) |
|
|
70 |
(1) |
|
Colour-coding of Inputs and Outputs |
|
|
70 |
(3) |
|
Basic Formatting Operations |
|
|
73 |
(1) |
|
|
73 |
(2) |
|
|
75 |
(1) |
|
Creating Documentation, Comments and Hyperlinks |
|
|
76 |
(3) |
|
Chapter 8 Building Robust and Transparent Formulae |
|
|
79 |
(26) |
|
|
79 |
(1) |
|
General Causes of Mistakes |
|
|
79 |
(1) |
|
Insufficient Use of General Best Practices Relating to Flow, Formatting, Audit Paths |
|
|
79 |
(1) |
|
Insufficient Consideration Given to Auditability and Other Potential Users |
|
|
79 |
(1) |
|
Overconfidence, Lack of Checking and Time Constraints |
|
|
80 |
(1) |
|
Sub-optimal Choice of Functions |
|
|
80 |
(1) |
|
Inappropriate Use or Poor Implementation of Named Ranges, Circular References or Macros |
|
|
80 |
(1) |
|
Examples of Common Mistakes |
|
|
80 |
(5) |
|
Referring to Incorrect Ranges or To Blank Cells |
|
|
80 |
(2) |
|
Non-transparent Assumptions, Hidden Inputs and Labels |
|
|
82 |
(1) |
|
Overlooking the Nature of Some Excel Function Values |
|
|
82 |
(1) |
|
Using Formulae Which are Inconsistent Within a Range |
|
|
83 |
(1) |
|
Overriding Unforeseen Errors with IFERROR |
|
|
84 |
(1) |
|
Models Which are Correct in Base Case but Not in Others |
|
|
85 |
(1) |
|
Incorrect Modifications when Working with Poor Models |
|
|
85 |
(1) |
|
|
85 |
(6) |
|
Mechanics and Implementation |
|
|
86 |
(1) |
|
Disadvantages of Using Named Ranges |
|
|
86 |
(4) |
|
Advantages and Key Uses of Named Ranges |
|
|
90 |
(1) |
|
Approaches to Building Formulae, to Testing, Error Detection and Management |
|
|
91 |
(14) |
|
Checking Behaviour and Detecting Errors Using Sensitivity Testing |
|
|
91 |
(2) |
|
Using Individual Logic Steps |
|
|
93 |
(1) |
|
Building and Splitting Compound Formulae |
|
|
94 |
(2) |
|
Using Absolute Cell Referencing Only Where Necessary |
|
|
96 |
(1) |
|
Limiting Repeated or Unused Logic |
|
|
96 |
(1) |
|
Using Breaks to Test Calculation Paths |
|
|
97 |
(1) |
|
Using Excel Error Checking Rules |
|
|
97 |
(1) |
|
Building Error-checking Formulae |
|
|
98 |
(2) |
|
Handling Calculation Errors Robustly |
|
|
100 |
(1) |
|
Restricting Input Values Using Data Validation |
|
|
100 |
(1) |
|
|
101 |
(1) |
|
Dealing with Structural Limitations: Formulae and Documentation |
|
|
102 |
(3) |
|
Chapter 9 Choosing Excel Functions for Transparency, Flexibility and Efficiency |
|
|
105 |
(12) |
|
|
105 |
(1) |
|
|
105 |
(12) |
|
Direct Arithmetic or Functions, and Individual Cells or Ranges? |
|
|
105 |
(2) |
|
|
107 |
(2) |
|
|
109 |
(2) |
|
|
111 |
(1) |
|
Text Versus Numerical Fields |
|
|
112 |
(1) |
|
SUMIFS with One Criterion |
|
|
112 |
(1) |
|
Including Only Specific Items in a Summation |
|
|
113 |
(1) |
|
AGGREGATE and SUBTOTAL Versus Individual Functions |
|
|
114 |
(1) |
|
Array Functions or VBA User-defined Functions? |
|
|
115 |
(1) |
|
|
115 |
(1) |
|
Effective Choice of Lookup Functions |
|
|
116 |
(1) |
|
Chapter 10 Dealing with Circularity |
|
|
117 |
(26) |
|
|
117 |
(1) |
|
The Drivers and Nature of Circularities |
|
|
117 |
(2) |
|
Circular (Equilibrium or Self-regulating) Inherent Logic |
|
|
117 |
(1) |
|
Circular Formulae (Circular References) |
|
|
118 |
(1) |
|
Generic Types of Circularities |
|
|
119 |
(1) |
|
Resolving Circular Formulae |
|
|
119 |
(4) |
|
Correcting Mistakes that Result in Circular Formulae |
|
|
120 |
(1) |
|
Avoiding a Logical Circularity by Modifying the Model Specification |
|
|
120 |
(1) |
|
Eliminating Circular Formulae by Using Algebraic (Mathematical) Manipulation |
|
|
121 |
(1) |
|
Resolving a Circularity Using Iterative Methods |
|
|
122 |
(1) |
|
Iterative Methods in Practice |
|
|
123 |
(5) |
|
|
123 |
(2) |
|
Creating a Broken Circular Path: Key Steps |
|
|
125 |
(1) |
|
Repeatedly Iterating a Broken Circular Path Manually and Using a VBA Macro |
|
|
126 |
(2) |
|
|
128 |
(3) |
|
Using Excel Iterations to Resolve Circular References |
|
|
129 |
(1) |
|
Using a Macro to Resolve a Broken Circular Path |
|
|
129 |
(1) |
|
Algebraic Manipulation: Elimination of Circular References |
|
|
130 |
(1) |
|
Altered Model 1: No Circularity in Logic or in Formulae |
|
|
130 |
(1) |
|
Altered Model 2: No Circularity in Logic in Formulae |
|
|
131 |
(1) |
|
Selection of Approach to Dealing with Circularities: Key Criteria |
|
|
131 |
(12) |
|
Model Accuracy and Validity |
|
|
132 |
(1) |
|
Complexity and Transparency |
|
|
133 |
(1) |
|
Non-convergent Circularities |
|
|
134 |
(4) |
|
Potential for Broken Formulae |
|
|
138 |
(2) |
|
|
140 |
(1) |
|
Ease of Sensitivity Analysis |
|
|
140 |
(1) |
|
|
141 |
(2) |
|
Chapter 11 Model Review, Auditing and Validation |
|
|
143 |
(10) |
|
|
143 |
(1) |
|
|
143 |
(3) |
|
|
143 |
(1) |
|
|
144 |
(1) |
|
Improvement, Restructuring or Rebuild |
|
|
145 |
(1) |
|
Processes, Tools and Techniques |
|
|
146 |
(9) |
|
Avoiding Unintentional Changes |
|
|
146 |
(1) |
|
Developing a General Overview and Then Understanding the Details |
|
|
147 |
(4) |
|
Testing and Checking the Formulae |
|
|
151 |
(1) |
|
Using a Watch Window and Other Ways to Track Values |
|
|
151 |
(2) |
Part Four Sensitivity and Scenario Analysis, Simulation and Optimisation |
|
153 |
(46) |
|
Chapter 12 Sensitivity and Scenario Analysis: Core Techniques |
|
|
155 |
|
|
|
155 |
(1) |
|
Overview of Sensitivity-related Techniques |
|
|
155 |
(1) |
|
|
156 |
(4) |
|
|
156 |
(1) |
|
|
157 |
(1) |
|
|
157 |
(3) |
|
|
160 |
|
|
Example: Sensitivity of Net Present Value to Growth Rates |
|
|
160 |
(1) |
|
Example: Implementing Scenario Analysis |
|
|
160 |
|
|
Chapter 13 Using GoalSeek and Solver |
|
|
138 |
(33) |
|
|
163 |
(1) |
|
Overview of GoalSeek and Solver |
|
|
163 |
(1) |
|
Links to Sensitivity Analysis |
|
|
163 |
(1) |
|
Tips, Tricks and Limitations |
|
|
163 |
(1) |
|
|
164 |
(7) |
|
Example: Breakeven Analysis of a Business |
|
|
165 |
(1) |
|
Example: Threshold Investment Amounts |
|
|
166 |
(1) |
|
Example: Implied Volatility of an Option |
|
|
167 |
(1) |
|
Example: Minimising Capital Gains Tax Liability |
|
|
167 |
(2) |
|
Example: Non-linear Curve Fitting |
|
|
169 |
(2) |
|
Chapter 14 Using VBA Macros to Conduct Sensitivity and Scenario Analyses |
|
|
171 |
(6) |
|
|
171 |
(1) |
|
|
172 |
(5) |
|
Example: Running Sensitivity Analysis Using a Macro |
|
|
172 |
(1) |
|
Example: Running Scenarios Using a Macro |
|
|
173 |
(1) |
|
Example: Using a Macro to Run Breakeven Analysis with GoalSeek |
|
|
173 |
(2) |
|
Example: Using Solver Within a Macro to Create a Frontier of Optimum Solutions |
|
|
175 |
(2) |
|
Chapter 15 Introduction to Simulation and Optimisation |
|
|
177 |
(10) |
|
|
177 |
(1) |
|
The Links Between Sensitivity and Scenario Analysis, Simulation and Optimisation |
|
|
177 |
(2) |
|
The Combinatorial Effects of Multiple Possible Input Values |
|
|
177 |
(1) |
|
Controllable Versus Non-controllable: Choice Versus Uncertainty of Input Values |
|
|
178 |
(1) |
|
Practical Example: A Portfolio of Projects |
|
|
179 |
(3) |
|
|
179 |
(1) |
|
|
180 |
(1) |
|
Risk or Uncertainty Context Using Simulation |
|
|
180 |
(2) |
|
Further Aspects of Optimisation Modelling |
|
|
182 |
(5) |
|
|
182 |
(1) |
|
|
183 |
(1) |
|
Integrated Approaches to Optimisation |
|
|
183 |
(1) |
|
Modelling Issues and Tools |
|
|
184 |
(3) |
|
Chapter 16 The Modelling of Risk and Uncertainty, and Using Simulation |
|
|
187 |
(12) |
|
|
187 |
(1) |
|
The Meaning, Origins and Uses of Monte Carlo Simulation |
|
|
187 |
(4) |
|
|
187 |
(1) |
|
Limitations of Sensitivity and Scenario Approaches |
|
|
188 |
(1) |
|
Key Benefits of Uncertainty and Risk Modelling and the Questions Addressable |
|
|
189 |
(1) |
|
The Nature of Model Outputs |
|
|
190 |
(1) |
|
The Applicability of Simulation Methods |
|
|
190 |
(1) |
|
Key Process and Modelling Steps in Risk Modelling |
|
|
191 |
(3) |
|
|
191 |
(1) |
|
Risk Mapping and the Role of the Distribution of Input Values |
|
|
191 |
(1) |
|
The Modelling Context and the Meaning of Input Distributions |
|
|
192 |
(1) |
|
The Effect of Dependencies Between Inputs |
|
|
192 |
(1) |
|
Random Numbers and the Required Number of Recalculations or Iterations |
|
|
193 |
(1) |
|
Using Excel and VBA to Implement Risk and Simulation Models |
|
|
194 |
(2) |
|
Generation of Random Samples |
|
|
194 |
(1) |
|
Repeated Recalculations and Results Storage |
|
|
195 |
(1) |
|
Example: Cost Estimation with Uncertainty and Event Risks Using Excel/VBA |
|
|
196 |
(1) |
|
Using Add-ins to Implement Risk and Simulation Models |
|
|
196 |
(5) |
|
|
196 |
(1) |
|
Example: Cost Estimation with Uncertainty and Event Risks Using @RISK |
|
|
197 |
(2) |
Part Five Excel Functions and Functionality |
|
199 |
(186) |
|
Chapter 17 Core Arithmetic and Logical Functions |
|
|
201 |
(16) |
|
|
201 |
(1) |
|
|
201 |
(16) |
|
Example: IF, AND, OR, NOT |
|
|
202 |
(2) |
|
Example: MIN, MAX, MINA, MAXA |
|
|
204 |
(1) |
|
Example: MINIFS and MAXIFS |
|
|
204 |
(1) |
|
Example: COUNT, COUNTA, COUNTIF and Similar Functions |
|
|
205 |
(1) |
|
Example: SUM, AVERAGE, AVERAGEA |
|
|
206 |
(1) |
|
Example: SUMIF, SUMIFS, AVERAGEIF, AVERAGEIFS |
|
|
206 |
(1) |
|
|
207 |
(2) |
|
|
209 |
(1) |
|
|
209 |
(1) |
|
|
210 |
(2) |
|
|
212 |
(3) |
|
|
215 |
(2) |
|
Chapter 18 Array Functions and Formulae |
|
|
217 |
(12) |
|
|
217 |
(1) |
|
Functions and Formulae: Definitions |
|
|
217 |
(1) |
|
|
217 |
(1) |
|
Advantages and Disadvantages |
|
|
218 |
(1) |
|
Practical Applications: Array Functions |
|
|
218 |
(7) |
|
Example: Capex and Depreciation Schedules Using TRANSPOSE |
|
|
218 |
(1) |
|
Example: Cost Allocation Using SUMPRODUCT with TRANSPOSE |
|
|
218 |
(1) |
|
Example: Cost Allocation Using Matrix Multiplication Using MMULT |
|
|
219 |
(1) |
|
Example: Activity-based Costing and Resource Forecasting Using Multiple Driving Factors |
|
|
220 |
(2) |
|
Example: Summing Powers of Integers from 1 Onwards |
|
|
222 |
(3) |
|
Practical Applications: Array Formulae |
|
|
225 |
(4) |
|
Example: Finding First Positive Item in a List |
|
|
225 |
(1) |
|
Example: Find a Conditional Maximum |
|
|
226 |
(1) |
|
Example: Find a Conditional Maximum Using AGGREGATE as an Array Formula |
|
|
227 |
(2) |
|
Chapter 19 Mathematical Functions |
|
|
229 |
(14) |
|
|
229 |
(1) |
|
|
229 |
(14) |
|
|
229 |
(3) |
|
|
232 |
(1) |
|
Example: INT, ROUNDDOWN, ROUNDUP, ROUND and TRUNC |
|
|
233 |
(2) |
|
Example: MROUND, CEILING.MATH and FLOOR.MATH |
|
|
235 |
(1) |
|
|
236 |
(1) |
|
|
236 |
(1) |
|
|
237 |
(1) |
|
|
238 |
(1) |
|
Example: SINE, ASIN, DEGREES and PI() |
|
|
239 |
(2) |
|
Example: BASE and DECIMAL |
|
|
241 |
(2) |
|
Chapter 20 Financial functions |
|
|
243 |
(14) |
|
|
243 |
(1) |
|
|
243 |
(14) |
|
|
244 |
(1) |
|
|
244 |
(2) |
|
Example: PMT, IPMT, PPMT, CUMIPMT, CUMPRINC and NPER |
|
|
246 |
(2) |
|
Example: NPV and IRR for a Buy or Lease Decision |
|
|
248 |
(2) |
|
Example: SLN, DDB and VDB |
|
|
250 |
(2) |
|
|
252 |
(1) |
|
Example: Duration of Cash Flows |
|
|
252 |
(1) |
|
Example: DURATION and MDURATION |
|
|
253 |
(1) |
|
Example: PDURATION and RRI |
|
|
254 |
(1) |
|
Other Financial Functions |
|
|
255 |
(2) |
|
Chapter 21 Statistical Functions |
|
|
257 |
(42) |
|
|
257 |
(1) |
|
Practical Applications: Position, Ranking and Central Values |
|
|
258 |
(6) |
|
Example: Calculating Mean and Mode |
|
|
258 |
(2) |
|
Example: Dynamic Sorting of Data Using LARGE |
|
|
260 |
(1) |
|
|
261 |
(1) |
|
|
262 |
(1) |
|
Example: Calculating Percentiles |
|
|
262 |
(1) |
|
Example: PERCENTRANK-type Functions |
|
|
263 |
(1) |
|
Practical Applications: Spread and Shape |
|
|
264 |
(9) |
|
Example: Generating a Histogram of Returns Using FREQUENCY |
|
|
265 |
(2) |
|
Example: Variance, Standard Deviation and Volatility |
|
|
267 |
(4) |
|
Example: Skewness and Kurtosis |
|
|
271 |
(1) |
|
Example: One-sided Volatility (Semi-deviation) |
|
|
272 |
(1) |
|
Practical Applications: Co-relationships and Dependencies |
|
|
273 |
(7) |
|
Example: Scatter Plots (X-Y Charts) and Measuring Correlation |
|
|
274 |
(1) |
|
Example: More on Correlation Coefficients and Rank Correlation |
|
|
275 |
(2) |
|
Example: Measuring Co-variances |
|
|
277 |
(1) |
|
Example: Covariance Matrices, Portfolio Volatility and Volatility Time Scaling |
|
|
277 |
(3) |
|
Practical Applications: Probability Distributions |
|
|
280 |
(11) |
|
Example: Likelihood of a Given Number of Successes of an Oil Exploration Process |
|
|
282 |
(1) |
|
Example: Frequency of Outcomes Within One or Two Standard Deviations |
|
|
283 |
(1) |
|
Example: Creating Random Samples from Probability Distributions |
|
|
283 |
(1) |
|
Example: User-defined Inverse Functions for Random Sampling |
|
|
284 |
(1) |
|
Example: Values Associated with Probabilities for a Binomial Process |
|
|
285 |
(1) |
|
Example: Confidence Intervals for the Mean Using Student (T) and Normal Distributions |
|
|
285 |
(2) |
|
Example: the CONFIDENCE.T and CONFIDENCE.NORM Functions |
|
|
287 |
(2) |
|
Example: Confidence Intervals for the Standard Deviation Using Chi-squared |
|
|
289 |
(1) |
|
Example: Confidence Interval for the Slope of Regression Line (or Beta) |
|
|
289 |
(2) |
|
Practical Applications: More on Regression Analysis and Forecasting |
|
|
291 |
(8) |
|
Example: Using LINEST to Calculate Confidence Intervals for the Slope (or Beta) |
|
|
291 |
(1) |
|
Example: Using LINEST to Perform Multiple Regression |
|
|
292 |
(1) |
|
Example: Using LOGEST to Find Exponential Fits |
|
|
293 |
(1) |
|
Example: Using TREND and GROWTH to Forecast Linear and Exponential Trends |
|
|
294 |
(1) |
|
Example: Linear Forecasting Using FORECAST.LINEAR |
|
|
295 |
(1) |
|
Example: Forecasting Using the FORECAST.ETS Set of Functions |
|
|
296 |
(3) |
|
Chapter 22 Information Functions |
|
|
299 |
(8) |
|
|
299 |
(1) |
|
|
300 |
(7) |
|
Example: In-formula Comments Using ISTEXT, ISNUMBER or N |
|
|
300 |
(1) |
|
Example: Building a Forecast Model that Can Be Updated with Actual Reported Figures |
|
|
300 |
(1) |
|
Example: Detecting Consistency of Data in a Database |
|
|
301 |
(1) |
|
Example: Consistent use of "N/A" in Models |
|
|
301 |
(2) |
|
Example: Applications of the INFO and CELL Functions: An Overview |
|
|
303 |
(1) |
|
Example: Creating Updating Labels that Refer to Data or Formulae |
|
|
303 |
(2) |
|
Example: Showing the User Which Recalculation Mode the File Is On |
|
|
305 |
(1) |
|
Example: Finding the Excel Version Used and Creating Backward Compatible Formulae |
|
|
305 |
(1) |
|
Example: File Location and Structural Information Using CELL, INFO, SHEET and SHEETS |
|
|
306 |
(1) |
|
Chapter 23 Date and Time Functions |
|
|
307 |
(6) |
|
|
307 |
(1) |
|
|
308 |
(5) |
|
Example: Task Durations, Resource and Cost Estimation |
|
|
308 |
(1) |
|
Example: Keeping Track of Bookings, Reservations or Other Activities |
|
|
308 |
(1) |
|
Example: Creating Precise Time Axes |
|
|
309 |
(1) |
|
Example: Calculating the Year and Month of a Date |
|
|
309 |
(1) |
|
Example: Calculating the Quarter in Which a Date Occurs |
|
|
310 |
(1) |
|
Example: Creating Time-based Reports and Models from Data Sets |
|
|
311 |
(1) |
|
Example: Finding Out on What Day of the Week You Were Born |
|
|
311 |
(1) |
|
Example: Calculating the Date of the Last Friday of Every Month |
|
|
311 |
(1) |
|
Example: the DATEDIF Function and Completed Time Periods |
|
|
312 |
(1) |
|
Chapter 24 Text Functions and Functionality |
|
|
313 |
(12) |
|
|
313 |
(1) |
|
|
314 |
(11) |
|
Example: Joining Text Using CONCAT and TEXTJOIN |
|
|
314 |
(1) |
|
Example: Splitting Data Using the Text-to-columns Wizard |
|
|
315 |
(1) |
|
Example: Converting Numerical Text to Numbers |
|
|
316 |
(1) |
|
Example: Dynamic Splitting Text into Components I |
|
|
316 |
(1) |
|
Example: Dynamic Splitting Text into Components II |
|
|
317 |
(1) |
|
Example: Comparing LEFT, RIGHT, MID and LEN |
|
|
317 |
(1) |
|
Example: Dynamic Splitting Text into Components III |
|
|
318 |
(1) |
|
Example: Comparing FIND and SEARCH |
|
|
319 |
(1) |
|
Example: the UPPER and LOWER Functions |
|
|
319 |
(1) |
|
Example: the PROPER Function |
|
|
319 |
(1) |
|
Example: the EXACT Function |
|
|
320 |
(1) |
|
Example: Comparing REPLACE with SUBSTITUTE |
|
|
320 |
(1) |
|
Example: the REPT Function |
|
|
320 |
(1) |
|
Example: the CLEAN and TRIM Functions |
|
|
321 |
(1) |
|
Example: Updating Model Labels and Graph Titles |
|
|
322 |
(1) |
|
Example: Creating Unique Identifiers or Keys for Data Matching |
|
|
323 |
(2) |
|
Chapter 25 Lookup and Reference Functions |
|
|
325 |
(30) |
|
|
325 |
(1) |
|
Practical Applications: Basic Referencing Processes |
|
|
326 |
(2) |
|
Example: the ROW and COLUMN Functions |
|
|
326 |
(1) |
|
Example: the ROWS and COLUMNS Functions |
|
|
327 |
(1) |
|
Example: Use of the ADDRESS Function and the Comparison with CELL |
|
|
327 |
(1) |
|
Practical Applications: Further Referencing Processes |
|
|
328 |
(7) |
|
Example: Creating Scenarios Using INDEX, OFFSET or CHOOSE |
|
|
328 |
(2) |
|
Example: Charts that Can Use Multiple or Flexible Data Sources |
|
|
330 |
(1) |
|
Example: Reversing and Transposing Data Using INDEX or OFFSET |
|
|
331 |
(3) |
|
Example: Shifting Cash Flows or Other Items over Time |
|
|
334 |
(1) |
|
Example: Depreciation Schedules with Triangle Calculations |
|
|
334 |
(1) |
|
Practical Applications: Combining Matching and Reference Processes |
|
|
335 |
(10) |
|
Example: Finding the Period in Which a Condition is Met Using MATCH |
|
|
335 |
(1) |
|
Example: Finding Non-contiguous Scenario Data Using Matching Keys |
|
|
336 |
(1) |
|
Example: Creating and Finding Matching Text Fields or Keys |
|
|
336 |
(1) |
|
Example: Combining INDEX with MATCH |
|
|
337 |
(1) |
|
Example: Comparing INDEX-MATCH with V- and HLOOKUP |
|
|
338 |
(5) |
|
Example: Comparing INDEX-MATCH with LOOKUP |
|
|
343 |
(1) |
|
Example: Finding the Closest Matching Value Using Array and Other Function Combinations |
|
|
344 |
(1) |
|
Practical Applications: More on the OFFSET Function and Dynamic Ranges |
|
|
345 |
(4) |
|
Example: Flexible Ranges Using OFFSET (I) |
|
|
345 |
(1) |
|
Example: Flexible Ranges Using OFFSET (II) |
|
|
346 |
(1) |
|
Example: Flexible Ranges Using OFFSET (III) |
|
|
347 |
(1) |
|
Example: Flexible Ranges Using OFFSET (IV) |
|
|
347 |
(2) |
|
Practical Applications: The INDIRECT Function and Flexible Workbook or Data Structures |
|
|
349 |
(3) |
|
Example: Simple Examples of Using INDIRECT to Refer to Cells and Other Worksheets |
|
|
349 |
(2) |
|
Example: Incorporating Data from Multiple Worksheet Models and Flexible Scenario Modelling |
|
|
351 |
(1) |
|
Example: Other Uses of INDIRECT - Cascading Drop-down Lists |
|
|
352 |
(1) |
|
Practical Examples: Use of Hyperlinks to Navigate a Model, and Other Links to Data Sets |
|
|
352 |
(3) |
|
Example: Model Navigation Using Named Ranges and Hyperlinks |
|
|
353 |
(2) |
|
Chapter 26 Filters, Database Functions and PivotTables |
|
|
355 |
(32) |
|
|
355 |
(1) |
|
Issues Common to Working with Sets of Data |
|
|
356 |
(3) |
|
Cleaning and Manipulating Source Data |
|
|
356 |
(1) |
|
Static or Dynamic Queries |
|
|
356 |
(1) |
|
Creation of New Fields or Complex Filters? |
|
|
357 |
(1) |
|
Excel Databases and Tables |
|
|
357 |
(2) |
|
|
359 |
(1) |
|
Practical Applications: Filters |
|
|
359 |
(11) |
|
Example: Applying Filters and Inspecting Data for Errors or Possible Corrections |
|
|
359 |
(3) |
|
Example: Identification of Unique Items and Unique Combinations |
|
|
362 |
(1) |
|
Example: Using Filters to Remove Blanks or Other Specified Items |
|
|
363 |
(2) |
|
Example: Extraction of Data Using Filters |
|
|
365 |
(1) |
|
Example: Adding Criteria Calculations to the Data Set |
|
|
365 |
(1) |
|
|
366 |
(3) |
|
Example: Extraction of Data Using Advanced Filters |
|
|
369 |
(1) |
|
Practical Applications: Database Functions |
|
|
370 |
(3) |
|
Example: Calculating Conditional Sums and Maxima Using DSUM and DMAX |
|
|
370 |
(1) |
|
Example: Implementing a Between Query |
|
|
371 |
(1) |
|
Example: Implementing Multiple Queries |
|
|
371 |
(2) |
|
Practical Applications: PivotTables |
|
|
373 |
(14) |
|
Example: Exploring Summary Values of Data Sets |
|
|
373 |
(3) |
|
Example: Exploring Underlying Elements of the Summary Items |
|
|
376 |
(1) |
|
|
376 |
(2) |
|
Example: Timeline Slicers |
|
|
378 |
(2) |
|
Example: Generating Reports Which Ignore Errors or Other Specified Items |
|
|
380 |
(1) |
|
Example: Using the GETPIVOTDATA Functions |
|
|
380 |
(2) |
|
Example: Creating PivotCharts |
|
|
382 |
(1) |
|
Example: Using the Excel Data Model to Link Tables |
|
|
383 |
(4) |
|
Chapter 27 Selected Short-cuts and Other Features |
|
|
387 |
|
|
|
387 |
(1) |
|
Key Short-cuts and Their Uses |
|
|
387 |
(6) |
|
Entering and Modifying Data and Formulae |
|
|
388 |
(2) |
|
|
390 |
(1) |
|
Auditing, Navigation and Other Items |
|
|
391 |
(2) |
|
|
393 |
(1) |
|
Other Useful Excel Tools and Features |
|
|
393 |
(4) |
|
|
393 |
(1) |
|
|
393 |
|
Part Six Foundations of VBA and Macros |
|
385 |
(108) |
|
Chapter 28 Getting Started |
|
|
397 |
(16) |
|
|
397 |
(1) |
|
|
397 |
(2) |
|
|
398 |
(1) |
|
Creating User-defined Functions |
|
|
398 |
(1) |
|
Detecting and Reacting to Model Events |
|
|
398 |
(1) |
|
Enhancing or Managing the User Interface |
|
|
399 |
(1) |
|
|
399 |
(1) |
|
|
399 |
(7) |
|
Adding the Developer Tab to Excel's Toolbar |
|
|
399 |
(1) |
|
|
399 |
(2) |
|
|
401 |
(1) |
|
Typical Adaptations Required When Using Recorded Code |
|
|
402 |
(1) |
|
|
403 |
(1) |
|
|
404 |
(1) |
|
|
405 |
(1) |
|
|
406 |
(7) |
|
Example: Using Excel Cell Values in VBA |
|
|
406 |
(1) |
|
Example: Using Named Excel Ranges for Robustness and Flexibility |
|
|
407 |
(1) |
|
Example: Placing a Value from VBA Code into an Excel Range |
|
|
408 |
(1) |
|
Example: Replacing Copy/Paste with an Assignment |
|
|
409 |
(1) |
|
Example: A Simple User-defined Function |
|
|
409 |
(1) |
|
Example: Displaying a Message when a Workbook is Opened |
|
|
410 |
(3) |
|
Chapter 29 Working with Objects and Ranges |
|
|
413 |
(12) |
|
|
413 |
(1) |
|
Overview of the Object Model |
|
|
413 |
(3) |
|
Objects, Properties, Methods and Events |
|
|
413 |
(1) |
|
Object Hierarchies and Collections |
|
|
414 |
(1) |
|
|
415 |
(1) |
|
Using the With...End With Construct |
|
|
415 |
(1) |
|
Finding Alternatives to the Selection or Activation of Ranges and Objects |
|
|
416 |
(1) |
|
Working with Range Objects: Some Key Elements |
|
|
416 |
(9) |
|
Basic Syntax Possibilities and Using Named Ranges |
|
|
416 |
(1) |
|
Named Ranges and Named Variables |
|
|
417 |
(1) |
|
The CurrentRegion Property |
|
|
417 |
(1) |
|
The xlCellTypeLastCell Property |
|
|
418 |
(1) |
|
Worksheet Names and Code Names |
|
|
419 |
(1) |
|
|
419 |
(1) |
|
|
420 |
(1) |
|
|
421 |
(1) |
|
|
421 |
(1) |
|
|
421 |
(1) |
|
|
422 |
(1) |
|
Defining Multi-cell Ranges |
|
|
422 |
(1) |
|
Using Target to React to Worksheet Events |
|
|
422 |
(1) |
|
Using Target to React to Workbook Events |
|
|
423 |
(2) |
|
Chapter 30 Controlling Execution |
|
|
425 |
(16) |
|
|
425 |
(1) |
|
|
425 |
(10) |
|
Input Boxes and Message Boxes |
|
|
425 |
(1) |
|
|
425 |
(1) |
|
|
426 |
(1) |
|
|
427 |
(1) |
|
|
427 |
(1) |
|
|
428 |
(1) |
|
|
428 |
(1) |
|
Calculation and Calculate |
|
|
429 |
(3) |
|
|
432 |
(1) |
|
|
432 |
(1) |
|
|
433 |
(1) |
|
Accessing Excel Worksheet Functions |
|
|
433 |
(1) |
|
Executing Procedures Within Procedures |
|
|
434 |
(1) |
|
|
435 |
(1) |
|
|
435 |
(6) |
|
Example: Numerical Looping |
|
|
435 |
(1) |
|
Example: Listing the Names of All Worksheets in a Workbook |
|
|
436 |
(1) |
|
Example: Adding a New Worksheet to a Workbook |
|
|
437 |
(1) |
|
Example: Deleting Specific Worksheets from a Workbook |
|
|
437 |
(1) |
|
Example: Refreshing PivotTables, Modifying Charts and Working Through Other Object Collections |
|
|
438 |
(3) |
|
Chapter 31 Writing Robust Code |
|
|
441 |
(14) |
|
|
441 |
(1) |
|
|
441 |
(11) |
|
From the Specific to the General |
|
|
441 |
(1) |
|
Adapting Recorded Code for Robustness |
|
|
442 |
(1) |
|
|
442 |
(1) |
|
Comments and Indented Text |
|
|
442 |
(1) |
|
|
443 |
(1) |
|
Passing Arguments ByVal or ByRef |
|
|
443 |
(2) |
|
|
445 |
(2) |
|
Using Worksheet Code Numbers |
|
|
447 |
(1) |
|
Assignment Statements, and Manipulating Objects Rather Than Selecting or Activating Them |
|
|
447 |
(1) |
|
Working with Ranges Instead of Individual Cells |
|
|
448 |
(1) |
|
Data Types and Variable Declaration |
|
|
448 |
(1) |
|
|
449 |
(1) |
|
Working with Arrays in VBA |
|
|
450 |
(1) |
|
Understanding Error Codes: An Introduction |
|
|
451 |
(1) |
|
Further Approaches to Testing, Debugging and Error-handling |
|
|
452 |
(3) |
|
|
452 |
(1) |
|
|
453 |
(1) |
|
Implementing Error-handling Procedures |
|
|
454 |
(1) |
|
Chapter 32 Manipulation and Analysis of Data Sets with VBA |
|
|
455 |
(18) |
|
|
455 |
(1) |
|
|
455 |
(18) |
|
Example: Working Out the Size of a Range |
|
|
455 |
(2) |
|
Example: Defining the Data Set at Run Time Based on User Input |
|
|
457 |
(1) |
|
Example: Working Out the Position of a Data Set Automatically |
|
|
457 |
(2) |
|
Example: Reversing Rows (or Columns) of Data I: Placement in a New Range |
|
|
459 |
(1) |
|
Example: Reversing Rows (or Columns) of Data II: In Place |
|
|
460 |
(1) |
|
Example: Automation of Other Data-related Excel Procedures |
|
|
461 |
(1) |
|
Example: Deleting Rows Containing Blank Cells |
|
|
462 |
(1) |
|
Example: Deleting Blank Rows |
|
|
463 |
(1) |
|
Example: Automating the Use of Filters to Remove Blanks or Other Specified Items |
|
|
464 |
(4) |
|
Example: Performing Multiple Database Queries |
|
|
468 |
(1) |
|
Example: Consolidating Data Sets That Are Split Across Various Worksheets or Workbooks |
|
|
469 |
(4) |
|
Chapter 33 User-defined Functions |
|
|
473 |
(20) |
|
|
473 |
(1) |
|
Benefits of Creating User-defined Functions |
|
|
473 |
(1) |
|
Syntax and Implementation |
|
|
474 |
(1) |
|
|
475 |
(18) |
|
Example: Accessing VBA Functions for Data Manipulation: Val, StrReverse and Split |
|
|
476 |
(1) |
|
Example: A Wrapper to Access the Latest Excel Function Version |
|
|
477 |
(1) |
|
Example: Replication of IFERROR for Compatibility with Excel 2003 |
|
|
478 |
(1) |
|
Example: Sum of Absolute Errors |
|
|
479 |
(1) |
|
Example: Replacing General Excel Calculation Tables or Ranges |
|
|
480 |
(1) |
|
Example: Using Application.Caller to Generate a Time Axis as an Array Function |
|
|
480 |
(2) |
|
Example: User-defined Array Functions in Rows and Columns |
|
|
482 |
(2) |
|
Example: Replacing Larger Sets of Excel Calculations: Depreciation Triangles |
|
|
484 |
(1) |
|
Example: Sheet Reference Functions |
|
|
485 |
(2) |
|
Example: Statistical Moments when Frequencies Are Known |
|
|
487 |
(2) |
|
Example: Rank Order Correlation |
|
|
489 |
(2) |
|
Example: Semi-deviation of a Data Set |
|
|
491 |
(2) |
Index |
|
493 |
|