Vous êtes sur la page 1sur 42

Sample Problem FastExcel Output and Explanation

This workbook contains the results of a FastExcel analysis of three


versions of the same spreadsheet: Before, After and NoNamesAfter.
If you like a challenge, look at the Before workbook and work out where the calculation
bottlenecks are and what needs doing to reduce the calculation time from 22 seconds to 0.03
seconds. Or just look at the FastExcel Analysis results, and read this explanation.

The Before workbook takes 22 seconds to recalculate at 1200MHZ, the After workbook takes 0.17
seconds to recalculate, and the NoNamesAfter workbook takes under 0.03 seconds, on the same
machine.
All workbooks produce the same results, but the After and NoNamesAfter workbooks have been
performance optimised using FastExcel.
The difference between After and NoNamesAfter is that After makes extensive use of dynamic range
names, whilst NoNamesAfter has had the names removed. This also makes it much easier to see how
some of the performance optimisation has been done.

The sample workbooks are loosely based on the customer-driven market segmentation model built for
BT Cellnet and RS Consulting.

The FastExcel analysis was done on a system with a 1200MHZ AMD Athlon and 768MB RAM using
Excel 2000 SP3 and Windows XP.

This workbook is designed to be used in conjunction with the FastExcel V2 Sample Problem Guide
(FXLSampleProblemV2.pdf)

Note: for a more detailed explanation of FastExcel output refer to the user manual, which is available
online, and is also downloadable in PDF format, on the DecisionModels website
http://www.DecisionModels.com
e
r.

0.03

e
w

or

g
The BEFORE workbook, The version and
with the date and time of FastExcel WorkBook Profile FastExcel can make
Excel calculate only Version 2.1 Build 443 build of FastExcel
the profile. the Active Workbook, Mixed Mode settings show when mixed-
mode worksheets will be calculated.
Physical Environment Profile: 9/9/2004 12:53 F:\My Documents\FastExcel\Before.xls or All workbooks.

RAM(K) 322,756 785,888 Workbook Settings Calculation Options


Swap File(K) 241,360 ### Shared Decimal Places Protection Excel Calc Settings Workbook Calc settings
Excel Memory(K) 7,225 80,000 Shared 0 Fixed 0 Structure 0 Workbook Mode All Mixed Mode Other
FileSize(K) 2,723 Changes 1 Places 2 Windows 0 Current Mode Manual Full 1 UpdateRemoteRefs 1
Windows Win XP Saved 1 Backup 0 Password 0 Before Save 0 Manual 0 PrecisionAsDisplay 0
MHZ 1200 Format Normal Styles 6 Views 0 Initial Mode First Book Selected Sheets 0 1904 DateSystem 0
Excel Version 9 Environment Counts Iteration 0 Restore after Open 0 SaveXternalLinks 1
Calculation Engine 92512 Temp 32 VBE 9 Addins 10 Max Iters/change 100/0.001 Disabled on Open 0 Accept Labels 1
A 1200 MHZ AMD 90% of the sheet calculation UsedRange waste uses up memory, increases
Very high calculation time per formula
PC was used.
WorkSheet Profiles time is used on this sheet filesize and slows down calculation
Cell Counts Calc Time(Millisec) Sheet MicroSecs Range Other UBytes Unused Cells Page Shapes HypLinks
Sheetname Used Const CondFmt Formula Used Max Sheet Sheet Calc OvHead /Formula Mem(K) Mem(K) per Cell %Waste %Sparse Breaks Count Count
Answers 2,621,440 185 1,152 2,470 6,372.9 5,956.5 5,880.8 None 2,380.9 241 25 92.8 100% 100% 0 10 0
Products 16,777,216 39 0 20,787 2,533.5 532.1 536.8 None 25.8 1,825 828 89.7 100% 100% 0 39 0
Respondents 851,968 13 0 2,171 100.7 18.7 17.5 None 8.1 87 20 41.0 100% 100% 0 12 0
UniVerse 350 137 0 81 22.9 15.2 14.6 None 180.8 6 621 27.6 0% 38% 0 18 0
ProductData 312,993 4,273 0 533 45.3 13.3 13.7 None 25.8 65 512 13.9 98% 98% 0 9 0
Sectors 117 10 0 96 5.7 14.1 13.5 7.8 59.1 5 0 47.7 0% 9% 0 6 0
ProductNames 12 12 0 0 0.3 8.5 10.4 10.1 0.0 0 508 21.3 0% 0% 0 0 0
Explanation 533 40 0 0 0.3 10.1 9.9 9.6 0.0 5 0 123.2 85% 92% 0 0 0
Counts 12 7 0 5 3.7 9.1 8.5 4.8 740.7 0 0 21.3 0% 0% 0 0 0
RespondentData 589,680 1,512 0 0 61.6 8.6 8.2 None 0.0 14 512 9.6 100% 100% 0 9 0
SegmentNames 16 16 0 0 0.2 8.5 8.0 7.8 0.0 0 424 19.0 0% 0% 0 0 0
Other 0
Totals 21,154,337 6,244 1,152 26,143 9,147.1 6,594.8 6,522.1 None 249.5 2,249 3,451 46.0 99.8% 99.8% 103 0

WorkBook Summary
Sheets Cell Counts Calc Time(Millisec) % Book MicroSecs Range Total TBytes Unused Cells Pivot XLLinks Names
Count Used Const CondFmt Formula Re Calc Full Calc Volatile OvHead /Formula Mem(K) Mem(K) per Cell %Waste %Sparse Cache(K) Count Count
11 21,154,337 6,244 1,152 26,143 21,804.2 21,677.9 100.6% 15,155.8 829.2 2,249 5,701 180.2 99.8% 99.8% 0 0 135

Over 15 seconds of calculation


Excel's Smart Recalculation engine is really time can be eliminated by
struggling with this workbook, probably because FastExcel's Optimise Worksheet
of the number of volatile functions being used. Sequence command.
FastExcel Optimised Worksheet Sequence and CrossReferences Version 2.1 Build 444

Physical Environment Profile: 9/11/2004 18:06 F:\My Documents\FastExcel\Before.xls

RAM(K) 334,232 785,888 Workbook Settings Calculation Options


Swap File(K) 261,144 1,399,764 Shared Decimal Places Protection Excel Calc Settings Workbook Calc settings
Excel Memory(K) 6,989 80,000 Shared 0 Fixed 0 Structure 0 Workbook Mode All Mixed Mode Other
FileSize(K) 2,723 Changes 1 Places 2 Windows 0 Current Mode Manual Full 1 UpdateRemoteRefs 1
Windows Win XP Saved 1 Backup 0 Password 0 Before Save 0 Manual 0 PrecisionAsDisplay 0
MHZ 1200 Format Normal Styles 6 Views 0 Initial Mode First Book Selected Sheets 0 1904 DateSystem 0
Excel Version 9 Environment Counts Iteration 0 Restore after Open 0 SaveXternalLinks 1
Calculation Engine 92512 Temp 25 VBE 7 Addins 2 Max Iters/change 100/0.001 Disabled on Open 0 Accept Labels 1

Current WorkSheet Calculation Sequence: Forward CrossReferences=39119


Sheet Refers To--> Answers Counts Explanation ProductData ProductNames Products RespondentData Respondents Sectors SegmentNames UniVerse
Answers 9,120 3,300
Counts 1 1 1 2 1
Explanation Change the worksheet names to these
suggested names ( or a set of names that
ProductData 533
sort in the same sequence) to eliminate the
ProductNames forward worksheet cross-references. Forward cross-references
Products 23,985 1,066 reduced from
have been 13,858 4,264 1,066 4,264
RespondentData Note: Because of changes in the Excel 39119 to 48. Using the
Respondents 2002 (XP) calculation algorithm this will suggested Sheet names will 2,505 1,002 334 1,336
Sectors have little effect with Excel 2002 (XP). virtually eliminate the 15 120 36
SegmentNames seconds of workbook
overhead.
UniVerse 48 48

Optimised WorkSheet Calculation Sequence: Forward CrossReferences=48


Sheet Refers To--> A0_RespondentData A1_SegmentNames A2_UniVerse A3_Sectors A4_Respondents A5_Explanation A6_ProductNames A7_ProductData A8_Counts A9_Products B0_Answers
A0_RespondentData
A1_SegmentNames
A2_UniVerse 48 48
A3_Sectors 120 36
A4_Respondents 2,505 334 1,336 1,002
A5_Explanation
A6_ProductNames
There are two circular cross-reference paths, which
A7_ProductData will create533
a workbook overhead (1.8 seconds).
A8_Counts 1 2 1 1 1
A9_Products 13,858 1,066 4,264 4,264 1,066 23,985
B0_Answers 3,300 9,120

Circular WorkSheet CrossReference Paths


Path Length Forward Refs Total Refs First Second Third Fourth Fifth
3 48 1384 UniVerse Respondents UniVerse
4 48 1086 UniVerse Respondents Sectors UniVerse
FastExcel WorkBook Profile Version 2.1 Build 443

Physical Environment Profile: 9/9/2004 14:24 F:\My Documents\FastExcel\Step2.xls

RAM(K) ### 785,888 Workbook Settings Calculation Options


Swap File(K) ### ### Shared Decimal Places Protection Excel Calc Settings Workbook Calc settings
Excel Memory(K) 6,225 80,000 Shared 0 Fixed 0 Structure 0 Workbook Mode All Mixed Mode Other
FileSize(K) 1,217 Changes 1 Places 2 Windows 0 Current Mode Manual Full 1 UpdateRemoteRefs 1
Windows Win XP Saved 1 Backup 0 Password 0 Before Save 0 Manual 0 PrecisionAsDisplay 0
MHZ 1200 Format Normal Styles 6 Views 0 Initial Mode First Book Selected Sheets 0 1904 DateSystem 0
Excel Version 9 Environment Counts Iteration 0 Restore after Open 0 SaveXternalLinks 1
Calculation Engine 92512 Temp 23 VBE 9 Addins 10 Max Iters/change 100/0.001 Disabled on Open 0 Accept Labels 1

WorkSheet Profiles
Cell Counts Calc Time(Millisec) Sheet MicroSecs Range Other UBytes Unused Cells Page Shapes HypLinks
Sheetname Used Const CondFmt Formula Used Max Sheet Sheet Calc OvHead /Formula Mem(K) Mem(K) per Cell %Waste %Sparse Breaks Count Count
B0_Answers 3,240 185 1,152 2,470 2,354.6 2,238.8 2,227.9 None 902.0 278 1 107.1 0% 18% 0 10 0
A9_Products 20,826 39 0 20,787 222.6 194.9 195.8 None 9.4 870 608 42.8 0% 0% 0 39 0
A4_Respondents 2,184 13 0 2,171 13.3 18.2 18.2 4.9 6.1 87 56 41.0 0% 0% 0 12 0
A2_UniVerse 350 137 0 81 3.7 15.7 15.5 11.8 45.4 6 529 27.6 0% 38% 0 18 0
A7_ProductData 4,806 4,273 0 533 10.1 13.5 13.1 3.0 18.9 73 512 15.6 0% 0% 0 9 0
A5_Explanation 82 28 0 0 0.2 12.7 12.4 12.1 0.0 1 0 47.1 0% 66% 0 0 0
A3_Sectors 117 10 0 96 3.6 12.0 12.0 8.4 37.3 5 0 47.7 0% 9% 0 6 0
A8_Counts 12 7 0 5 3.9 9.0 8.6 4.8 774.3 0 0 21.3 0% 0% 0 0 0
A6_ProductNames 12 12 0 0 0.3 8.8 8.4 8.1 0.0 0 480 21.3 0% 0% 0 0 0
A0_RespondentData 1,512 1,512 0 0 1.4 8.8 8.4 7.0 0.0 14 512 9.6 0% 0% 0 9 0
A1_SegmentNames 16 16 0 0 0.3 8.9 8.3 8.0 0.0 0 476 19.0 0% 0% 0 0 0
Other 32
Totals 33,157 6,232 1,152 26,143 2,613.8 2,541.4 2,528.7 None 96.7 1,335 3,207 36.0 0.0% 2.4% 103 0

WorkBook Summary
Sheets Cell Counts Calc Time(Millisec) % Book MicroSecs Range Total TBytes Unused Cells Pivot XLLinks Names
Count Used Const CondFmt Formula Re Calc Full Calc Volatile OvHead /Formula Mem(K) Mem(K) per Cell %Waste %Sparse Cache(K) Count Count
11 33,157 6,232 1,152 26,143 4,392.0 4,343.6 101.1% 1,815.0 166.1 1,335 4,542 143.7 0.0% 2.4% 0 0 135

Recalculation time has been reduced Book Overhead has been reduced by over 13 seconds, but we need to
by over 17 seconds get rid of the remaining 1.8 seconds by eliminating the worksheet forward
crossreference loops.
FastExcel WorkBook Profile Version 2.1 Build 444

Physical Environment Profile: 9/11/2004 18:59 F:\My Documents\FastExcel\Step3.xls

RAM(K) ### 785,888 Workbook Settings Calculation Options


Swap File(K) ### ### Shared Decimal Places Protection Excel Calc Settings Workbook Calc settings
Excel Memory(K) 5,973 80,000 Shared 0 Fixed 0 Structure 0 Workbook Mode All Mixed Mode Other
FileSize(K) 1,220 Changes 1 Places 2 Windows 0 Current Mode Manual Full 1 UpdateRemoteRefs 1
Windows Win XP Saved 0 Backup 0 Password 0 Before Save 0 Manual 0 PrecisionAsDisplay 0
MHZ 1200 Format Normal Styles 6 Views 0 Initial Mode First Book Selected Sheets 0 1904 DateSystem 0
Excel Version 9 Environment Counts Iteration 0 Restore after Open 0 SaveXternalLinks 1
Calculation Engine 92512 Temp 24 VBE 7 Addins 2 Max Iters/change 100/0.001 Disabled on Open 0 Accept Labels 1
96% of the sheet calculation time
Very high calculation time per formula
WorkSheet Profiles is used on these 2 sheets
Cell Counts Calc Time(Millisec) Sheet MicroSecs Range Other UBytes Unused Cells Page Shapes HypLinks
Sheetname Used Const CondFmt Formula Used Max Sheet Sheet Calc OvHead /Formula Mem(K) Mem(K) per Cell %Waste %Sparse Breaks Count Count
B0_Answers 3,240 185 1,152 2,470 2,268.7 2,135.9 2,147.6 None 869.5 246 13 94.7 0% 18% 0 10 0
A9_Products 20,826 39 0 20,787 214.8 186.6 186.8 None 9.0 902 764 44.4 0% 0% 0 39 0
A4_Respondents 2,688 15 0 2,195 12.6 26.4 18.7 6.2 5.7 120 44 55.5 0% 18% 0 14 0
A7_ProductData 4,806 4,273 0 533 9.7 13.1 13.6 3.9 18.3 45 512 9.6 0% 0% 0 9 0
A5_Explanation 82 28 0 0 0.2 12.0 12.2 12.0 0.0 1 0 47.1 0% 66% 0 0 0
A3_Sectors 117 10 0 96 3.4 11.4 10.9 7.6 35.0 1 0 9.1 0% 9% 0 6 0
A2_UniVerse 350 135 0 57 0.7 10.3 10.1 9.3 12.8 2 545 10.0 0% 45% 0 17 0
A8_Counts 12 7 0 5 3.7 8.6 8.1 4.4 737.1 0 0 21.3 0% 0% 0 0 0
A6_ProductNames 12 12 0 0 0.2 8.3 7.9 7.7 0.0 0 460 21.3 0% 0% 0 0 0
A1_SegmentNames 16 16 0 0 0.2 8.3 7.9 7.7 0.0 0 388 19.0 0% 0% 0 0 0
A0_RespondentData 1,512 1,512 0 0 1.2 8.2 7.8 6.6 0.0 14 512 9.6 0% 0% 0 9 0
Other 92
Totals 33,661 6,232 1,152 26,143 2,515.3 2,429.0 2,431.6 None 93.0 1,332 3,331 31.0 0.0% 3.8% 104 0

WorkBook Summary
Sheets Cell Counts Calc Time(Millisec) % Book MicroSecs Range Total TBytes Unused Cells Pivot XLLinks Names
Count Used Const CondFmt Formula Re Calc Full Calc Volatile OvHead /Formula Mem(K) Mem(K) per Cell %Waste %Sparse Cache(K) Count Count
11 33,661 6,232 1,152 26,143 2,241.1 2,220.2 100.9% None 84.9 1,332 4,663 147.5 0.0% 3.8% 0 0 135
FastExcel WorkSheet Areas Profile Version 2.1 Build 444

Physical Environment Profile: 9/11/2004 20:20 F:\My Documents\FastExcel\Step3.xls

RAM(K) 323,324 785,888 Workbook Settings Calculation Options


Swap File(K) 260,584 1,399,764 Shared Decimal Places Protection Excel Calc Settings Workbook Calc settings
Excel Memory(K) 5,623 80,000 Shared 0 Fixed 0 Structure 0 Workbook Mode All Mixed Mode Other
FileSize(K) 1,220 Changes 1 Places 2 Windows 0 Current Mode Manual Full 1 UpdateRemoteRefs 1
Windows Win XP Saved 0 Backup 0 Password 0 Before Save 0 Manual 0 PrecisionAsDisplay 0
MHZ 1200 Format Normal Styles 6 Views 0 Initial Mode First Book Selected Sheets 0 1904 DateSystem 0
Excel Version 9 Environment Counts Iteration 0 Restore after Open 0 SaveXternalLinks 1
Calculation Engine 92512 Temp 24 VBE 7 Addins 2 Max Iters/change 100/0.001 Disabled on Open 0 Accept Labels 1

WorkSheet Areas Profile for B0_Answers


Address Count of Calc Millisecs MicroSecs Area/Col % FormulaLength
Area Formula ArrayCells CondFmt Area/Col Sheet /Formula of Sheet Total Average Maximum
$C$10:$AN$21 456 432 216 496.39 2,521.00 1,088.58 19.7% 39,012 85.55 108
$C$25:$AN$36 456 432 216 496.15 2,521.00 1,088.06 19.7% 38,112 83.58 108
$C$70:$AN$81 456 432 216 491.64 2,521.00 1,078.16 19.5% 38,112 83.58 108
$C$55:$AN$66 456 432 216 490.71 2,521.00 1,076.12 19.5% 38,112 83.58 108
$C$40:$AN$51 456 432 216 488.95 2,521.00 1,072.26 19.4% 38,112 83.58 108
$C$38:$AN$38 38 0 0 7.72 2,521.00 203.16 0.3% 2,203 57.97 87
$C$8:$AN$8 38 0 0 7.43 2,521.00 195.56 0.3% 2,207 58.08 85
$C$68:$AN$68 38 0 0 7.32 2,521.00 192.52 0.3% 2,203 57.97 87
$C$53:$AN$53 38 0 0 7.11 2,521.00 187.16 0.3% 2,203 57.97 87
$C$23:$AN$23 38 0 0 7.10 2,521.00 186.76 0.3% 2,202 57.95 87
Column
E 65 60 0 108.55 2,521.00 1,670.04 4.3% 5,615 86.38 88
L 65 60 0 108.21 2,521.00 1,664.71 4.3% 5,615 86.38 88
G 65 60 0 108.15 2,521.00 1,663.86 4.3% 5,615 86.38 88
This
P analysis shows that a 65
subset of the60columns have
0 very high 2,521.00
106.79 1,642.92 4.2% 5,810 89.38 91
calculation times. Looking at these columns on the Answers sheet in the
C 65
that they60
0 106.76 2,521.00 1,642.51 4.2% 5,615 86.38 88
Before workbook you can see contain array formulae
R
calculating 65
a sum with 2 conditions 60
(product and0 sector):
105.43 2,521.00 1,622.00 4.2% 5,810 89.38 91
M 65 60 0 105.33 2,521.00 1,620.39 4.2% 5,615 86.38 88
{=SUM(($A10=Products.colProductName)*($B10=Products.colSector
J 65 60 0 104.82 2,521.00 1,612.57 4.2% 5,615 86.38 88
Name)*(Products.colL2Users))}
I 65 60 0 104.42 2,521.00 1,606.52 4.1% 5,615 86.38 88
O 65 60 0 103.89 2,521.00 1,598.37 4.1% 5,810 89.38 91
The FastExcel built-in Optimise Calculations help has sections on array
D 65 60 0
formulae and multiple condition SUMIF with suggestions on 103.86
how to2,521.00 1,597.90 4.1% 5,615 86.38 88
F
improve performance: 65 60 0 103.75 2,521.00 1,596.21 4.1% 5,615 86.38 88
The
K array formulae bottlenecks
65 on Answers 60 , were 0eliminated
103.55by 2,521.00 1,593.00 4.1% 5,615 86.38 88
reducing the size of the range required to only the rows for a single
product, using the steps below.
- Sorting the Products sheet by Product, which is the first condition in
the multiple conditional sum.
- Calculating the start row and number of rows for each Product block
of rows on Products, and storing these on the Counts sheet.
- Using these counts in an OFFSET function to return dynamically
calculated ranges containing only the rows for a single product.
{=SUM(($A10=Products.colProductName)*($B10=Products.colSector
Name)*(Products.colL2Users))}

The FastExcel built-in Optimise Calculations help has sections on array


formulae and multiple condition SUMIF with suggestions on how to
improve performance:
The array formulae bottlenecks on Answers , were eliminated by
reducing
H the size of the range
65 required 60to only the rows
0 for a single
102.83 2,521.00 1,581.96 4.1% 5,680 87.38 89
product,
N using the steps below.
65 60 0 102.79 2,521.00 1,581.34 4.1% 5,680 87.38 89
- Sorting the Products sheet by Product, which is the first condition in
Q 65 60 0 102.37 2,521.00 1,574.90 4.1% 5,810 89.38 91
the multiple conditional sum.
AN- Calculating the start row65and number 60 of rows for
60 each 98.44
Product2,521.00
block 1,514.49 3.9% 6,913 106.35 108
S rows on Products, and storing
of 65 60 the Counts
these on 0 sheet.
97.34 2,521.00 1,497.50 3.9% 5,810 89.38 91
T - Using these counts in an 65 OFFSET function
60 to return
0 dynamically
96.07 2,521.00 1,478.05 3.8% 5,875 90.38 92
calculated
AI ranges containing65 only the rows
60 for a single
60 product.
93.76 2,521.00 1,442.44 3.7% 6,848 105.35 107
AJ 65 60 60 88.07 2,521.00 1,354.90 3.5% 6,848 105.35 107
This significantly reduces the number of rows used in the conditional
AK and allows us to use SUMIF
sum, 65 rather60than array60 76.89 2,521.00
formulae. 1,182.89 3.0% 6,838 105.20 107
AL OFFSET formulae are65
The 60 named60
held in dynamic ranges,59.04 2,521.00
for instance 908.32 2.3% 6,848 105.35 107
Products.ProductNameRange
AM 65 contains 60 60 23.50 2,521.00 361.61 0.9% 6,848 105.35 107
Z 65 60 60 15.31 2,521.00 235.51 0.6% 4,439 68.29 71
=
ACOFFSET(A9_Products!$D$1,
65 60 60 15.12 2,521.00 232.62 0.6% 4,374 67.29 70
VLOOKUP(Answers.Product,ProductIndex,3,FALSE)-1,0,
AA 65 60 60 15.06 2,521.00 231.73 0.6% 4,439 68.29 71
VLOOKUP(Answers.Product,ProductIndex,4,FALSE),1)
AH 65 60 60 15.03 2,521.00 231.19 0.6% 4,374 67.29 70
AF look at the After or NoNamesAfter.xls
Also 65 60 workbook
60 to see
15.00
how 2,521.00
the 230.71 0.6% 4,374 67.29 70
array
AG formula has been changed
65 to a SUMIF
60 on a much
60 smaller
14.99 range.
2,521.00 230.61 0.6% 4,374 67.29 70
(Its
V easier to see whats happening
65 in the
60NoNamesAfter
60 workbook).
14.95 2,521.00 229.96 0.6% 4,439 68.29 71
AD 65 60 60 14.94 2,521.00 229.85 0.6% 4,374 67.29 70
AE 65 60 60 14.91 2,521.00 229.38 0.6% 4,374 67.29 70
W 65 60 60 14.89 2,521.00 229.01 0.6% 4,439 68.29 71
X 65 60 60 14.84 2,521.00 228.36 0.6% 4,439 68.29 71
Y 65 60 60 14.80 2,521.00 227.75 0.6% 4,439 68.29 71
AB 65 0 0 3.85 2,521.00 59.24 0.2% 4,835 74.38 78
U 65 0 0 1.17 2,521.00 18.06 0.0% 1,187 18.26 79
RowBlock
Rows 73 : 81 342 324 162 394.63 2,521.00 1,153.88 15.7% 28,584 83.58 108
Rows 10 : 18 342 324 162 376.59 2,521.00 1,101.13 14.9% 29,259 85.55 108
Rows 28 : 36 342 324 162 373.56 2,521.00 1,092.27 14.8% 28,584 83.58 108
Rows 55 : 63 342 324 162 366.84 2,521.00 1,072.63 14.6% 28,584 83.58 108
Rows 46 : 54 266 216 108 261.25 2,521.00 982.13 10.4% 21,259 79.92 108
Rows 37 : 45 266 216 108 257.58 2,521.00 968.34 10.2% 21,259 79.92 108
Rows 19 : 27 266 216 108 255.88 2,521.00 961.94 10.1% 21,483 80.76 108
Rows 64 : 72 266 216 108 245.95 2,521.00 924.62 9.8% 21,259 79.92 108
Rows 1 : 9 38 0 0 7.23 2,521.00 190.39 0.3% 2,207 58.08 85
Sum of Areas 2,470 2,160 1,080 2,500.53 2,521.00 1,012.36 99.2% 202,478 81.97 108
FastExcel WorkSheet Areas Profile Version 2.1 Build 444

Physical Environment Profile: 9/12/2004 16:02 F:\My Documents\FastExcel\Step4.xls

RAM(K) 315,892 785,888 Workbook Settings Calculation Options


Swap File(K) 241,540 1,399,764 Shared Decimal Places Protection Excel Calc Settings Workbook Calc settings
Excel Memory(K) 5,525 80,000 Shared 0 Fixed 0 Structure 0 Workbook Mode All Mixed Mode Other
FileSize(K) 1,220 Changes 1 Places 2 Windows 0 Current Mode Manual Full 1 UpdateRemoteRefs 1
Windows Win XP Saved 1 Backup 0 Password 0 Before Save 0 Manual 0 PrecisionAsDisplay 0
MHZ 1199 Format Normal Styles 6 Views 0 Initial Mode First Book Selected Sheets 0 1904 DateSystem 0
Excel Version 9 Environment Counts Iteration 0 Restore after Open 0 SaveXternalLinks 1
Calculation Engine 92512 Temp 21 VBE 7 Addins 2 Max Iters/change 100/0.001 Disabled on Open 0 Accept Labels 1

WorkSheet Areas Profile for A9_Products


Address Count of Calc Millisecs MicroSecs Area/Col % FormulaLength
Area Formula ArrayCells CondFmt Area/Col Sheet /Formula of Sheet Total Average Maximum
$A$2:$AM$534 20,787 0 0 215.32 194.96 10.36 110.4% 2,254,590 108.46 454
Column
F These 6 columns take 533
over 80% of 0the calculation
0 27.50 194.96
time. 51.59 14.1% 97,539 183.00 183
I 533 0 0 27.37 194.96 51.36 14.0% 97,539 183.00 183
G Looking at the formulae in these columns
533 0 in the Before.xls
0 27.31workbook
194.96 you can 51.23 14.0% 97,539 183.00 183
H see that they contain double
533 exact Match
0 Lookup0formulae which
26.76 trap missing
194.96 50.21 13.7% 97,539 183.00 183
E data such as: 533 0 0 25.28 194.96 47.42 13.0% 98,605 185.00 185
D 533 0 0 22.98 194.96 43.12 11.8% 74,087 139.00 139
IF(ISNA(MATCH(ProductData.ProductSerial,RespondentData.colResponde
A ntSerial,0)),"Mismatch", 533 0 0 8.33 194.96 15.63 4.3% 26,117 49.00 49
B INDEX(RespondentData,MATCH(ProductData.ProductSerial,RespondentDa
533 0 0 7.45 194.96 13.97 3.8% 26,117 49.00 49
C ta.colRespondentSerial,0),7))
533 0 0 6.26 194.96 11.75 3.2% 26,650 50.00 50
M 533 0 0 3.90 194.96 7.31 2.0% 241,982 454.00 454
The FastExcel built-in Optimise Calculations help (and Decision Models website)
O 533 0 0 3.51 194.96 6.59 1.8% 163,631 307.00 307
contains a number of suggestions that can be used to reduce this time
P significantly: 533 0 0 3.21 194.96 6.02 1.6% 61,828 116.00 116
N These Exact match and 533 0
Lookup bottlenecks 0
on Products 3.14
were194.96
eliminated by: 5.89 1.6% 38,376 72.00 72
L - Sorting both Products
533 and ProductData
0 in0 the same
2.75sequence,
194.96 and 5.16 1.4% 26,650 50.00 50
AA using approximate match.533 0 0 2.66 194.96 5.00 1.4% 20,787 39.00 39
AM - Adding an additional
533 column, RespondentIndex,
0 0 containing the result of an
2.46 194.96 4.62 1.3% 23,985 45.00 45
approximate Match between Respondent serial and Product serial (or Mismatch
AG 533 0 0 2.46 194.96 4.61 1.3% 20,787 39.00 39
if no exact match could be found), and using this as a rowindex in subsequent
T lookups. 533 0 0 2.41 194.96 4.51 1.2% 69,290 130.00 130
R 533 range formulae
- Optimising the dynamic 0 0
by storing 2.36
the 194.96
result of COUNTA for 4.42 1.2% 46,904 88.00 88
AB the major counts of respondents,
533 products,
0 sectors
0 and segments,
2.35 194.96 and reusing4.41 1.2% 59,696 112.00 112
Z these in the formulae. 533 0 0 2.19 194.96 4.11 1.1% 61,295 115.00 115
AF 533 0 0 2.19 194.96 4.11 1.1% 59,696 112.00 112
Also look at the detailed implementation in the After or NoNamesAfter
V 533 0 0 2.08 194.96 3.90 1.1% 61,295 115.00 115
workbooks.
if no exact match could be found), and using this as a rowindex in subsequent
lookups.
- Optimising the dynamic range formulae by storing the result of COUNTA for
the major counts of respondents, products, sectors and segments, and reusing
these in the formulae.

Also look at the detailed implementation in the After or NoNamesAfter


workbooks.
U 533 0 0 2.08 194.96 3.90 1.1% 26,650 50.00 50
Q 533 0 0 2.02 194.96 3.79 1.0% 46,371 87.00 87
AE 533 0 0 1.99 194.96 3.74 1.0% 59,696 112.00 112
Y 533 0 0 1.97 194.96 3.69 1.0% 61,295 115.00 115
W 533 0 0 1.95 194.96 3.67 1.0% 61,295 115.00 115
AC 533 0 0 1.93 194.96 3.62 1.0% 59,696 112.00 112
AH 533 0 0 1.92 194.96 3.61 1.0% 25,051 47.00 47
J 533 0 0 1.92 194.96 3.60 1.0% 22,919 43.00 43
AD 533 0 0 1.90 194.96 3.56 1.0% 59,696 112.00 112
S 533 0 0 1.87 194.96 3.51 1.0% 50,102 94.00 94
X 533 0 0 1.87 194.96 3.50 1.0% 61,295 115.00 115
AL 533 0 0 1.85 194.96 3.48 1.0% 25,051 47.00 47
AI 533 0 0 1.62 194.96 3.04 0.8% 25,051 47.00 47
K 533 0 0 1.61 194.96 3.02 0.8% 22,386 42.00 42
AJ 533 0 0 1.52 194.96 2.85 0.8% 25,051 47.00 47
AK 533 0 0 1.48 194.96 2.78 0.8% 25,051 47.00 47
RowBlock
Rows 109 : 114 234 0 0 4.57 194.96 19.53 2.3% 25,380 108.46 454
Rows 481 : 486 234 0 0 4.28 194.96 18.29 2.2% 25,380 108.46 454
Rows 139 : 144 234 0 0 3.75 194.96 16.01 1.9% 25,380 108.46 454
Rows 529 : 534 234 0 0 3.51 194.96 14.98 1.8% 25,380 108.46 454
Rows 415 : 420 234 0 0 3.49 194.96 14.90 1.8% 25,380 108.46 454
Rows 517 : 522 234 0 0 3.43 194.96 14.67 1.8% 25,380 108.46 454
Rows 523 : 528 234 0 0 3.38 194.96 14.45 1.7% 25,380 108.46 454
Rows 325 : 330 234 0 0 3.36 194.96 14.36 1.7% 25,380 108.46 454
Rows 409 : 414 234 0 0 3.34 194.96 14.29 1.7% 25,380 108.46 454
Rows 505 : 510 234 0 0 3.34 194.96 14.27 1.7% 25,380 108.46 454
Rows 493 : 498 234 0 0 3.33 194.96 14.22 1.7% 25,380 108.46 454
Rows 319 : 324 234 0 0 3.31 194.96 14.16 1.7% 25,380 108.46 454
Rows 289 : 294 234 0 0 3.31 194.96 14.13 1.7% 25,380 108.46 454
Rows 511 : 516 234 0 0 3.29 194.96 14.07 1.7% 25,380 108.46 454
Rows 313 : 318 234 0 0 3.25 194.96 13.90 1.7% 25,380 108.46 454
Rows 307 : 312 234 0 0 3.25 194.96 13.90 1.7% 25,380 108.46 454
Rows 475 : 480 234 0 0 3.25 194.96 13.87 1.7% 25,380 108.46 454
Rows 403 : 408 234 0 0 3.23 194.96 13.82 1.7% 25,380 108.46 454
Rows 205 : 210 234 0 0 3.22 194.96 13.78 1.7% 25,380 108.46 454
Rows 487 : 492 234 0 0 3.22 194.96 13.76 1.7% 25,380 108.46 454
Rows 331 : 336 234 0 0 3.21 194.96 13.74 1.6% 25,380 108.46 454
Rows 385 : 390 234 0 0 3.21 194.96 13.73 1.6% 25,380 108.46 454
Rows 103 : 108 234 0 0 3.21 194.96 13.72 1.6% 25,380 108.46 454
Rows 193 : 198 234 0 0 3.21 194.96 13.71 1.6% 25,380 108.46 454
Rows 199 : 204 234 0 0 3.21 194.96 13.71 1.6% 25,380 108.46 454
Rows 397 : 402 234 0 0 3.19 194.96 13.62 1.6% 25,380 108.46 454
Rows 187 : 192 234 0 0 3.18 194.96 13.58 1.6% 25,380 108.46 454
Rows 301 : 306 234 0 0 3.17 194.96 13.56 1.6% 25,380 108.46 454
Rows 295 : 300 234 0 0 3.16 194.96 13.50 1.6% 25,380 108.46 454
Rows 175 : 180 234 0 0 3.15 194.96 13.45 1.6% 25,380 108.46 454
Rows 373 : 378 234 0 0 3.15 194.96 13.45 1.6% 25,380 108.46 454
Rows 97 : 102 234 0 0 3.13 194.96 13.39 1.6% 25,380 108.46 454
Rows 499 : 504 234 0 0 3.13 194.96 13.37 1.6% 25,380 108.46 454
Rows 163 : 168 234 0 0 3.12 194.96 13.32 1.6% 25,380 108.46 454
Rows 85 : 90 234 0 0 3.10 194.96 13.23 1.6% 25,380 108.46 454
Rows 391 : 396 234 0 0 3.09 194.96 13.22 1.6% 25,380 108.46 454
Rows 79 : 84 234 0 0 3.09 194.96 13.19 1.6% 25,380 108.46 454
Rows 181 : 186 234 0 0 3.08 194.96 13.15 1.6% 25,380 108.46 454
Rows 463 : 468 234 0 0 3.07 194.96 13.13 1.6% 25,380 108.46 454
Rows 73 : 78 234 0 0 3.04 194.96 13.00 1.6% 25,380 108.46 454
Rows 283 : 288 234 0 0 3.04 194.96 13.00 1.6% 25,380 108.46 454
Rows 91 : 96 234 0 0 2.99 194.96 12.80 1.5% 25,380 108.46 454
Rows 469 : 474 234 0 0 2.99 194.96 12.77 1.5% 25,380 108.46 454
Rows 271 : 276 234 0 0 2.99 194.96 12.76 1.5% 25,380 108.46 454
Rows 451 : 456 234 0 0 2.97 194.96 12.68 1.5% 25,380 108.46 454
Rows 55 : 60 234 0 0 2.94 194.96 12.56 1.5% 25,380 108.46 454
Rows 67 : 72 234 0 0 2.93 194.96 12.54 1.5% 25,380 108.46 454
Rows 367 : 372 234 0 0 2.92 194.96 12.48 1.5% 25,380 108.46 454
Rows 157 : 162 234 0 0 2.91 194.96 12.45 1.5% 25,380 108.46 454
Rows 421 : 426 234 0 0 2.89 194.96 12.36 1.5% 25,380 108.46 454
Rows 169 : 174 234 0 0 2.88 194.96 12.31 1.5% 25,380 108.46 454
Rows 211 : 216 234 0 0 2.88 194.96 12.30 1.5% 25,380 108.46 454
Rows 361 : 366 234 0 0 2.88 194.96 12.29 1.5% 25,380 108.46 454
Rows 457 : 462 234 0 0 2.86 194.96 12.23 1.5% 25,380 108.46 454
Rows 379 : 384 234 0 0 2.86 194.96 12.23 1.5% 25,380 108.46 454
Rows 277 : 282 234 0 0 2.85 194.96 12.18 1.5% 25,380 108.46 454
Rows 61 : 66 234 0 0 2.85 194.96 12.17 1.5% 25,380 108.46 454
Rows 349 : 354 234 0 0 2.83 194.96 12.10 1.5% 25,380 108.46 454
Rows 427 : 432 234 0 0 2.82 194.96 12.06 1.4% 25,380 108.46 454
Rows 247 : 252 234 0 0 2.80 194.96 11.96 1.4% 25,380 108.46 454
Rows 445 : 450 234 0 0 2.79 194.96 11.91 1.4% 25,380 108.46 454
Rows 151 : 156 234 0 0 2.78 194.96 11.88 1.4% 25,380 108.46 454
Rows 265 : 270 234 0 0 2.76 194.96 11.78 1.4% 25,380 108.46 454
Rows 49 : 54 234 0 0 2.73 194.96 11.69 1.4% 25,380 108.46 454
Rows 235 : 240 234 0 0 2.73 194.96 11.66 1.4% 25,380 108.46 454
Rows 355 : 360 234 0 0 2.69 194.96 11.51 1.4% 25,380 108.46 454
Rows 439 : 444 234 0 0 2.68 194.96 11.45 1.4% 25,380 108.46 454
Rows 259 : 264 234 0 0 2.67 194.96 11.40 1.4% 25,380 108.46 454
Rows 115 : 120 234 0 0 2.67 194.96 11.40 1.4% 25,380 108.46 454
Rows 337 : 342 234 0 0 2.65 194.96 11.35 1.4% 25,380 108.46 454
Rows 241 : 246 234 0 0 2.65 194.96 11.30 1.4% 25,380 108.46 454
Rows 253 : 258 234 0 0 2.64 194.96 11.29 1.4% 25,380 108.46 454
Rows 145 : 150 234 0 0 2.64 194.96 11.27 1.4% 25,380 108.46 454
Rows 43 : 48 234 0 0 2.63 194.96 11.22 1.3% 25,380 108.46 454
Rows 343 : 348 234 0 0 2.62 194.96 11.18 1.3% 25,380 108.46 454
Rows 37 : 42 234 0 0 2.61 194.96 11.16 1.3% 25,380 108.46 454
Rows 229 : 234 234 0 0 2.59 194.96 11.07 1.3% 25,380 108.46 454
Rows 31 : 36 234 0 0 2.51 194.96 10.73 1.3% 25,380 108.46 454
Rows 121 : 126 234 0 0 2.49 194.96 10.63 1.3% 25,380 108.46 454
Rows 133 : 138 234 0 0 2.49 194.96 10.62 1.3% 25,380 108.46 454
Rows 433 : 438 234 0 0 2.48 194.96 10.58 1.3% 25,380 108.46 454
Rows 19 : 24 234 0 0 2.47 194.96 10.57 1.3% 25,380 108.46 454
Rows 127 : 132 234 0 0 2.47 194.96 10.54 1.3% 25,380 108.46 454
Rows 223 : 228 234 0 0 2.46 194.96 10.49 1.3% 25,380 108.46 454
Rows 217 : 222 234 0 0 2.45 194.96 10.48 1.3% 25,380 108.46 454
Rows 13 : 18 234 0 0 2.43 194.96 10.40 1.2% 25,380 108.46 454
Rows 25 : 30 234 0 0 2.43 194.96 10.40 1.2% 25,380 108.46 454
Rows 7 : 12 234 0 0 2.34 194.96 9.98 1.2% 25,380 108.46 454
Rows 1 : 6 195 0 0 2.00 194.96 10.26 1.0% 21,150 108.46 454
Sum of Areas 20,787 0 0 215.32 194.96 10.36 110.4% 2,254,590 108.46 454
Workbook size has
decreased by 1611KB FastExcel WorkBook Profile This is the AFTER Version 2.1 Build 444
workbook.
Physical Environment Profile: 9/11/2004 19:55 F:\My Documents\FastExcel\after.xls

RAM(K) ### 785,888 Workbook Settings Calculation Options


Swap File(K) ### ### Shared Decimal Places Protection Excel Calc Settings Workbook Calc settings
Excel Memory(K) 5,261 80,000 Shared 0 Fixed 0 Structure 0 Workbook Mode All Mixed Mode Other
FileSize(K) 1,112 Changes 1 Places 2 Windows 0 Current Mode Manual Full 1 UpdateRemoteRefs 1
Windows Win XP Saved 1 Backup 0 Password 0 Before Save 1 Manual 0 PrecisionAsDisplay 0
MHZ 1200 Format Normal Styles 6 Views 0 Initial Mode First Book Selected Sheets 0 1904 DateSystem 0
Excel Version 9 Environment Counts Iteration 0 Restore after Open 0 SaveXternalLinks 1
Calculation Engine 92512 Temp 24 VBE 7 Addins 2 Max Iters/change 100/0.001 Disabled on Open 0 Accept Labels 0
Products calculation time Used Range wasteage has been
The names of the Answers calculation time has been reduced by 442
WorkSheet Profiles removed by the FastExcel Clean
worksheets have been has been reduced by 5.8 milliseconds, a factor of 5.6 Workbook command
changed by FastExcel Cell Counts seconds,Calc
a factor of over
Time(Millisec) Sheet MicroSecs Range Other UBytes Unused Cells Page Shapes HypLinks
Sheetname Used Const CondFmt Formula95 Used Max Sheet Sheet Calc OvHead /Formula Mem(K) Mem(K) per Cell %Waste %Sparse Breaks Count Count
A8_Products 21,360 40 0 21,320 119.7 94.5 94.6 None 4.4 902 780 43.3 0% 0% 0 40 0
B0_Answers 3,240 245 1,152 2,470 53.7 59.0 61.4 7.7 21.7 109 17 41.0 0% 16% 0 10 0
A6_Respondents 2,720 15 0 2,195 13.7 18.4 18.7 5.0 6.3 92 72 42.6 1% 19% 0 14 0
A5_Sectors 117 10 0 96 3.7 11.1 11.1 7.4 38.2 1 0 9.1 0% 9% 0 6 0
A3_UniVerse 325 135 0 57 1.0 10.1 9.7 8.7 17.4 18 541 94.6 0% 41% 0 16 0
A9_Explanation 533 40 0 0 0.2 11.7 9.4 9.2 0.0 5 4 123.2 85% 92% 0 0 0
A7_ProductNames 36 15 0 15 1.6 9.1 8.8 7.2 105.3 0 492 14.9 0% 17% 0 0 0
A1_ProductData 4,806 4,273 0 533 5.7 9.0 8.5 2.8 10.8 61 512 13.0 0% 0% 0 9 0
A4_Counts 12 7 0 5 3.7 8.3 7.9 4.3 735.6 0 0 21.3 0% 0% 0 0 0
A0_RespondentData 1,512 1,512 0 0 1.5 7.8 7.3 5.8 0.0 14 516 9.6 0% 0% 0 9 0
A2_SegmentNames 16 16 0 0 0.3 7.7 7.2 7.0 0.0 0 472 19.0 0% 0% 0 0 0
Other 64
Totals 34,677 6,308 1,152 26,691 204.8 246.8 244.6 39.9 7.7 1,203 3,471 39.0 1.4% 4.8% 104 0

WorkBook Summary
Sheets Cell Counts Calc Time(Millisec) % Book MicroSecs Range Total TBytes Unused Cells Pivot XLLinks Names
Count Used Const CondFmt Formula Re Calc Full Calc Volatile OvHead /Formula Mem(K) Mem(K) per Cell %Waste %Sparse Cache(K) Count Count
11 34,677 6,308 1,152 26,691 168.2 183.4 91.7% None 6.9 1,203 4,674 145.0 1.4% 4.8% 0 0 140
Recalculation time has
been improved by 21.6 Book overhead of 15
seconds, a factor of 130. seconds has been Memory used has been
eliminated reduced by 1 MB

Changes made in the After workbook to optimise Volatility is still high. This is
performance: caused by the extensive use
of dynamic range names
Note that because one of the key design criteria of these demonstration containing the volatile
workbooks was to use dynamic named ranges the resulting formulae OFFSET function.
optimisations in this workbook are done using Range Names. Sheet
AfterNames contains a listing of the revised range names which you can
compare to the B4Names sheet.
Memory used has been
reduced by 1 MB

Changes made in the After workbook to optimise Volatility is still high. This is
performance: caused by the extensive use
of dynamic range names
Note that because one of the key design criteria of these demonstration containing the volatile
workbooks was to use dynamic named ranges the resulting formulae OFFSET function.
optimisations in this workbook are done using Range Names. Sheet
AfterNames contains a listing of the revised range names which you can
compare to the B4Names sheet.

- The names of the worksheets were altered using the optimised sequence
from B4OptSeq.

- The Used Range wasteage problems on ProductData, RespondentData


and Answers were eliminated by deleting the excess rows and columns, and
saving the workbook.

- The Exact match and Lookup bottlenecks on Products were eliminated


by:
- Sorting both Products and ProductData in the same sequence, and using
approximate match.
- Adding an additional column, RespondentIndex, containing the result of
an approximate Match between Respondent serial and Product serial (or
Mismatch if no exact match could be found), and using this as a rowindex in
subsequent lookups.
- Optimising the dynamic range formulae by storing the result of COUNTA
for the major counts of Respondents, products, sectors and segments, and
reusing these in the formulae.

- The array formulae bottlenecks on Answers , were eliminated by reducing


the size of the range required to only the rows for a single product, using the
steps below.
- Sorting the Products sheet by Product, which is the first condition in the
multiple conditional sum.
- Calculating the start row and number of rows for each Product block of
rows on Products, and storing these on the IndexCounts sheet. These counts
were then used in OFFSET to return dynamically calculated ranges containing
only the rows for a single product, which significantly reduced the number of
rows used in the conditional sum, and enabled the use of SUMIF rather than
array formulae.

The OFFSET formulae were stored in named formulae, for instance


Products.ProductNameRange contains

= OFFSET(A9_Products!$D$1,
VLOOKUP(Answers.Product,ProductIndex,3,FALSE) -1,0,
VLOOKUP(Answers.Product,ProductIndex,4,FALSE) ,1)
Products.ProductNameRange contains

= OFFSET(A9_Products!$D$1,
VLOOKUP(Answers.Product,ProductIndex,3,FALSE) -1,0,
VLOOKUP(Answers.Product,ProductIndex,4,FALSE) ,1)
FastExcel WorkSheet Areas Profile Version 2.1 Build 444

Physical Environment Profile: 9/12/2004 16:49 F:\My DocumentsFastExcel\After.xls

RAM(K) 311,680 785,888 Workbook Settings Calculation Options


Swap File(K) 246,444 1,399,764 Shared Decimal Places Protection Excel Calc Settings Workbook Calc settings
Excel Memory(K) 5,946 80,000 Shared 0 Fixed 0 Structure 0 Workbook Mode All Mixed Mode Other
FileSize(K) 1,112 Changes 1 Places 2 Windows 0 Current Mode Manual Full 1 UpdateRemoteRefs 1
Windows Win XP Saved 0 Backup 0 Password 0 Before Save 1 Manual 0 PrecisionAsDisplay 0
MHZ 1199 Format Normal Styles 6 Views 0 Initial Mode First Book Selected Sheets 0 1904 DateSystem 0
This is FastExcel's analysis of the
Excel Versionsheet in the After
Products 9 Workbook. Environment Counts Iteration 0 Restore after Open 0 SaveXternalLinks 1
Calculation Engine 92512 Temp 21 VBE 7 Addins 2 Max Iters/change 100/0.001 Disabled on Open 0 Accept Labels 0

WorkSheet Areas Profile for A8_Products


Address Count of Calc Millisecs MicroSecs Area/Col % FormulaLength
Area Formula ArrayCells CondFmt Area/Col Sheet /Formula of Sheet Total Average Maximum
$A$2:$AN$534 21,320 0 0 114.48 98.34 5.37 116.4% 1,967,303 92.28 454
Column
B 533 0 0 11.39 98.34 21.36 11.6% 37,310 70.00 70
The calculation bottlenecks in the 6 columns has been
E 533
virtually eliminated (over0100 millisecondsseconds
0 8.95 98.34 16.78 9.1% 36,244 68.00 68
D calculation533 0 although
time reduction), 0 they are
8.77still98.34 16.46 8.9% 36,244 68.00 68
C amongst the 533most expensive
0 to calculate.
0 8.60 98.34 16.13 8.7% 36,244 68.00 68
H 533 0 0 7.58 98.34 14.23 7.7% 36,777 69.00 69
J These Exact533match and Lookup
0 bottlenecks
0 on Products
7.44 98.34 13.96 7.6% 36,777 69.00 69
were eliminated by:
F 533 0 0 7.34 98.34 13.77 7.5% 37,843 71.00 71
- Sorting both Products and ProductData in the same
I 533 using approximate
sequence, and 0 0
match. 7.25 98.34 13.61 7.4% 36,777 69.00 69
G - Adding533 0
an additional column, 0 7.18
RespondentIndex, 98.34 13.48 7.3% 36,777 69.00 69
A containing the
533result of an approximate
0 0 Match 5.11
between98.34 9.59 5.2% 23,452 44.00 44
N Respondent533serial and Product
0 serial (or
0 Mismatch
3.86 if 98.34
no 7.23 3.9% 241,982 454.00 454
P
exact match533
could be found),
0
and using
0
this as a
3.55
rowindex
98.34
in 6.66 3.6% 163,631 307.00 307
subsequent lookups.
O 533 0 0 3.35
- Optimising the dynamic range formulae by storing the98.34 6.28 3.4% 38,376 72.00 72
Q 533
result of COUNTA 0
for the major counts0 of respondents,
3.26 98.34 6.11 3.3% 61,828 116.00 116
M products, sectors
533 and segments,
0 and reusing
0 these in98.34
2.75 the 5.15 2.8% 26,650 50.00 50
AB formulae. 533 0 0 2.66 98.34 5.00 2.7% 20,787 39.00 39
AH 533 0 0 2.55 98.34 4.79 2.6% 20,787 39.00 39
Also look at the detailed implementation in the After or
U 533 0 0 2.53 98.34 4.74 2.6% 69,290 130.00 130
NoNamesAfter workbooks.
AC 533 0 0 2.48 98.34 4.66 2.5% 59,696 112.00 112
S 533 0 0 2.39 98.34 4.49 2.4% 46,904 88.00 88
AN 533 0 0 2.30 98.34 4.32 2.3% 23,985 45.00 45
AG 533 0 0 2.20 98.34 4.12 2.2% 59,696 112.00 112
formulae.

Also look at the detailed implementation in the After or


NoNamesAfter workbooks.

R 533 0 0 2.18 98.34 4.09 2.2% 46,371 87.00 87


W 533 0 0 2.18 98.34 4.08 2.2% 61,295 115.00 115
V 533 0 0 2.17 98.34 4.07 2.2% 26,650 50.00 50
AA 533 0 0 2.16 98.34 4.06 2.2% 61,295 115.00 115
AE 533 0 0 2.02 98.34 3.80 2.1% 59,696 112.00 112
AD 533 0 0 2.01 98.34 3.78 2.0% 59,696 112.00 112
Y 533 0 0 2.01 98.34 3.76 2.0% 61,295 115.00 115
AF 533 0 0 2.00 98.34 3.75 2.0% 59,696 112.00 112
K 533 0 0 1.99 98.34 3.74 2.0% 22,919 43.00 43
T 533 0 0 1.98 98.34 3.71 2.0% 50,102 94.00 94
AI 533 0 0 1.97 98.34 3.70 2.0% 25,051 47.00 47
X 533 0 0 1.94 98.34 3.65 2.0% 61,295 115.00 115
Z 533 0 0 1.85 98.34 3.46 1.9% 61,295 115.00 115
AM 533 0 0 1.75 98.34 3.28 1.8% 25,051 47.00 47
AK 533 0 0 1.60 98.34 3.00 1.6% 25,051 47.00 47
L 533 0 0 1.58 98.34 2.97 1.6% 22,386 42.00 42
AJ 533 0 0 1.52 98.34 2.86 1.6% 25,051 47.00 47
AL 533 0 0 1.46 98.34 2.73 1.5% 25,051 47.00 47
RowBlock
Rows 409 : 414 240 0 0 2.04 98.34 8.49 2.1% 22,146 92.28 454
Rows 445 : 450 240 0 0 2.01 98.34 8.37 2.0% 22,146 92.28 454
Rows 349 : 354 240 0 0 1.90 98.34 7.93 1.9% 22,146 92.28 454
Rows 427 : 432 240 0 0 1.87 98.34 7.79 1.9% 22,146 92.28 454
Rows 517 : 522 240 0 0 1.87 98.34 7.79 1.9% 22,146 92.28 454
Rows 505 : 510 240 0 0 1.85 98.34 7.73 1.9% 22,146 92.28 454
Rows 493 : 498 240 0 0 1.85 98.34 7.72 1.9% 22,146 92.28 454
Rows 421 : 426 240 0 0 1.82 98.34 7.60 1.9% 22,146 92.28 454
Rows 397 : 402 240 0 0 1.82 98.34 7.59 1.9% 22,146 92.28 454
Rows 529 : 534 240 0 0 1.82 98.34 7.58 1.9% 22,146 92.28 454
Rows 175 : 180 240 0 0 1.81 98.34 7.56 1.8% 22,146 92.28 454
Rows 325 : 330 240 0 0 1.81 98.34 7.56 1.8% 22,146 92.28 454
Rows 415 : 420 240 0 0 1.80 98.34 7.50 1.8% 22,146 92.28 454
Rows 469 : 474 240 0 0 1.79 98.34 7.46 1.8% 22,146 92.28 454
Rows 157 : 162 240 0 0 1.79 98.34 7.45 1.8% 22,146 92.28 454
Rows 523 : 528 240 0 0 1.78 98.34 7.42 1.8% 22,146 92.28 454
Rows 337 : 342 240 0 0 1.78 98.34 7.42 1.8% 22,146 92.28 454
Rows 271 : 276 240 0 0 1.77 98.34 7.37 1.8% 22,146 92.28 454
Rows 379 : 384 240 0 0 1.77 98.34 7.37 1.8% 22,146 92.28 454
Rows 403 : 408 240 0 0 1.77 98.34 7.36 1.8% 22,146 92.28 454
Rows 511 : 516 240 0 0 1.76 98.34 7.31 1.8% 22,146 92.28 454
Rows 355 : 360 240 0 0 1.75 98.34 7.29 1.8% 22,146 92.28 454
Rows 169 : 174 240 0 0 1.75 98.34 7.27 1.8% 22,146 92.28 454
Rows 367 : 372 240 0 0 1.74 98.34 7.27 1.8% 22,146 92.28 454
Rows 307 : 312 240 0 0 1.74 98.34 7.26 1.8% 22,146 92.28 454
Rows 73 : 78 240 0 0 1.74 98.34 7.26 1.8% 22,146 92.28 454
Rows 385 : 390 240 0 0 1.74 98.34 7.25 1.8% 22,146 92.28 454
Rows 61 : 66 240 0 0 1.74 98.34 7.24 1.8% 22,146 92.28 454
Rows 481 : 486 240 0 0 1.74 98.34 7.24 1.8% 22,146 92.28 454
Rows 373 : 378 240 0 0 1.74 98.34 7.23 1.8% 22,146 92.28 454
Rows 295 : 300 240 0 0 1.73 98.34 7.23 1.8% 22,146 92.28 454
Rows 253 : 258 240 0 0 1.73 98.34 7.23 1.8% 22,146 92.28 454
Rows 49 : 54 240 0 0 1.73 98.34 7.22 1.8% 22,146 92.28 454
Rows 313 : 318 240 0 0 1.73 98.34 7.22 1.8% 22,146 92.28 454
Rows 205 : 210 240 0 0 1.73 98.34 7.20 1.8% 22,146 92.28 454
Rows 487 : 492 240 0 0 1.73 98.34 7.20 1.8% 22,146 92.28 454
Rows 97 : 102 240 0 0 1.72 98.34 7.18 1.8% 22,146 92.28 454
Rows 283 : 288 240 0 0 1.72 98.34 7.17 1.7% 22,146 92.28 454
Rows 451 : 456 240 0 0 1.72 98.34 7.16 1.7% 22,146 92.28 454
Rows 475 : 480 240 0 0 1.72 98.34 7.15 1.7% 22,146 92.28 454
Rows 241 : 246 240 0 0 1.72 98.34 7.15 1.7% 22,146 92.28 454
Rows 145 : 150 240 0 0 1.71 98.34 7.13 1.7% 22,146 92.28 454
Rows 259 : 264 240 0 0 1.71 98.34 7.13 1.7% 22,146 92.28 454
Rows 361 : 366 240 0 0 1.71 98.34 7.12 1.7% 22,146 92.28 454
Rows 457 : 462 240 0 0 1.71 98.34 7.12 1.7% 22,146 92.28 454
Rows 343 : 348 240 0 0 1.71 98.34 7.11 1.7% 22,146 92.28 454
Rows 229 : 234 240 0 0 1.70 98.34 7.10 1.7% 22,146 92.28 454
Rows 319 : 324 240 0 0 1.70 98.34 7.09 1.7% 22,146 92.28 454
Rows 115 : 120 240 0 0 1.70 98.34 7.08 1.7% 22,146 92.28 454
Rows 289 : 294 240 0 0 1.69 98.34 7.06 1.7% 22,146 92.28 454
Rows 79 : 84 240 0 0 1.69 98.34 7.05 1.7% 22,146 92.28 454
Rows 211 : 216 240 0 0 1.69 98.34 7.05 1.7% 22,146 92.28 454
Rows 331 : 336 240 0 0 1.69 98.34 7.04 1.7% 22,146 92.28 454
Rows 277 : 282 240 0 0 1.69 98.34 7.03 1.7% 22,146 92.28 454
Rows 193 : 198 240 0 0 1.69 98.34 7.02 1.7% 22,146 92.28 454
Rows 439 : 444 240 0 0 1.68 98.34 7.01 1.7% 22,146 92.28 454
Rows 463 : 468 240 0 0 1.68 98.34 6.99 1.7% 22,146 92.28 454
Rows 301 : 306 240 0 0 1.68 98.34 6.99 1.7% 22,146 92.28 454
Rows 217 : 222 240 0 0 1.68 98.34 6.99 1.7% 22,146 92.28 454
Rows 499 : 504 240 0 0 1.67 98.34 6.96 1.7% 22,146 92.28 454
Rows 187 : 192 240 0 0 1.67 98.34 6.94 1.7% 22,146 92.28 454
Rows 109 : 114 240 0 0 1.67 98.34 6.94 1.7% 22,146 92.28 454
Rows 265 : 270 240 0 0 1.66 98.34 6.94 1.7% 22,146 92.28 454
Rows 19 : 24 240 0 0 1.66 98.34 6.91 1.7% 22,146 92.28 454
Rows 235 : 240 240 0 0 1.65 98.34 6.87 1.7% 22,146 92.28 454
Rows 391 : 396 240 0 0 1.65 98.34 6.87 1.7% 22,146 92.28 454
Rows 247 : 252 240 0 0 1.65 98.34 6.87 1.7% 22,146 92.28 454
Rows 151 : 156 240 0 0 1.64 98.34 6.84 1.7% 22,146 92.28 454
Rows 433 : 438 240 0 0 1.64 98.34 6.83 1.7% 22,146 92.28 454
Rows 223 : 228 240 0 0 1.64 98.34 6.82 1.7% 22,146 92.28 454
Rows 199 : 204 240 0 0 1.62 98.34 6.76 1.7% 22,146 92.28 454
Rows 25 : 30 240 0 0 1.62 98.34 6.76 1.6% 22,146 92.28 454
Rows 103 : 108 240 0 0 1.62 98.34 6.75 1.6% 22,146 92.28 454
Rows 121 : 126 240 0 0 1.62 98.34 6.75 1.6% 22,146 92.28 454
Rows 127 : 132 240 0 0 1.61 98.34 6.69 1.6% 22,146 92.28 454
Rows 163 : 168 240 0 0 1.60 98.34 6.68 1.6% 22,146 92.28 454
Rows 31 : 36 240 0 0 1.60 98.34 6.67 1.6% 22,146 92.28 454
Rows 7 : 12 240 0 0 1.60 98.34 6.66 1.6% 22,146 92.28 454
Rows 85 : 90 240 0 0 1.59 98.34 6.64 1.6% 22,146 92.28 454
Rows 37 : 42 240 0 0 1.59 98.34 6.63 1.6% 22,146 92.28 454
Rows 55 : 60 240 0 0 1.59 98.34 6.63 1.6% 22,146 92.28 454
Rows 13 : 18 240 0 0 1.56 98.34 6.50 1.6% 22,146 92.28 454
Rows 181 : 186 240 0 0 1.56 98.34 6.48 1.6% 22,146 92.28 454
Rows 91 : 96 240 0 0 1.54 98.34 6.42 1.6% 22,146 92.28 454
Rows 67 : 72 240 0 0 1.52 98.34 6.35 1.5% 22,146 92.28 454
Rows 133 : 138 240 0 0 1.51 98.34 6.29 1.5% 22,146 92.28 454
Rows 43 : 48 240 0 0 1.50 98.34 6.25 1.5% 22,146 92.28 454
Rows 139 : 144 240 0 0 1.50 98.34 6.25 1.5% 22,146 92.28 454
Rows 1 : 6 200 0 0 1.43 98.34 7.15 1.5% 18,455 92.28 454
Sum of Areas 21,320 0 0 114.48 98.34 5.37 116.4% 1,967,303 92.28 454
FastExcel WorkSheet Areas Profile Version 2.1 Build 444

Physical Environment Profile: 9/12/2004 16:48 F:\My Documents\FastExcel\After.xls

RAM(K) 307,384 785,888 Workbook Settings Calculation Options


Swap File(K) 244,620 1,399,764 Shared Decimal Places Protection Excel Calc Settings Workbook Calc settings
Excel Memory(K) 5,297 80,000 Shared 0 Fixed 0 Structure 0 Workbook Mode All Mixed Mode Other
FileSize(K) 1,112 Changes 1 Places 2 Windows 0 Current Mode Manual Full 1 UpdateRemoteRefs 1
This is FastExcels's analysis
Windows Win XP of the Answers
Saved 1 Backup 0 Password 0 Before Save 1 Manual 0 PrecisionAsDisplay 0
worksheet
MHZ in the AFTER1199workbook Format Normal Styles 6 Views 0 Initial Mode First Book Selected Sheets 0 1904 DateSystem 0
Excel Version 9 Environment Counts Iteration 0 Restore after Open 0 SaveXternalLinks 1
Calculation Engine 92512 Temp 21 VBE 7 Addins 2 Max Iters/change 100/0.001 Disabled on Open 0 Accept Labels 0
The array formulae have
been replaced.
WorkSheet Areas Profile for B0_Answers
Address Count of Calc Millisecs MicroSecs Area/Col % FormulaLength
Area Formula ArrayCells CondFmt Area/Col Sheet /Formula of Sheet Total Average Maximum
$C$70:$AN$81 456 0 216 11.81 62.96 25.89 18.8% 20,640 45.26 78
$C$10:$AN$21 456 0 216 11.23 62.96 24.62 17.8% 21,540 47.24 79
$C$40:$AN$51 456 0 216 11.01 62.96 24.14 17.5% 20,640 45.26 78
$C$55:$AN$66 456 0 216 10.70 62.96 23.47 17.0% 20,640 45.26 78
$C$25:$AN$36 456 0 216 10.14 62.96 22.24 16.1% 20,640 45.26 78
$C$8:$AN$8 38 0 0 0.97 62.96 25.49 1.5% 813 21.39 32
$C$38:$AN$38 38 0 0 0.95 62.96 25.07 1.5% 827 21.76 31
$C$23:$AN$23 38 0 0 0.90 62.96 23.77 1.4% 826 21.74 31
$C$68:$AN$68 38 0 0 0.86 62.96 22.74 1.4% 827 21.76 31
$C$53:$AN$53 38 0 0 0.81 62.96 21.23 1.3% 827 21.76 31
Column
Q 65 0 0 4.67 62.96 71.86 7.4% 4,835 74.38 78
G 65 0 0 3.79 62.96 58.34 6.0% 4,835 74.38 78
H 65 0 0 3.77 62.96 57.94 6.0% 4,835 74.38 78
The calculation bottelencks
AB 65
have been eliminated:0the 0 3.64 62.96 56.06 5.8% 4,835 74.38 78
N 65 0
slowest column now takes 5 0 3.55 62.96 54.66 5.6% 4,835 74.38 78
R milliseconds
65 compared 0 to 0 3.55 62.96 54.64 5.6% 4,835 74.38 78
O 108 milliseconds
65 in Before.
0 0 3.54 62.96 54.50 5.6% 4,835 74.38 78
P 65 0 0 3.51 62.96 54.04 5.6% 4,835 74.38 78
M 65 0 0 3.49 62.96 53.69 5.5% 4,835 74.38 78
J 65 0 0 3.49 62.96 53.62 5.5% 4,835 74.38 78
S 65 0 0 3.46 62.96 53.27 5.5% 4,835 74.38 78
I 65 0 0 3.42 62.96 52.62 5.4% 4,835 74.38 78
The
E array formulae bottlenecks
65 on Answers,
0 were0 eliminated
3.40 by62.96 52.35 5.4% 4,835 74.38 78
reducing the size of the range required to the rows for a single product,
using the steps below.
- Sorting the Products sheet by Product, which is the first condition
in the multiple conditional sum.
- Calculating the start row and number of rows for each Product
block of rows on Products, and storing these on the Counts sheet.
- Using these counts in an OFFSET function to return dynamically
calculated ranges containing only the rows for a single product.
The array formulae bottlenecks on Answers, were eliminated by
reducing the size of the range required to the rows for a single product,
F 65 0 0 3.39 62.96 52.15 5.4% 4,835 74.38 78
using the steps below.
C - Sorting the Products sheet
65 by Product,
0 which is0the first3.39 62.96
condition 52.08 5.4% 4,835 74.38 78
K the multiple conditional sum.
in 65 0 0 3.38 62.96 52.04 5.4% 4,835 74.38 78
T - Calculating the start row
65and number 0 of rows for0 each Product
3.36 62.96 51.73 5.3% 4,835 74.38 78
block
L of rows on Products,65and storing these
0 on the0 Counts sheet.62.96
3.36 51.71 5.3% 4,835 74.38 78
D
- Using these counts in 65
an OFFSET function
0
to return
0
dynamically
3.33 62.96 51.24 5.3% 4,835 74.38 78
calculated ranges containing only the rows for a single product.
U 65 0 0 1.06 62.96 16.31 1.7% 1,187 18.26 79
AJ 65 0 60 0.35
This significantly reduces the number of rows used in the conditional 62.96 5.36 0.6% 1,297 19.95 20
sum,
W and allows us to use SUMIF
65 rather 0than array60formulae.
0.32 62.96 4.96 0.5% 583 8.97 9
AN 65 0 60 0.27 62.96 4.22 0.4% 1,297 19.95 20
The
X OFFSET formulae are65 held in dynamic
0 named60 ranges, for
0.27instance
62.96 4.20 0.4% 583 8.97 9
Products.ProductNameRange contains
Z 65 0 60 0.27 62.96 4.13 0.4% 583 8.97 9
AKOFFSET(A9_Products!$D$1,
= 65 0 60 0.26 62.96 4.06 0.4% 1,297 19.95 20
AL 65 0
VLOOKUP(Answers.Product,ProductIndex,3,FALSE)-1 60 0.26 62.96 4.05 0.4% 1,297 19.95 20
,0,VLOOKUP(Answers.Product,ProductIndex,4,FALSE),1)
AI 65 0 60 0.26 62.96 3.94 0.4% 1,297 19.95 20
AE 65 0 60 0.25 62.96 3.92 0.4% 648 9.97 10
AA 65 0 60 0.25 62.96 3.89 0.4% 583 8.97 9
Y 65 0 60 0.25 62.96 3.88 0.4% 583 8.97 9
AG 65 0 60 0.25 62.96 3.79 0.4% 648 9.97 10
AH 65 0 60 0.24 62.96 3.76 0.4% 648 9.97 10
AF 65 0 60 0.24 62.96 3.73 0.4% 648 9.97 10
AD 65 0 60 0.24 62.96 3.69 0.4% 648 9.97 10
V 65 0 60 0.23 62.96 3.61 0.4% 583 8.97 9
AC 65 0 60 0.23 62.96 3.60 0.4% 648 9.97 10
AM 65 0 60 0.23 62.96 3.55 0.4% 1,297 19.95 20
RowBlock
Rows 76 : 76 38 0 18 1.48 62.96 38.99 2.4% 1,720 45.26 78
Rows 16 : 16 38 0 18 1.47 62.96 38.62 2.3% 1,795 47.24 79
Rows 46 : 46 38 0 18 1.43 62.96 37.51 2.3% 1,720 45.26 78
Rows 12 : 12 38 0 18 1.37 62.96 36.03 2.2% 1,795 47.24 79
Rows 31 : 31 38 0 18 1.35 62.96 35.54 2.1% 1,720 45.26 78
Rows 47 : 47 38 0 18 1.35 62.96 35.51 2.1% 1,720 45.26 78
Rows 75 : 75 38 0 18 1.35 62.96 35.49 2.1% 1,720 45.26 78
Rows 50 : 50 38 0 18 1.34 62.96 35.32 2.1% 1,720 45.26 78
Rows 48 : 48 38 0 18 1.33 62.96 35.02 2.1% 1,720 45.26 78
Rows 74 : 74 38 0 18 1.33 62.96 35.02 2.1% 1,720 45.26 78
Rows 59 : 59 38 0 18 1.32 62.96 34.82 2.1% 1,720 45.26 78
Rows 10 : 10 38 0 18 1.32 62.96 34.75 2.1% 1,795 47.24 79
Rows 30 : 30 38 0 18 1.32 62.96 34.63 2.1% 1,720 45.26 78
Rows 49 : 49 38 0 18 1.31 62.96 34.60 2.1% 1,720 45.26 78
Rows 60 : 60 38 0 18 1.31 62.96 34.55 2.1% 1,720 45.26 78
Rows 41 : 41 38 0 18 1.31 62.96 34.35 2.1% 1,720 45.26 78
Rows 43 : 43 38 0 18 1.30 62.96 34.33 2.1% 1,720 45.26 78
Rows 14 : 14 38 0 18 1.30 62.96 34.08 2.1% 1,795 47.24 79
Rows 34 : 34 38 0 18 1.29 62.96 34.00 2.1% 1,720 45.26 78
Rows 45 : 45 38 0 18 1.29 62.96 33.95 2.0% 1,720 45.26 78
Rows 80 : 80 38 0 18 1.28 62.96 33.73 2.0% 1,720 45.26 78
Rows 62 : 62 38 0 18 1.28 62.96 33.67 2.0% 1,720 45.26 78
Rows 13 : 13 38 0 18 1.28 62.96 33.65 2.0% 1,795 47.24 79
Rows 18 : 18 38 0 18 1.28 62.96 33.58 2.0% 1,795 47.24 79
Rows 70 : 70 38 0 18 1.28 62.96 33.57 2.0% 1,720 45.26 78
Rows 71 : 71 38 0 18 1.27 62.96 33.44 2.0% 1,720 45.26 78
Rows 73 : 73 38 0 18 1.27 62.96 33.33 2.0% 1,720 45.26 78
Rows 61 : 61 38 0 18 1.26 62.96 33.26 2.0% 1,720 45.26 78
Rows 40 : 40 38 0 18 1.26 62.96 33.16 2.0% 1,720 45.26 78
Rows 42 : 42 38 0 18 1.26 62.96 33.14 2.0% 1,720 45.26 78
Rows 15 : 15 38 0 18 1.25 62.96 33.01 2.0% 1,795 47.24 79
Rows 81 : 81 38 0 18 1.25 62.96 32.99 2.0% 1,720 45.26 78
Rows 77 : 77 38 0 18 1.25 62.96 32.91 2.0% 1,720 45.26 78
Rows 66 : 66 38 0 18 1.25 62.96 32.81 2.0% 1,720 45.26 78
Rows 20 : 20 38 0 18 1.24 62.96 32.76 2.0% 1,795 47.24 79
Rows 25 : 25 38 0 18 1.24 62.96 32.66 2.0% 1,720 45.26 78
Rows 79 : 79 38 0 18 1.24 62.96 32.60 2.0% 1,720 45.26 78
Rows 58 : 58 38 0 18 1.24 62.96 32.59 2.0% 1,720 45.26 78
Rows 63 : 63 38 0 18 1.24 62.96 32.57 2.0% 1,720 45.26 78
Rows 78 : 78 38 0 18 1.24 62.96 32.57 2.0% 1,720 45.26 78
Rows 57 : 57 38 0 18 1.24 62.96 32.51 2.0% 1,720 45.26 78
Rows 44 : 44 38 0 18 1.23 62.96 32.26 1.9% 1,720 45.26 78
Rows 65 : 65 38 0 18 1.22 62.96 32.22 1.9% 1,720 45.26 78
Rows 55 : 55 38 0 18 1.22 62.96 32.19 1.9% 1,720 45.26 78
Rows 72 : 72 38 0 18 1.22 62.96 32.05 1.9% 1,720 45.26 78
Rows 35 : 35 38 0 18 1.21 62.96 31.96 1.9% 1,720 45.26 78
Rows 26 : 26 38 0 18 1.21 62.96 31.91 1.9% 1,720 45.26 78
Rows 51 : 51 38 0 18 1.21 62.96 31.81 1.9% 1,720 45.26 78
Rows 21 : 21 38 0 18 1.20 62.96 31.48 1.9% 1,795 47.24 79
Rows 29 : 29 38 0 18 1.19 62.96 31.29 1.9% 1,720 45.26 78
Rows 17 : 17 38 0 18 1.18 62.96 31.16 1.9% 1,795 47.24 79
Rows 33 : 33 38 0 18 1.17 62.96 30.87 1.9% 1,720 45.26 78
Rows 19 : 19 38 0 18 1.17 62.96 30.86 1.9% 1,795 47.24 79
Rows 11 : 11 38 0 18 1.16 62.96 30.58 1.8% 1,795 47.24 79
Rows 27 : 27 38 0 18 1.14 62.96 30.05 1.8% 1,720 45.26 78
Rows 28 : 28 38 0 18 1.14 62.96 29.99 1.8% 1,720 45.26 78
Rows 36 : 36 38 0 18 1.14 62.96 29.97 1.8% 1,720 45.26 78
Rows 64 : 64 38 0 18 1.14 62.96 29.97 1.8% 1,720 45.26 78
Rows 56 : 56 38 0 18 1.13 62.96 29.67 1.8% 1,720 45.26 78
Rows 32 : 32 38 0 18 1.11 62.96 29.33 1.8% 1,720 45.26 78
Rows 68 : 68 38 0 0 0.93 62.96 24.45 1.5% 827 21.76 31
Rows 38 : 38 38 0 0 0.92 62.96 24.26 1.5% 827 21.76 31
Rows 23 : 23 38 0 0 0.87 62.96 22.90 1.4% 826 21.74 31
Rows 53 : 53 38 0 0 0.87 62.96 22.85 1.4% 827 21.76 31
Rows 8 : 8 38 0 0 0.81 62.96 21.43 1.3% 813 21.39 32
Sum of Areas 2,470 0 1,080 59.38 62.96 24.04 94.3% 108,220 43.81 79
FastExcel WorkBook Profile Version 2.1 Build 444

Physical Environment Profile: 9/11/2004 20:02 F:\My Documents\FastExcel\NoNamesAfter.xls


Still in Manual, but should now be in
RAM(K) 319,632 785,888 Workbook Settings Calculation Options
Automatic mode.
Swap File(K) 257,468 1,399,764 Shared Decimal Places Protection Excel Calc Settings Workbook Calc settings
Excel Memory(K) 3,254 80,000 Shared 0 Fixed 0 Structure 0 Workbook Mode All Mixed Mode Other
FileSize(K) 1,668 Changes 1 Places 2 Windows 0 Current Mode Manual Full 1 UpdateRemoteRefs 1
Windows Win XP Saved 1 Backup 0 Password 0 Before Save 1 Manual 0 PrecisionAsDisplay 0
MHZ 1200 Format Normal Styles 6 Views 0 Initial Mode First Book Selected Sheets 0 1904 DateSystem 0
This is the analysis of the
Excel Version 9 Environment
NoNamesAfter Counts
workbook. Iteration 0 Restore after Open 0 SaveXternalLinks 1
Calculation Engine 92512 Temp 24 VBE 7 Addins 2 Max Iters/change 100/0.001 Disabled on Open 0 Accept Labels 0
The defined Names have been
removed, and all the formulae now
WorkSheet Profiles use normal Excel references rather
Cell Counts than references
Calcto Names.
Time(Millisec) Sheet MicroSecs Range Other UBytes Unused Cells Page Shapes HypLinks
Sheetname Used Const CondFmt Formula Used Max Sheet Sheet Calc OvHead /Formula Mem(K) Mem(K) per Cell %Waste %Sparse Breaks Count Count
B0_Answers 3,402 247 1,152 2,600 36.6 43.7 43.5 6.9 14.1 202 13 72.6 0% 16% 0 10 0
A8_Products 21,360 40 0 21,320 49.3 35.5 32.4 None 1.5 1,370 192 65.7 0% 0% 0 40 0
A6_Respondents 2,720 15 0 2,199 8.3 27.2 14.0 5.7 3.8 96 8 44.4 0% 19% 0 14 0
A1_ProductData 4,806 4,273 0 533 8.8 14.5 13.5 4.7 16.6 45 0 9.6 0% 0% 0 9 0
A5_Sectors 117 10 0 96 3.2 12.4 12.0 8.7 33.8 1 0 9.1 0% 9% 0 6 0
A3_UniVerse 325 135 0 57 14.2 11.2 10.9 None 191.0 70 69 371.9 0% 41% 0 16 0
Memory useage has been
A7_ProductNames 60 15 0 15 1.6 10.8 10.4 8.8 106.0 1 0 18.7 40% 50% 0 0 0
reduced by 2.6MB
A9_Explanation 533 40 0 0 0.2 12.0 9.9 9.7 0.0 5 0 123.2 85% 92% 0 0 0
A4_Counts 1 0 0 0 0.2 9.4 9.0 8.9 0.0 0 0 100% 100% 0 0 0
A2_SegmentNames 16 16 0 0 0.2 9.6 9.0 8.7 0.0 0 0 19.0 0% 0% 0 0 0
A0_RespondentData 1,512 1,512 0 0 1.9 9.4 8.9 7.1 0.0 14 4 9.6 0% 0% 0 9 0
Other 28 The dynamic range names
Totals 34,852 6,303 1,152 26,820 124.5 195.7 173.5 49.0 4.6 1,804 315 74.0 1.4% 5.0% and defined
104 names have
0
been removed.

WorkBook Summary
Sheets Cell Counts Calc Time(Millisec) % Book MicroSecs Range Total TBytes Unused Cells Pivot XLLinks Names
Count Used Const CondFmt Formula Re Calc Full Calc Volatile OvHead /Formula Mem(K) Mem(K) per Cell %Waste %Sparse Cache(K) Count Count
11 34,852 6,303 1,152 26,820 29.7 82.8 35.8% None 3.1 1,804 2,119 65.5 1.4% 5.0% 0 0 2

Book overhead is now


Changes in the NoNamesAfter eliminated, in fact the
The number of recalculation time is workbook calculates faster
workbook. formulae has been virtually instantaneous at than the sum of the sheets.
Volatility is reduced
increased by 129 under 0.03 of a second
- the defined Names have been removed,
and all the formulae now use normal Excel
references rather than references to Names.

- To make it easier to understand the new


formulae replacing the array formulae on the
Answers sheet, the Start Row and Number of
Rows are referenced on each Row of the
sheet.
Changes in the NoNamesAfter
workbook.
- the defined Names have been removed,
and all the formulae now use normal Excel
references rather than references to Names.

- To make it easier to understand the new


formulae replacing the array formulae on the
Answers sheet, the Start Row and Number of
Rows are referenced on each Row of the
sheet.
Name
Products!_FilterDatabase
Respondents!_FilterDatabase
Answers.Product
Answers.SectorName
DontKnowfactor
MobPhones
MobSpend
Network
OurPhones
OurSpend
ProductCount

ProductData
ProductData.Addusers

ProductData.colProductSerial
ProductData.Level2001
ProductData.LevelNow
ProductData.Pct2001
ProductData.PctNow
ProductData.product
ProductData.ProductSerial
ProductData.sectorcode
ProductData.SpendIncCode

ProductNames
Products
Products.colL1IncSpend
Products.colL1Spend
Products.colL1Users
Products.colL2IncSpend
Products.colL2Spend
Products.colL2Users
Products.colL3IncSpend
Products.colL3Spend
Products.colL3Users
Products.colL4IncSpend
Products.colL4Spend
Products.colL4Users
Products.colL5IncSpend
Products.colL5Spend
Products.colL5Users
Products.colProductName
Products.colSectorName
Products.colTotIncSpend
Products.colTotSpend
Products.colTotUsers
Products.colUPhones2001
Products.colUSpend2001
Products.CurrentLevel
Products.IncrementalSpend
Products.L1IncSpend
Products.L1Spend
Products.L1Users
Products.L2IncSpend
Products.L2Spend
Products.L2Users
Products.L3IncSpend
Products.L3Spend
Products.L3Users
Products.L4IncSpend
Products.L4Spend
Products.L4Users
Products.L5IncSpend
Products.L5Spend
Products.L5Users
Products.NCSpend
Products.NCUsers
Products.NewLevel
Products.NewSpend
Products.NewUsers
Products.Phones2001
Products.SpendNow
Products.SumIncSpend
Products.SvcDrivenSpend
Products.SvcDrivenUsers
Products.TotIncSpend
Products.TotSpend
Products.TotUsers
Products.Uphones2001
Products.UPhonesNow
Products.UsersNow
Products.USpend2001
Products.USpendNow
ProductSerialCount
RespondentCount

RespondentData

RespondentData.colPhones2001

RespondentData.colPhonesNow

RespondentData.colRespondentSerial

RespondentData.colSector_Code

RespondentData.colSegmentCode
RespondentData.Emps_2001
RespondentData.Emps_Now
RespondentData.Phones2001
RespondentData.PhonesNow
RespondentData.RespondentSerial
RespondentData.Sector_Code
RespondentData.SegmentCode
RespondentData.Spend2001
RespondentData.SpendNow

Respondents
Respondents.Channel

Respondents.colPowerScalePhonesNow

Respondents.colPowerScaleSpendNow

Respondents.colSectorName

Respondents.colUphones2001

Respondents.colUSpend2001
Respondents.PhoneScaleFactor
Respondents.PowerScalePhones2001
Respondents.PowerScalePhonesnow
Respondents.PowerScaleSpend2001
Respondents.PowerScaleSpendNow
Respondents.SectorName
Respondents.SegmentName
Respondents.SpendScaleFactor
Respondents.Uphones2001
Respondents.UPhonesNow
Respondents.Uspend2001
Respondents.USpendNow
scalepower
Sector
SectorCount
Sectors
SegmentCount

SegmentNames
ServiceDriven_Users_Yield
SignificantFactor
SlightFactor

Spendscalefactor
TotalEmps
TotalMobPhones
TotalMobSpend
TotalOurPhones
TotalOurSpend
Universe
Universe.Emps

Universe.Emps2001
RefersToLocal These defined Range Names are dynamic. Visible Local name
=Products!$A$1:$U$534 They automatically expand or contract as the 0 1
=Respondents!$D$1:$V$168 number of entries in the range changes. This is 0 1
=Answers!$A65535 ideal for Excel models with input data that will 1 0
change over time.
=Answers!$B65535 1 0
=UniVerse!$C$7 These dynamic rnage names were generated 1 0
=OFFSET(UniVerse!$D$14,0,0,COUNTA(UniVerse!$D$14:$D$65536),1)
using the FastExcel Dynamic Range wizard. 1 0
=OFFSET(UniVerse!$E$14,0,0,COUNTA(UniVerse!$E$14:$E$65536),1) 1 0
=UniVerse!$G$7 1 0
=OFFSET(UniVerse!$G$14,0,0,COUNTA(UniVerse!$G$14:$G$65536),1) 1 0
=OFFSET(UniVerse!$H$14,0,0,COUNTA(UniVerse!$H$14:$H$65536),1) 1 0
=COUNTA(ProductNames!$A:$A) 1 0

=OFFSET(ProductData!$A$2,0,0,COUNTA(ProductData!$A$2:$A$65536),9) 1 0
=ProductData!$H34777 1 0

=OFFSET(ProductData!$A$2,0,0,COUNTA(ProductData!$A$2:$A$65536),1) 1 0
=ProductData!$F34777 1 0
=ProductData!$D34777 1 0
=ProductData!$G34777 1 0
=ProductData!$E34777 1 0
=ProductData!$C34777 1 0
=ProductData!$A34777 1 0
=ProductData!$B34777 1 0
=ProductData!$I34777 1 0
=OFFSET(ProductNames!$A$2,0,0,COUNTA(ProductNames!
$A$2:$A$65536),2) 1 0
=OFFSET(Products!$A$2,0,0,COUNTA(Products!$A$2:$A$65536),39) 1 0
=OFFSET(Products!$AH$2,0,0,COUNTA(Products!$AH$2:$AH$65536),1) 1 0
=OFFSET(Products!$AB$2,0,0,COUNTA(Products!$AB$2:$AB$65536),1) 1 0
=OFFSET(Products!$V$2,0,0,COUNTA(Products!$V$2:$V$65536),1) 1 0
=OFFSET(Products!$AI$2,0,0,COUNTA(Products!$AI$2:$AI$65536),1) 1 0
=OFFSET(Products!$AC$2,0,0,COUNTA(Products!$AC$2:$AC$65536),1) 1 0
=OFFSET(Products!$W$2,0,0,COUNTA(Products!$W$2:$W$65536),1) 1 0
=OFFSET(Products!$AJ$2,0,0,COUNTA(Products!$AJ$2:$AJ$65536),1) 1 0
=OFFSET(Products!$AD$2,0,0,COUNTA(Products!$AD$2:$AD$65536),1) 1 0
=OFFSET(Products!$X$2,0,0,COUNTA(Products!$X$2:$X$65536),1) 1 0
=OFFSET(Products!$AK$2,0,0,COUNTA(Products!$AK$2:$AK$65536),1) 1 0
=OFFSET(Products!$AE$2,0,0,COUNTA(Products!$AE$2:$AE$65536),1) 1 0
=OFFSET(Products!$Y$2,0,0,COUNTA(Products!$Y$2:$Y$65536),1) 1 0
=OFFSET(Products!$AL$2,0,0,COUNTA(Products!$AL$2:$AL$65536),1) 1 0
=OFFSET(Products!$AF$2,0,0,COUNTA(Products!$AF$2:$AF$65536),1) 1 0
=OFFSET(Products!$Z$2,0,0,COUNTA(Products!$Z$2:$Z$65536),1) 1 0
=OFFSET(Products!$C$2,0,0,COUNTA(Products!$C$2:$C$65536),1) 1 0
=OFFSET(Products!$B$2,0,0,COUNTA(Products!$B$2:$B$65536),1) 1 0
=OFFSET(Products!$AM$2,0,0,COUNTA(Products!$AM$2:$AM$65536),1) 1 0
=OFFSET(Products!$AG$2,0,0,COUNTA(Products!$AG$2:$AG$65536),1) 1 0
=OFFSET(Products!$AA$2,0,0,COUNTA(Products!$AA$2:$AA$65536),1) 1 0
=OFFSET(Products!$G$2,0,0,COUNTA(Products!$G$2:$G$65536),1) 1 0
=OFFSET(Products!$I$2,0,0,COUNTA(Products!$I$2:$I$65536),1) 1 0
=Products!$L2 1 0
=Products!$T2 1 0
=Products!$AH2 1 0
=Products!$AB2 1 0
=Products!$V2 1 0
=Products!$AI2 1 0
=Products!$AC2 1 0
=Products!$W2 1 0
=Products!$AJ2 1 0
=Products!$AD2 1 0
=Products!$X2 1 0
=Products!$AK2 1 0
=Products!$AE2 1 0
=Products!$Y2 1 0
=Products!$AL2 1 0
=Products!$AF2 1 0
=Products!$Z2 1 0
=Products!$Q2 1 0
=Products!$M2 1 0
=Products!$N2 1 0
=Products!$R2 1 0
=Products!$O2 1 0
=Products!$E2 1 0
=Products!$K2 1 0
=Products!$U2 1 0
=Products!$S2 1 0
=Products!$P2 1 0
=Products!$AM2 1 0
=Products!$AG2 1 0
=Products!$AA2 1 0
=Products!$G2 1 0
=Products!$F2 1 0
=Products!$J2 1 0
=Products!$I2 1 0
=Products!$H2 1 0
=COUNTA(ProductData!$A$2:$A$65536) 1 0
=COUNTA(RespondentData!$A$2:$A$65536) 1 0
=OFFSET(RespondentData!$A$2,0,0,COUNTA(RespondentData!
$A$2:$A$65536),9) 1 0
=OFFSET(RespondentData!$G$2,0,0,COUNTA(RespondentData!
$G$2:$G$65536),1) 1 0
=OFFSET(RespondentData!$F$2,0,0,COUNTA(RespondentData!
$F$2:$F$65536),1) 1 0
=OFFSET(RespondentData!$A$2,0,0,COUNTA(RespondentData!
$A$2:$A$65536),1) 1 0
=OFFSET(RespondentData!$B$2,0,0,COUNTA(RespondentData!
$B$2:$B$65536),1) 1 0
=OFFSET(RespondentData!$C$2,0,0,COUNTA(RespondentData!
$C$2:$C$65536),1) 1 0
=RespondentData!$E65536 1 0
=RespondentData!$D65536 1 0
=RespondentData!$G65536 1 0
=RespondentData!$F65536 1 0
=RespondentData!$A65536 1 0
=RespondentData!$B65536 1 0
=RespondentData!$C65536 1 0
=RespondentData!$I65536 1 0
=RespondentData!$H65536 1 0
=OFFSET(Respondents!$A$2,0,0,COUNTA(Respondents!
$A$2:$A$65536),13) 1 0
=Respondents!$A1 1 0

=OFFSET(Respondents!$F$2,0,0,COUNTA(Respondents!$F$2:$F$65536),1) 1 0

=OFFSET(Respondents!$H$2,0,0,COUNTA(Respondents!$H$2:$H$65536),1) 1 0

=OFFSET(Respondents!$B$2,0,0,COUNTA(Respondents!$B$2:$B$65536),1) 1 0

=OFFSET(Respondents!$L$2,0,0,COUNTA(Respondents!$L$2:$L$65536),1) 1 0
=OFFSET(Respondents!$M$2,0,0,COUNTA(Respondents!
$M$2:$M$65536),1) 1 0
=Respondents!$D1 1 0
=Respondents!$G1 1 0
=Respondents!$F1 1 0
=Respondents!$I1 1 0
=Respondents!$H1 1 0
=Respondents!$B1 1 0
=Respondents!$C1 1 0
=Respondents!$E1 1 0
=Respondents!$L1 1 0
=Respondents!$J1 1 0
=Respondents!$M1 1 0
=Respondents!$K1 1 0
=Sectors!$I$2 1 0
=OFFSET(UniVerse!$A$14,0,0,COUNTA(UniVerse!$A$14:$A$65536),1) 1 0
=COUNTA(UniVerse!$A$14:$A$65536) 1 0
=OFFSET(Sectors!$A$2,0,0,COUNTA(Sectors!$A$2:$A$65536),8) 1 0
=COUNTA(SegmentNames!$A$2:SegmentNames!$A$65536) 1 0
=OFFSET(SegmentNames!$A$2,0,0,COUNTA(SegmentNames!
$A$2:$A$65536),2) 1 0
=UniVerse!$C$9 1 0
=UniVerse!$C$6 1 0
=UniVerse!$C$5 1 0

=OFFSET(Respondents!$E$2,0,0,COUNTA(Respondents!$E$2:$E$65536),1) 1 0
=UniVerse!$F$12 1 0
=UniVerse!$D$12 1 0
=UniVerse!$E$12 1 0
=UniVerse!$G$12 1 0
=UniVerse!$H$12 1 0
=OFFSET(UniVerse!$A$14,0,0,COUNTA(UniVerse!$A$14:$A$65536),14) 1 0
=OFFSET(UniVerse!$F$14,0,0,COUNTA(UniVerse!$F$14:$F$65536),1) 1 0
=OFFSET(RespondentData!$E$2,0,0,COUNTA(RespondentData!
$E$2:$E$65536),1) 1 0
Error External link Relative 3-D Areas Cells UnUsed
0 0 1 0 1 11214 Not checked
0 0 1 0 1 3192 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 12 Not checked
0 0 0 0 1 12 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 0 12 Not checked
0 0 0 0 1 12 Not checked
0 0 1 0 1 Not checked

0 0 0 0 1 4797 Not checked


0 0 1 0 1 1 Not checked

0 0 1 0 1 533 Not checked


0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 1 Not checked

0 0 0 0 1 10 Not checked
0 0 0 0 1 20787 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 0 0 1 533 Not checked
0 0 1 0 1 533 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 0 0 0 1 Not checked
0 0 0 0 0 Not checked
0 0 0 0 1 Not checked

0 0 0 0 1 1503 Not checked

0 0 0 0 1 167 Not checked

0 0 0 0 1 167 Not checked

0 0 0 0 1 167 Not checked

0 0 0 0 1 167 Not checked

0 0 1 0 1 167 Not checked


0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 0 0 1 1 Not checked

0 0 0 0 1 2171 Not checked


0 0 1 0 1 1 Not checked

0 0 0 0 1 167 Not checked

0 0 0 0 1 167 Not checked

0 0 0 0 1 167 Not checked

0 0 0 0 1 167 Not checked

0 0 0 0 1 167 Not checked


0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 1 0 1 1 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 12 Not checked
0 0 0 0 0 Not checked
0 0 0 0 1 96 Not checked
0 0 0 0 0 Not checked

0 0 0 0 1 14 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 1 Not checked

0 0 0 0 1 167 Not checked


0 0 0 0 1 1 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 1 Not checked
0 0 0 0 1 168 Not checked
0 0 0 0 1 12 Not checked

0 0 0 0 1 167 Not checked


Name RefersToLocal Visible
A6_Respondents!_FilterDatabase =A6_Respondents!$D$1:$V$168 0
A8_Products!_FilterDatabase =A8_Products!$C$1:$V$534 0
Answers.Product =B0_Answers!$A14 1
Answers.SectorName =B0_Answers!$B14 1
DontKnowfactor =A3_UniVerse!$C$7 1
MobPhones =OFFSET(A3_UniVerse!$D$14,0,0,SectorCount,1) 1
MobSpend =OFFSET(A3_UniVerse!$E$14,0,0,SectorCount,1) 1
Network =A3_UniVerse!$G$7 1
OurPhones =OFFSET(A3_UniVerse!$G$14,0,0,SectorCount,1) 1
OurSpend =OFFSET(A3_UniVerse!$H$14,0,0,SectorCount,1) 1
ProductCount =COUNTA(A7_ProductNames!$A:$A)-1 1
=OFFSET(A1_ProductData!
ProductData $B$2,0,0,ProductSerialCount,9) 1
ProductData.Addusers =A1_ProductData!$H2 1
These Range names in the A
=OFFSET(A1_ProductData!
exactly the same way as in th
ProductData.colProductSerial $B$2,0,0,ProductSerialCount,1) 1
much less time to calculate be
ProductData.Level2001 =A1_ProductData!$F2 1
COUNTA(Products!$V$2:$V$
ProductData.LevelNow =A1_ProductData!$D2 replaced by a1 reference to a s
ProductData.Pct2001 =A1_ProductData!$G2 1
counts the number of Product
ProductData.PctNow =A1_ProductData!$E2 These dynamic1 rnage names
ProductData.product =A1_ProductData!$A2 FastExcel Dynamic
1 Range wi
ProductData.ProductSerial =A1_ProductData!$B2 1
ProductData.sectorcode =A1_ProductData!$C2 1
ProductData.SpendIncCode =A1_ProductData!$I2 1
ProductIndex =A7_ProductNames!$B$2:$F$6 1
ProductNames =OFFSET(A7_ProductNames!$A$2,0,0,ProductCount,2) 1

Products =OFFSET(A8_Products!$C$2,0,0,ProductSerialCount,51) 1

Products.colL1IncSpend =OFFSET(A8_Products!$AI$2,0,0,ProductSerialCount,1) 1

Products.colL1Spend =OFFSET(A8_Products!$AC$2,0,0,ProductSerialCount,1) 1

Products.colL1Users =OFFSET(A8_Products!$W$2,0,0,ProductSerialCount,1) 1

Products.colL2IncSpend =OFFSET(A8_Products!$AJ$2,0,0,ProductSerialCount,1) 1

Products.colL2Spend =OFFSET(A8_Products!$AD$2,0,0,ProductSerialCount,1) 1
Products.colL2Users =OFFSET(A8_Products!$X$2,0,0,ProductSerialCount,1) 1

Products.colL3IncSpend =OFFSET(A8_Products!$AK$2,0,0,ProductSerialCount,1) 1

Products.colL3Spend =OFFSET(A8_Products!$AE$2,0,0,ProductSerialCount,1) 1
Products.colL3Users =OFFSET(A8_Products!$Y$2,0,0,ProductSerialCount,1) 1

Products.colL4IncSpend =OFFSET(A8_Products!$AL$2,0,0,ProductSerialCount,1) 1

Products.colL4Spend =OFFSET(A8_Products!$AF$2,0,0,ProductSerialCount,1) 1
Products.colL4Users =OFFSET(A8_Products!$Z$2,0,0,ProductSerialCount,1) 1

Products.colL5IncSpend =OFFSET(A8_Products!$AM$2,0,0,ProductSerialCount,1) 1

Products.colL5Spend =OFFSET(A8_Products!$AG$2,0,0,ProductSerialCount,1) 1

Products.colL5Users =OFFSET(A8_Products!$AA$2,0,0,ProductSerialCount,1) 1
Products.colProductName =OFFSET(A8_Products!$A$2,0,0,ProductSerialCount,1) 1
Products.colSectorName =OFFSET(A8_Products!$D$2,0,0,ProductSerialCount,1) 1

Products.colTotIncSpend =OFFSET(A8_Products!$AN$2,0,0,ProductSerialCount,1) 1

Products.colTotSpend =OFFSET(A8_Products!$AH$2,0,0,ProductSerialCount,1) 1

Products.colTotUsers =OFFSET(A8_Products!$AB$2,0,0,ProductSerialCount,1) 1
Products.colUPhones2001 =OFFSET(A8_Products!$H$2,0,0,ProductSerialCount,1) 1
Products.colUSpend2001 =OFFSET(A8_Products!$J$2,0,0,ProductSerialCount,0) 1
Products.CurrentLevel =A8_Products!$M7 1
Products.IncrementalSpend =A8_Products!$U7 1
Products.L1IncSpend =A8_Products!$AI7 1
Products.L1Spend =A8_Products!$AC7 1
Products.L1Users =A8_Products!$W7 1
Products.L2IncSpend =A8_Products!$AJ7 1
Products.L2Spend =A8_Products!$AD7 1
Products.L2Users =A8_Products!$X7 1
Products.L3IncSpend =A8_Products!$AK7 1
Products.L3Spend =A8_Products!$AE7 1
Products.L3Users =A8_Products!$Y7 1
Products.L4IncSpend =A8_Products!$AL7 1
Products.L4Spend =A8_Products!$AF7 1
Products.L4Users =A8_Products!$Z7 1
Products.L5IncSpend =A8_Products!$AM7 1
Products.L5Spend =A8_Products!$AG7 1
Products.L5Users =A8_Products!$AA7 1
Products.NCSpend =A8_Products!$R7 1
Products.NCUsers =A8_Products!$N7 1
Products.NewLevel =A8_Products!$O7 1
Products.NewSpend =A8_Products!$S7 1
Products.NewUsers =A8_Products!$P7 1
Products.Phones2001 =A8_Products!$F7 1
=OFFSET(A8_Products!
$D$1,VLOOKUP(Answers.Product,ProductIndex,3,FALSE
)-
1,0,VLOOKUP(Answers.Product,ProductIndex,4,FALSE),1
Products.ProductNameRange ) 1

=OFFSET(Products.UserBase,VLOOKUP(Answers.Produ
ct,ProductIndex,3,FALSE)-1,COLUMN()-
Products.ProductUserRange 3,VLOOKUP(Answers.Product,ProductIndex,4,FALSE),1) 1
Products.SpendNow =A8_Products!$L7 1
Products.SumIncSpend =A8_Products!$V7 1
Products.SvcDrivenSpend =A8_Products!$T7 1
Products.SvcDrivenUsers =A8_Products!$Q7 1
Products.TotIncSpend =A8_Products!$AN7 1
Products.TotSpend =A8_Products!$AH7 1
Products.TotUsers =A8_Products!$AB7 1
Products.Uphones2001 =A8_Products!$H7 1
Products.UPhonesNow =A8_Products!$G7 1
Products.UserBase =A8_Products!$W$1 1
Products.UsersNow =A8_Products!$K7 1
Products.USpend2001 =A8_Products!$J7 1
Products.USpendNow =A8_Products!$I7 1
ProductSerialCount =A4_Counts!$B$4 1
RespondentCount =COUNTA(A0_RespondentData!$A$2:$A$65536) 1
=OFFSET(A0_RespondentData!
RespondentData $A$2,0,0,RespondentCount,9) 1
=OFFSET(A0_RespondentData!
RespondentData.colPhones2001 $G$2,0,0,RespondentCount,1) 1
=OFFSET(A0_RespondentData!
respondentData.colPhonesNow $F$2,0,0,RespondentCount,1) 1
=OFFSET(A0_RespondentData!
RespondentData.colRespondentSerial $A$2,0,0,RespondentCount,1) 1
=OFFSET(A0_RespondentData!
RespondentData.colSector_Code $B$2,0,0,RespondentCount,1) 1
=OFFSET(A0_RespondentData!
RespondentData.colSegmentCode $C$2,0,0,RespondentCount,1) 1
RespondentData.Emps_2001 =A0_RespondentData!$E2 1
RespondentData.Emps_Now =A0_RespondentData!$D2 1
RespondentData.Phones2001 =A0_RespondentData!$G2 1
RespondentData.PhonesNow =A0_RespondentData!$F2 1
RespondentData.RespondentSerial =A0_RespondentData!$A2 1
RespondentData.Sector_Code =A0_RespondentData!$B2 1
RespondentData.SegmentCode =A0_RespondentData!$C2 1
RespondentData.Spend2001 =A0_RespondentData!$I2 1
RespondentData.SpendNow =A0_RespondentData!$H2 1
RespondentIx =A8_Products!$B7 1
=OFFSET(A6_Respondents!
Respondents $A$2,0,0,RespondentCount,13) 1
Respondents.Channel =A6_Respondents!$A2 1
=OFFSET(A6_Respondents!
Respondents.colPowerScalePhonesnow $F$2,0,0,RespondentCount,1) 1
=OFFSET(A6_Respondents!
Respondents.colPowerScaleSpendNow $H$2,0,0,RespondentCount,1) 1
=OFFSET(A6_Respondents!
Respondents.colSectorName $B$2,0,0,RespondentCount,1) 1
=OFFSET(A6_Respondents!
Respondents.colUphones2001 $L$2,0,0,RespondentCount,1) 1
=OFFSET(A6_Respondents!
Respondents.colUspend2001 $M$2,0,0,RespondentCount,1) 1
Respondents.PhoneScaleFactor =A6_Respondents!$D2 1
Respondents.PowerScalePhones2001 =A6_Respondents!$G2 1
Respondents.PowerScalePhonesnow =A6_Respondents!$F2 1
Respondents.PowerScaleSpend2001 =A6_Respondents!$I2 1
Respondents.PowerScaleSpendNow =A6_Respondents!$H2 1
Respondents.SectorName =A6_Respondents!$B2 1
Respondents.SegmentName =A6_Respondents!$C2 1
Respondents.SpendScaleFactor =A6_Respondents!$E2 1
Respondents.Uphones2001 =A6_Respondents!$L2 1
Respondents.UPhonesNow =A6_Respondents!$J2 1
Respondents.Uspend2001 =A6_Respondents!$M2 1
Respondents.USpendNow =A6_Respondents!$K2 1
scalepower =A5_Sectors!$I$2 1
Sector =OFFSET(A3_UniVerse!$A$14,0,0,SectorCount,1) 1
SectorCount =COUNTA(A3_UniVerse!$A$14:$A$65536) 1
Sectors =OFFSET(A5_Sectors!$A$2,0,0,SectorCount,8) 1
SegmentCount =A4_Counts!$B$6 1
=OFFSET(A2_SegmentNames!
SegmentNames $A$2,0,0,SegmentCount,2) 1
ServiceDriven_Users_Yield =A3_UniVerse!$C$9 1
SignificantFactor =A3_UniVerse!$C$6 1
SlightFactor =A3_UniVerse!$C$5 1
=OFFSET(A6_Respondents!
Spendscalefactor $E$2,0,0,RespondentCount,1) 1
TotalEmps =A3_UniVerse!$F$12 1
TotalMobPhones =A3_UniVerse!$D$12 1
TotalMobSpend =A3_UniVerse!$E$12 1
TotalOurPhones =A3_UniVerse!$G$12 1
TotalOurSpend =A3_UniVerse!$H$12 1
Universe =OFFSET(A3_UniVerse!$A$14,0,0,SectorCount,14) 1
Universe.Emps =OFFSET(A3_UniVerse!$F$14,0,0,SectorCount,1) 1

Universe.Emps2001 =OFFSET(A0_RespondentData!$E$2,0,0,SectorCount,1) 1
Local name Error External link Relative 3-D Areas Cells UnUsed
1 0 0 0 0 1 3192 Not checked
1 0 0 0 0 1 10680 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 0 0 1 12 Not checked
0 0 0 0 0 1 12 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 0 0 1 12 Not checked
0 0 0 0 0 1 12 Not checked
0 0 0 0 0 0 Not checked

0 0 0 0 0 1 4797 Not checked


0 0 0 1 0 1 1 Not checked
hese Range names in the After workbook are still dynamic in
xactly the same way as in0 the Before
0 workbook,0but they take
0 0 1 533 Not checked
uch less time to calculate because all the
0
OUNTA(Products!$V$2:$V$65536) 0 formulae have
0 been 1 0 1 1 Not checked
placed by a reference to0a single0COUNTA formula
0 that 1 0 1 1 Not checked
0 0
ounts the number of ProductSerials. 0 1 0 1 1 Not checked
hese dynamic rnage names 0 were0generated using
0 the 1 0 1 1 Not checked
astExcel Dynamic Range0wizard. 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 0 0 1 25 Not checked
0 0 0 0 0 1 10 Not checked

0 0 0 0 0 1 27183 Not checked

0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked


0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked


0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked


0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked


0 0 0 0 0 1 533 Not checked
0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked

0 0 0 0 0 1 533 Not checked


0 0 0 0 0 1 533 Not checked
0 0 0 0 0 0 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked

0 0 0 0 0 0 Not checked

0 0 0 0 0 0 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 0 0 0 Not checked

0 0 0 0 0 1 1503 Not checked

0 0 0 0 0 1 167 Not checked

0 0 0 0 0 1 167 Not checked

0 0 0 0 0 1 167 Not checked

0 0 0 0 0 1 167 Not checked

0 0 0 0 0 1 167 Not checked


0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked

0 0 0 0 0 1 2171 Not checked


0 0 0 1 0 1 1 Not checked

0 0 0 0 0 1 167 Not checked

0 0 0 0 0 1 167 Not checked

0 0 0 0 0 1 167 Not checked

0 0 0 0 0 1 167 Not checked

0 0 0 0 0 1 167 Not checked


0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 1 0 1 1 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 0 0 1 12 Not checked
0 0 0 0 0 0 Not checked
0 0 0 0 0 1 96 Not checked
0 0 0 0 0 1 1 Not checked

0 0 0 0 0 1 14 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 0 0 1 1 Not checked

0 0 0 0 0 1 167 Not checked


0 0 0 0 0 1 1 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 0 0 1 1 Not checked
0 0 0 0 0 1 168 Not checked
0 0 0 0 0 1 12 Not checked

0 0 0 0 0 1 12 Not checked