ࡱ>  ]gd\Applya{uTahoma(Cancel{uTahoma $#4OKButton( $8ApplyButton ( %8CancelButton1 GHIJKLMNOP Microsoft Forms 2.0 FormEmbedded Object9qjklmnopVERSION 5.00 Begin {C62A69F0-16DC-11CE-9E98-00AA00574A4F} PrefsVBFrame'RowInsFormn_P MvMvfco^d  !"#$%&'()+,-./0123456789:;<=>?@ABCDEFGHIKLMNOPQSTVWXYZ[\]^_`abcdefgijkmopqrstuvwxyz{|}~Rainbow1K1K1K BFormula GroupsRoutines01.AllGroups(DDDDD@DDD@@D@D@DDDD@@D@@DDD@@DDDDD@""""""""" """" """""" "p( BAll DependenciesRoutines01.AllGroups(aUUPaUUPaaaaDDaDD3333p( B Save FormatRoutines01.SaveChanges("""""""""""" 3333 3333 3333 3333 3333 3333p( B Undo ChangesRoutines01.UndoButton( p( Rainbow Icons1HK1HK1HK 0B Page Icon(p(? 0B Grid Icon(303030303030D@D@D@D@D@D@" " " " " " p(|8#<QH.?F?@}B ܓI4x?@}B ܓI4QH.?ME ɀ\pMike Ba=  ThisWorkbook=h\: <X@"1Arial1Arial1Arial1Arial1Arial1$Arial1 Arial1h Arial1h Arial1h Arial1h Arial1 Arial1 Arial1Arial1 Arial1 Arial1Arial1@Arial""#,##0;\-""#,##0""#,##0;[Red]\-""#,##0""#,##0.00;\-""#,##0.00#""#,##0.00;[Red]\-""#,##0.005*0_-""* #,##0_-;\-""* #,##0_-;_-""* "-"_-;_-@_-,)'_-* #,##0_-;\-* #,##0_-;_-* "-"_-;_-@_-=,8_-""* #,##0.00_-;\-""* #,##0.00_-;_-""* "-"??_-;_-@_-4+/_-* #,##0.00_-;\-* #,##0.00_-;_-* "-"??_-;_-@_-"Yes";"No";"No";"" 0.000% 0.000 0.0%##,##0.000_);[Red]\(#,##0.000\)"Yes";"Yes";"No""True";"True";"False""On";"On";"Off"@                + ) , *     X  X  X  X  X  x@@  x@ "x@ "x @ "x "x  " "  "   "  "  "   H X  X  x@  x  x                      -   4   0   1   2   6   .   9      5                 x@       <    H  @  H !T "P  P    (X    ` GuidenColours PreferencesControl yTemp, ColsCheck:# CompColour: CompStart: ExpiryDate: FGrpReport:  FGrpStart:  IShtReport: IShtStart: LongChars:MaxIdent:%MinCells:$MinIdent:( RowDelete:* RowInsert: RowsCheck:'UserCode:`i When you want to start looking at the detailed calculations in a model, it is time to use the Formula Groups feature. This lets you see at a glance the blocks of copied formulas in a spreadsheet, so that you can save a great deal of time by examining just one formula in each block. This function will also show you where individual formulas have been overwritten or modified inconsistently, perhaps to make last-minute adjustments.On the other hand, if your main requirement is to check a spreadsheet for indications of poor structure and potential problems, you will probably use the All Dependencies function. This in effect creates a colour map of the logical characteristics of a spreadsheet, and you will see immediately whether the spreadsheet is well structured, with consistent blocks of colour running right across rows and very few row differences. A badly structured spreadsheet, on the other hand, will look like a patchwork of different colours.The Analyst can also help you set up the structure of spreadsheets that you develop. For instance, you can select Dependencies and Inputs to highlight all input cells in whatever colour you choose, and you can then select ReFormat and Unlock to set all these input cells as unlocked. Finally you can use (Un)Protect to turn on protection for all sheets (and the workbook), and you then very simply have a workbook which complies with best practice by allowing users to change only the input cells, and protecting the rest of the spreadsheet.How to use Rainbow AnalystThis function analyses row and column differences to identify groups of copied formulas, and it then uses the colours and/or patterns from your default colour selection (for more information see Default Colours below) to highlight each group. This lets you see at a glance where there are inconsistent formulas in a row (which may indicate an error), and it allows you to check just one cell in a group and know that all the other cells are the same.All DependenciesIf you are carrying out a full review of a spreadsheet, you can set your Preferences so that the Analyst will generate a report which lists all unique formulas, showing the first and last occurrence and the number of occurrences of each formula, with a column to indicate that the formula has been checked. The report is in the form of a single-sheet workbook, like all other Rainbow reports.The Inter-Sheet Precedents and Dependents functions use the range of 24 group colours to highlight the cells in each sheet which have precedents or dependents (as appropriate) in other sheets. The cells are highlighted in specific colours indicating which other sheet they are linked to, and you can set your Preferences to generate a report listing all the sheets and their respective colours. You can also set your Preferences to change the start colour (as for Formula Groups)./As mentioned above, the Inter-Sheet functions are probably most helpful when used on one sheet at a time, particularly in conjunction with the report. You can then quickly see exactly which areas of the sheet draw on data from which other sheets, and which areas are used by other sheets in their turn. DependenciesA common reason for differences between two versions of a workbook is that rows may have been inserted or deleted in the later version. Rainbow Analyst will normally attempt to adjust for this by detecting how many rows have been inserted or deleted and inserting rows temporarily to bring the two workbooks into line with each other. It leaves the inserted rows in place while doing the comparison, and then automatically removes them at the end to restore both workbooks to their original state.As with all the other functions, the Undo Changes functions operate on all selected worksheets. Rainbow Analyst will alert you if it has no formatting information saved for some or all of the worksheets currently selected.iNumbers and formulas can give some idea of the structure of the worksheet, but generally it is better to use the Dependencies functions. It can be helpful to see Locked and Unlocked cells (by default all cells are usually locked) if you are following generally recommended practice and setting all input cells as unlocked (see other sections for more on this).You can use this feature if, for instance, you want to see which input cells contain formulas. Set the default for inputs to change the colour to yellow but leave the pattern unchanged, and set the default for formulas to change the pattern to cross-hatch but leave the colour unchanged. Run the Analyst twice, selecting Dependencies, Inputs and then Cell Types, Formulas, and then simply look for yellow cells with a cross-hatch pattern.iNormally the Analyst will look at all cells within the used range of a worksheet (i.e. the smallest range which covers all non-empty cells). However, if you have selected a range containing more than one cell, it will give you the option to analyse only the selected range. If you have selected one or more columns or rows, it will analyse the column(s) or row(s) to the extent that they fall within the used range of the worksheet (i.e. within a column, it will not attempt to analyse all 65,536 rows!). This can save a great deal of processing time in a large worksheet, if you do not need to analyse every cell.If some formatting information has already been saved, this will be overwritten when you save again; the Analyst will ask you to confirm before overwriting existing saved information._The Analyst will identify formulas which belong to the same group on a row even if they are not in adjacent cells. So for example in a spreadsheet covering three years, where each year has 12 monthly columns followed by an annual summary column, the Analyst will highlight all the monthly columns on each row in one colour and all the annual columns in another colour (provided of course that the formulas are consistent!). However, with formulas which are copied down columns (across multiple rows), it will use the same colour only if the formulas are in adjacent rows (i.e. in a single group of cells).WSometimes Excel will change two or three of the components of cell colouring when you intended to change only one, especially if you click on "No Colour". The Analyst will always advise you of the code numbers of the colours and patterns that Excel is about to change, so that you can either proceed with the changes or cancel your selection. Groups 10 Groups 11 Groups 12 Groups 13 Groups 14 Groups 15 Groups 16 Groups 17 Groups 18 Groups 19 Groups 20 Groups 21 Groups 22 Groups 23 Groups 24 Groups 01 Groups 02 Groups 03 Groups 04 Groups 05 Groups 06 Groups 07 Groups 08 Groups 09 Long Formulas Hardcoded NosHardcoded Flags You may well be able to spot some errors simply by looking at the All Dependencies colour coding. For instance, if you find some input cells sitting on a row without any label, this may well indicate a formula with an incorrect reference. (You can find the formula by using Excel's Auditing toolbar to trace dependents.) And if the Analyst shows you that some values which are supposed to be inputs are actually just labels (i.e. have no dependents), this clearly indicates a part of the spreadsheet which is not working.Rainbow menu itemsRainbow Analyst is installed simply by copying the Rainbow add-in (.xla) file to your Excel Add-Ins directory. You can find this from within Excel by clicking on Tools, Add-Ins, and then clicking on the Browse button, which will open a browse window in the Add-Ins directory. Click on the down arrow beside the directory name to see the full directory path. After you have copied the Rainbow file to the Add-Ins directory, you can load it by clicking on Tools, Add-Ins and then clicking on the check box labelled Rainbow Analyst. You can remove the Analyst at any time simply by deleting the Rainbow add-in file from your Add-Ins directory. User codeTAs well as applying the colours and/or patterns to specific cell types, Rainbow Analyst will use those labelled Groups 01 to Groups 24 to distinguish di< fferent formula groups, inter-sheet dependencies and groups of different cells. In this way it can indicate up to 24 different groups, which is generally more than you are likely to need.All non-empty cells in a spreadsheet can be placed in one of four categories according to whether they have any precedents (cells on which they depend for their calculations) and/or dependents (cells which depend on them):This set of functions lets you highlight any one of the four dependency categories listed above. This can be useful if, for instance, you want to highlight the input cells in a different colour so that users can see at a glance which cells they can change.HThe Cell Types functions let you highlight the following types of cells:y" Row differences cells, containing a formula which is not copied from the formula in the preceding cell (on the left).=" Cells which contain an input number (i.e. not a formula).9" Cells containing a formula which calculates a number." Cells which are locked." Cells which are unlocked.Rainbow Analyst User Guide     =" Inputs are cells which have dependents but no precedents.A" Workings are cells which have both precedents and dependents.>" Outputs are cells which have precedents but no dependents.L" Labels are non-empty cells which have neither precedents nor dependents.Rainbow Analyst Default Colours     ExpiryWkBookUsedRngpatternCelltypeColour /colour?Setpattern? Set patternInputsWorkingsOutputsLabelsNumbersFormulasLockedUnlocked$Setting default colours and patternsYou can use the box below to select the default colours and patterns that you want Rainbow Analyst to apply to various different types of cells.The first step is to indicate the colour and/or pattern that you require in column C, by selecting Format and Cells from the menu or by pressing Ctrl+1, and then choosing the colour and/or pattern that you require from the dialog box.You can then tell Rainbow Analyst whether to apply the colour and/or the pattern and/or the colour of the pattern from column C when it formats the relevant cell type, by typing the number 1 (=Yes) or 0 (=No) in columns D to F. (Do not type in "Yes" or "No", as this will not work!)Row Differences Cell Errorsd" Cells which contain an error value, i.e. #DIV/0!, #N/A, #NAME?, #NULL!, #NUM!, #REF! or #VALUE!.Mike Shallcross has asserted the moral right to be regarded as the author of Rainbow Analyst, and he holds the copyright in the program code. He can be contacted by email at mike@themodelanswer.comNote that although Mike has exercised due care and diligence in developing and testing this software, he cannot guarantee its performance, and he cannot be held responsible for any loss or damage, however caused, in connection with the use of this software.The Error Types functions let you highlight certain types of cells which do not necessarily represent errors, but which may indicate problems that need further investigation:URow Differences can be a very useful indicator of inconsistencies in the calculations, though you may find it more helpful to use Formula Groups to check the different formulas in the spreadsheet. It is normally recommended as best practice to use only one formula in each row, or at most a different formula in the first calculated column.T" Hard-coded number cells, where an input number has been combined with a formula.AFormulas containing a hard-coded 0 or 1 are very common, and will not be highlighted at all. On the other hand formulas containing a hard-coded value of 10 or above, or a decimal value, will be highlighted in the colour selected for Hardcoded Nos; these are likely to represent more significant items of hard-coded data.Where the Analyst finds differences, it will report the formulas in each cell as they appear after any adjustments that it has already made. Clearly this can mean that the formulas may refer to different rows from those which they referenced before the adjustments were made. However, the Analyst always shows the original address (before adjustments) of each cell in the columns headed "Cell 1" and "Cell 2".]Conversely the Analyst may sometimes detect an insertion or deletion where in fact there is some other reason for a difference between cells. You can stop this from happening simply by entering an identical value (e.g. 1) in both workbooks in column A on the row where the Analyst found a difference which it attributed to an insertion or deletion.Hard-coded number cells do not include cells containing a formula such as "=365/4", which may be regarded as bad practice but is not dangerous. The Analyst will only highlight cells which combine a hard-coded number with a reference to another cell, e.g. "=C63/4". The Analyst will highlight this cell in the colour selected for Hardcoded Flags, since it contains just a single hard-coded digit in the range 2 to 9.When you first start to look at a spreadsheet developed by someone else, you will probably want to begin by understanding the overall structure and logical flow. To help with this you can use the Inter-Sheet Precedents and Dependents functions. If you run these on each sheet individually, you can see at a glance what other sheets contribute to this one, and how the results of this sheet drive calculations elsewhere.Most of the ReFormat functions work differently from those in the preceding sections; they allow you to apply certain formatting operations to all cells with the same colour and/or pattern as the cell which is active when you click on the Rainbow menu. Consequently you need to make sure you have selected an appropriate cell (i.e. one of the type that you wish to change) before you click on Rainbow. You can then change the cell colour, font colour or locked status of all cells that match the one you have selected.iUnlike the preceding ReFormat functions, the Clear Borders function applies to all cells in the currently selected range or sheet(s), allowing you to remove cell borders. This may sometimes be useful if there are too many different cell formats in a workbook, as this can cause Excel to prevent the Analyst from applying any further colour formatting to cells.Very occasionally the Analyst will halt while formatting a worksheet, and report error number 1004. This can happen if the number of different formats in the workbook has reached the maximum allowed by Microsoft Excel. You can confirm this by attempting to apply a cell format manually (click on Format, Cells); Excel will report "Too many different cell formats". In this situation you may be able to use ReFormat Clear Borders to remove some formatting.qCertain of the Rainbow menu items may have an icon alongside them. This indicates that your Preferences include optional additional reporting. In the case of the Formula Groups and Inter-Sheet Precedents and Dependents functions, the page icon indicates that the Analyst will generate a single-sheet report as well as highlighting the relevant cells. In the case of the Compare Formulas and Compare Values functions, the grid icon indicates that the Analyst will colour-code the relevant cells as well as generating a report. These icons will disappear if you turn off the relevant reporting options in your Preferences.1When you are< happy with your selected colours and/or patterns, click on Rainbow and Default Colours, Update Colours to accept your selections. Or if you decide not to change the current defaults, you can close this sheet just like any normal spreadsheet by clicking on File, Close or by pressing Ctrl+F4._After you have made the changes you want in the Default Colours worksheet, use the Update Colours function to update the Analyst with your new set of default colours and/or patterns. The Analyst will ask if you wish to save the new defaults to disk; if you choose not to, they will apply only until you close the Analyst or exit from Microsoft Excel.If you want to save a particular set of default colours as standard, so that you can go back to them at any time after you have made (and saved) changes, all you need do is click on Default Colours, View Colours, and then save the Default Colours worksheet (the filename and folder can be anything you choose). To go back to the saved colours, simply open the saved worksheet and click on Default Colours, Update Colours.pIn a workbook containing more than one worksheet, the Rainbow menu functions will operate on the worksheets that you have currently selected (except for the Special Reports, which always cover the whole workbook). If you wish to analyse the whole workbook, simply select all sheets before running Rainbow Analyst. In most cases the sheets must be unprotected; the Analyst will tell you if it finds any protected sheets. If you need to stop the Analyst in the middle of running a function for any reason, simply press Esc or Ctrl+Break; the Analyst will stop and let you know which cell it reached in running the analysis.Nearly all the Rainbow menu items use a "two clicks" approach; after you click on the menu item itself, there is a small message box either confirming your selection or asking you to make one further choice. Simply click on the default button or press Return to launch your selected function. The only exceptions to this principle are ReFormat Cell Colours or Font Colours (which require a more complicated selection), and View Colours and User Guide (which simply display the relevant information sheet).FNormally the Analyst first uses the colour / pattern labelled Groups 01, then Groups 02, Groups 03 and so on, but you can set your Preferences to start with a different colour. Whichever colour / pattern you start with, it will use all the colours / patterns between Groups 01 and Groups 24 if necessary in order to highlight each separate formula group. This does not mean that it can handle only 24 different formula groups! It uses the minimum number of colours needed to distinguish contiguous groups, and it is unlikely that you will need more than the available 24 colours.eIf the Analyst does run out of colours on a particular row, it will continue to use different colours to indicate different contiguous formulas, but each colour may now represent more than one different formula within the row. If this happens, the Analyst will alert you and let you know which is the first cell on each row where it has run out of colours.The All Dependencies function uses your selected default colours to analyse all non-empty cells into these four categories. In addition, it gives you the option to highlight any row differences (again in your selected default colour). The result is in effect a map of the logical characteristics of the spreadsheet, which can show at a glance whether it is generally well constructed and consistent, or whether it contains significant row differences and other inconsistencies which need further investigation.DBecause this feature calls on Excel to check the dependents and precedents of every cell, it runs significantly more slowly than, for example, the Formula Groups feature. If you need to check a large workbook, you may decide to select all sheets and then set the Analyst running while you continue with other work. Alternatively you may sometimes be able to save time by checking only a few columns or rows. Also, if the workbook was saved in an earlier version of Excel, the Analyst will run faster if you re-save the workbook in the file type of your current version of ExcelYou may want to select View, Zoom and e.g. 50%, to get a quick high-level view of the spreadsheet. Generally a well-constructed spreadsheet will have few if any row differences, and the dependency types also should be consistent across rows. Areas of the spreadsheet which are labelled as being Inputs or Assumptions should obviously contain mainly input cells, and there should be no unused "inputs", which the Analyst will detect as labels in cells which are intended to contain input data.Similarly there should be no input cells without a descriptive label (except sometimes within a range, e.g. with SUM() or LOOKUP()), and there should be no used or referenced cells lying in odd places or outside the main area of the spreadsheet. However, note that an incorrect reference in a formula could result in input cells in any part of the spreadsheet (e.g. row 65536, or column IV). If these invalid inputs were outside the used range of the spreadsheet (the range covering all non-empty cells), they would not be detected by the Analyst (though you could of course extend the used range by e.g. entering a value in cell IV65536).The report has two additional columns showing Found Dependents and Traced Precedents (or Found Precedents and Traced Dependents as appropriate) for each sheet. If you select all sheets and run the reports for Precedents and Dependents, you will notice that the respective values (e.g. Found Dependents and Traced Dependents) are significantly different in the two reports. This is because e.g. a cell which has a number of precedents will be Found as a Dependent only once but will be Traced several times.<Once you have highlighted the cells, you can also use ReFormat to set them as locked or unlocked. If you set all input cells to be unlocked, they can then still be changed after you have protected the worksheet (using (Un)Protect in Rainbow Analyst, or Tools, Protection from the standard Excel worksheet menu bar).]" Cells which contain a long formula (one with more than a specified number of characters). This feature can often reduce the number of reported differences by an order of magnitude. However, the Analyst will not always guess correctly where to insert rows, and so you can set your Preferences to disable this feature if you wish. By clicking on the Advanced button in the Preferences form you can also control the parameters that the Analyst uses to decide where to insert rows (see Preferences below for details), and you can also tell it not to remove the automatically inserted rows after doing the comparison.The final menu item displays copyright and licensing information, and allows you to enter the registration code it this is currently an unlicensed copy. The licence requires that you agree to use the registration code only to license one copy of Rainbow Analyst.KEach of the three Special Reports functions produces a single-worksheet report listing all occurrences of a certain type of object in the current workbook. The first function helps you find the exact location in your workbook of any any external links to other Excel files (shown under the Edit, Links menu option). It searches for references to the external Excel files in all worksheets and also in any defined names, and then it generates a report listing all the references it has found. (Any worksheet-specific names will be shown preceded by the name of the relevant worksheet.)RThe final Special Reports function lists all the defined names in your workbook. Worksheet-specific names (e.g. Print_Area) which are valid only in a particular worksheet are shown with the relevant worksheet name in the Sheet column of the report, otherwise this column is left blank for names which are valid across the whole workbook.The Analyst only saves one set of formatting information. Consequently you may well< decide to save the formatting information for a spreadsheet in its original form, before you first start to make changes using the Analyst. You will probably not wish to save formatting information again before making further changes, since you will then be able to restore only the formatting as it was when you last saved it, rather than the original formatting, The (Un)Protect functions allow you to protect and unprotect all or selected worksheets in the current workbook, either with or without a password. Rainbow Analyst also protects and unprotects the workbook structure at the same time.The two Default Colours functions enable you to view and change the default colours and/or patterns and/or pattern colours for all the various dependencies and cell types, including the 24 used for formula groups (and inter-sheet links and difference groups). Detailed instructions on how to do this are provided in the Default Colours worksheet, which is displayed when you click on the View Colours function.Excel stores colour information as index numbers to the currently selected palette of colours, and consequently a cell may sometimes change colour when copied from one workbook to another one which has a different colour palette. The Analyst displays the default colours using the palette of the current workbook, and so you may find that the colours appear different depending on which workbook you have open when you view them.Each of these criteria can have a value between 1 and 100. You can also tell the Analyst whether to delete rows it has automatically inserted at the end of the comparison. To restore the original values of all the Row Insertion settings, click on Reset. Click on OK to return to the Preferences dialogue box, where you will need to click on OK again if you wish to save your Row Insertion settings to disk as your new defaults.:You can use this feature in conjunction with those in the preceding sections. For instance, you can click on Dependencies and colour all input cells yellow, and then click on ReFormat to set all yellow cells as unlocked. You can now use (Un)Protect to protect the worksheet, and your input area is ready for use!When using the Cell Colour function, you may select to change only one or two of the three components (colour, pattern and pattern colour) of the cell's colouring. In this case the Analyst will ask if you wish to change all cells which match these components of the selected cell (rather than matching the selected cell exactly). You can use this feature to remove (for example) a cross-hatch pattern from all cells, whatever their colour, or to change the colour of all yellow cells without altering their patterns. (Un)ProtectDefault Colours User GuidejAlthough you can select a colour, a pattern (which may be "no pattern") and a pattern colour for 37 different categories of cells, you can tell the Analyst to set only one or two of these three components for each cell type. In fact the standard defaults tell the Analyst to set only the colours of cells and to leave the patterns and pattern colours unchanged. PreferenceslThis function displays the Preferences dialogue box, so that you can customise the Analyst to reflect your own preferences. When you have set your preferences, you can click on OK to save your preferences to disk as your new defaults. Alternatively you can click on Apply to use your new preferences only until you close the Analyst or exit from Microsoft Excel.The User Guide function simply displays this User Guide as an Excel spreadsheet. You can then print, save or close it just like any normal spreadsheet. About RainbowThis brief User Guide offers some tips on how to use Rainbow Analyst, explains what each of the Rainbow menu items does, and summarises installation and licensing arrangements. You can print the User Guide just like any normal spreadsheet.The four tabs in the Preferences dialogue box indicate the four sets of functions that you can customise. The first two of these, Formula Groups and Inter-Sheet, are very similar; they enable you to select which of the 24 group colours you want the Analyst to use first, and whether you want the Analyst to produce a separate report. The third tab, Long Formulas, simply lets you specify the number of characters which defines a long formula for the Error Types set of functions.The fourth tab, Compare Cells, applies to the Compare Formulas and Compare Values sets of functions. On this tab you can select whether you want the Analyst to highlight all differing cells in colour, and if so which of the 24 group colours you want to use first, and you can turn automatic row insertion on or off. Under Row Insertion there is also an Advanced button which you can click to display the Row Insertion dialogue box.LThe Row Insertion dialogue box lets you change some more technical aspects of the Analyst's row insertion mechanism. You can change the criteria that the Analyst uses to decide whether a difference is likely to be due to inserted rows, and the criteria that it then uses to decide whether it has found the appropriate matching row:" Dependencies, Error Types and Cell Types are "spotlight" tools which will highlight various specific types of cells (e.g. hard-coded numbers) that you may want to check;" Save Format, Undo Changes, ReFormat and (Un)Protect are utility functions to undo formatting changes, colour-code or (un)lock specified cells, and (un)protect sheets;" Default Colours, Preferences and User Guide are control functions; the first two allow you to customise the Analyst to reflect your own preferences." Columns to check controls how many cells to the right the Analyst checks when deciding whether there is a difference due to row insertion and whether a new row matches the original row." Minimum cells to find is the minimum number of non-empty cells that the Analyst requires in order to consider that there may be a difference due to row insertion." % Maximum identical is the highest percentage of matching cells that the Analyst will accept before deciding that a difference is not due to row insertion." % Minimum identical is the lowest percentage of matching cells that the Analyst will accept when deciding that it has found the matching row in the other worksheet." Rows to check is the maximum number of rows that the Analyst will look at when checking for row insertion, i.e. the maximum row insertion interval. Control sheet User detailsColour differences Insert rows Delete rowsPreferences sheet Start colourGenerate reportCompare SheetsFormula Groups Inter-Sheet Characters Row InsertionColumns to checkMinimum cells to find% Maximum identical Rows to check% Minimum identical5Sometimes the Analyst will be unable to detec<t insertions or deletions, even though they may be obvious to you. In this case, you may wish to help the Analyst by setting up marker cells which will tell it where the corresponding rows are located. In order to do this, you need to know that what the Analyst is looking for is a good (> 80%) match for the block of 15 cells to the right of the first column where there is a difference. It will search forward by up to 30 rows in each workbook looking for a matching block which will indicate the corresponding row.Compare FormulasThis last option may be useful it there are row insertions or deletions in several sheets which depend on each other, in which case you may need to run the comparison, leave the adjustments in place, and then run it again. Generally however, where there are insertions or deletions in one sheet (e.g. Inputs) on which other sheets depend, all you need do is make sure this is the active (current) sheet when you run the comparison, in order to ensure that the adjustments are made in this sheet before the dependent sheets are compared.The All Values comparison may be particularly useful where known changes have been made in a worksheet. You can then use this function to confirm that the changes have had the expected effect on calculated results and have not produced any unwanted side-effects.Special ReportsThe second Special Reports function produces a report listing all comments (cell notes) in your workbook, together with the author's name and the cell address and value. Save Format Undo ChangesBefore you change the formatting of a spreadsheet with the functions described in the sections above, you can use the Save Format function to save formatting information for the currently selected sheets, so that you can later undo the changes made by the Analyst. When you select Undo Changes, Rainbow Analyst will restore the relevant formatting (e.g. cell colours) back to the way it was the last time you used Save Format.The Undo Changes functions allow you to restore aspects of the format that you have changed using the functions described in the sections above. You can choose to undo changes to cell colours or patterns or both, or font colours, or cell locking.The Analyst will restore the last set of formatting information that you saved using Save Format. This means that if you save formatting information before you use e.g. the All Dependencies function, Rainbow Analyst will be able to undo any formatting changes made by this function. However, any saved formatting information is effectively lost when you close Microsoft Excel or Rainbow Analyst.The Rainbow Analyst is an Excel 2000 add-in; it will be listed under Tools, Add-Ins, and it will run only when you have selected it by checking the appropriate box. It will then be installed automatically when you start Microsoft Excel, and it will add a Rainbow menu to the end of the main worksheet menu bar and load a small Rainbow toolbar with four buttons (Formula Groups, All Dependencies, Save Format and Undo Changes). Error TypesLong formula cells are simply cells with a formula which contains more than a specified number of characters. The default is 128 characters, but you can specify any value from 9 to 999 characters in your Preferences. Cell TypesReFormatCompare Values" Compare Groups, Compare Formulas, Compare Values and Special Reports all generate single-sheet workbook reports, listing differences, links, comments or names;Compare GroupsmThe comparison functions in Rainbow Analyst (Compare Groups, Compare Formulas and Compare Values) can work in two different ways, depending on how many workbooks you have open. If you have just one workbook open, they will compare all or selected sheets with the active sheet. If you have two workbooks open, they will compare all or selected sheets in the active workbook with the corresponding sheets in the other workbook. They generate a report in the form of a single-sheet workbook listing all the differences they have found, and you can also set your Preferences to highlight all the differing cells in colour.lThe Compare Groups set of functions provides the most sophisticated, and generally the most useful, type of comparison. Rather than listing every single different cell, these functions group together all the differences which result from copying the cells in both worksheets (rather like the Formula Groups function). This means that the differences report is much smaller, and lets you see immediately how many real changes have been made. And if you set your Preferences to highlight differing cells, the Analyst will use different colours to highlight the different groups (again like the Formula Groups function).#The first two functions in this set ignore changes in constants (simple numbers and text) and only report differences where one or both cells contain a formula. The last two functions report all differences in cell contents. The two "... All Sheets" functions let you compare all sheets in the workbook(s), not just the currently selected sheets. If you are comparing two workbooks, these functions will report any worksheets in either of the workbooks which do not have a corresponding worksheet (one with the same name) in the other workbook.gThis set of functions performs the usual basic type of comparison between cell contents, listing each individual different cell rather than grouping them together. Apart from this, they are identical to the Compare Groups functions, allowing you to compare either formulas only, or all cell contents, either in the currently selected sheets or in all sheets.nThe Compare Values set of functions is similar to the Compare Formulas functions, except that it compares (calculated) cell values rather than (input) cell contents (of course these are identical for constants, i.e. simple numbers and text). It allows you to compare either constants only or all values. The Constants Only comparison can be a useful approximation to comparing inputs in a well-structured model, but it is important to appreciate that there may be constants which are not inputs (simply labels or memo cells), and inputs or hard-coded numbers (e.g. =365/4 or =B7*1.175) which are formulas, not constants.Installation and licensingYou can access all the features of the Analyst by clicking on the Rainbow drop-down menu which is added to the end of the standard worksheet menu bar when the Analyst is loaded. In addition there is a small toolbar with buttons for four of the Analyst's most commonly-used features; Formula Groups, All Dependencies, Save Format and Undo Changes. The Rainbow menu has five sections with different types of analysis functions:" Formula Groups, All Dependencies and Inter-Sheet are powerful "floodlight" utilities which will enable you carry out an in-depth analysis of a spreadsheet quickly and efficiently; IntroductionFor professional use with versions of Excel up to Excel 2003, we recommend Rainbow Analyst Professional version 5.1, and for use with Excel 2007 we recommend Rainbow Analyst Professional version 6.0.Rainbow Analyst Personal is a quality assurance tool, intended to help you in developing and checking your own Excel models. It is intended for personal use with versions of Excel from Excel 2000 to Excel 2003.WRainbow Analyst Personal is made freely available under the GNU General Public Licence. a^ %)+*(*/}4 8U8.8~;t 9B?@ !) #)g %)k ') ))f +)l - /) 1) 3)m 5)n 7) 9 ;)2 =); >)< ?)= @)>(dTBDFHJ,LNPR,TVX,Z\]^_ B)o D)p F)q H)r J L) N)s P) R T)3 V)t X Z)\ \)5 ])^ ^)u _)Y&B@acegi,kmnoprt,vxz|~ a)] c)b e)_ g) i k)4 m)6 n)7 o)8 p)9 r) t v) x) z) |) ~)v )(dT,,,, )` ) )a  )  ) )  )x ) )y  ) )z )$ ,,,,,  ) ) )  )d ) ) ) )e  ){  )| )i )}$ ,,,, ) ) )j  ) ) ) ) ) ) ) ) ) )~  )  )w(dTh  )/ ) )Z )[P>@7 Sheet1h3J/C:\My Documents\Rainbow\Web Page\rainbow32.htmlRainbow031MGS_7219 ɀ 8>  dMbP?_*+%MXhp deskjet 990c series߀ 4 dں ں@RLdͫLPT1:" d??U} *} I*} $ *8h@@ @  @  @   ? S NTOOOONOOOO NUOOOONOOOO NV OOOO NOOOO N1 OOOO NOOOO Nh OOOO D F H H J E  C  G  I !G+,,,- +KM#?#$ +L."?"% +M/"?"% +N0"?"% +W1"?"% ++E"?"% +,5"?"% +*;"?"% +X2"?"% +O3"?"% +P4"?"% +Q5"?"% +R6"?"% +! 7 "?"%<     FF4444444444444!"#$%&'()*+,-./01234567 !+"!8!"?"% "+#"E""?"% #+$#5#"?"% $+%$9$"?"% %+&%0%"?"% &+'&:&"?"% '+(';'"?"% (+)(<("?"% )+).)"?"% *+*/*"?"% +++0+"?"% ,+,1,"?"% -+-2-"?"% .+.3."?"% /+/4/"?"% 0+0=0"?"% 1+161"?"% 2+2>2"?"% 3+3?3"?"% 4+4@4"?"% 5+5A5"?"% 6+6B6"?"% 7C 7D7&?&'2x4444444444444444444444>@J      7 Sheet2 ɀ +"d  dMbP?_*+%MXhp deskjet 990c series݀ 4 dں ں@RLdͫ" d??U} H} H} $ H+   G I H0 H@J I H~ K? H L I H~ K? HL I* H~ K`@ I HL H~ K? HH$,!#$%'(* !I #H~ #K.@ $H~ $K@ %H~ %K4@ 'H~ 'K>@ (H~ (KT@ *H*H@x>@7 Sheet3 ɀ R.> Cancelnt{uTahomant(Resetant{uTahomant Mv Mv$#Frame1nt$#Frame2nt$4OKButton? ( 8CancelButton1? ( 8ResetButtonn ?   Microsoft Forms 2.0 FormEmbedded Object9qN^n!%~*/38<&AE6JNFSWV\`feivnrwx  dMbP?_*+%MXhp deskjet 990c series߀ 4 dں ں@RLdͫLPT1:" d??U}       F A B B B B B B B B B B B B B B B B B B B B B B B B B B B B BBX !"#$%&'()*+,-./0123456789:;<=>? B !B "B #B $B %B &B 'B (B )B *B +B ,B -B .B /B 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B :B ;B <B =B >B ?BD@l@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ @B AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB [B \B ]B ^B _BD@l`abcdefghijklmnopqrstuvwxyz{|}~ `B aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB {B |B }B ~B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l      B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l !"#$%&'()*+,-./0123456789:;<=>? B !B "B #B $B %B &B 'B (B )B *B +B ,B -B .B /B 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B :B ;B <B =B >B ?BD@l@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ @B AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB [B \B ]B ^B _BD@l`abcdefghijklmnopqrstuvwxyz{|}~ `B aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB {B |B }B ~B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l      B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l !"#$%&'()*+,-./0123456789:;<=>? B !B "B #B $B %B &B 'B (B )B *B +B ,B -B .B /B 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B :B ;B <B =B >B ?BD@l@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ @B AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB [B \B ]B ^B _BD@l`abcdefghijklmnopqrstuvwxyz{|}~ `B aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB {B |B }B ~B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l      B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l !"#$%&'()*+,-./0123456789:;<=>? B !B "B #B $B %B &B 'B (B )B *B +B ,B -B .B /B 0B 1B 2B 3B 4B 5B 6B 7B 8B 9B :B ;B <B =B >B ?BD@l@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ @B AB BB CB DB EB FB GB HB IB JB KB LB MB NB OB PB QB RB SB TB UB VB WB XB YB ZB [B \B ]B ^B _BD@l`abcdefghijklmnopqrstuvwxyz{|}~ `B aB bB cB dB eB fB gB hB iB jB kB lB mB nB oB pB qB rB sB tB uB vB wB xB yB zB {B |B }B ~B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B B BD@l B B B B B B Bx>@7 Sheet4 ɀ y  dMbP?_*+%"??U} $ H>@7 Sheet5 VBAo0Lv MvThisWorkbook #*__SRP_eJ__SRP_f RPSLSS6" <<<N0{00020819-0000-0000-C000-000000000046} @`@|k `|ki Z%@ %8 %  H@@L$*\Rffff*0U4cd9be26$*\Rffff*0e4cd9c1324 " "  ( 8Aoh@A oPHAttribute VB_Name = "ThisWorkbook" Bas0{00020P819-0C$0046} |GlobalSpacFalse dCreatablPredeclaIdTru BExposeTemplateDerivBustomizD2 P Sub _Open() Call SetCommand@s End  BeforeClX(Cancel As Bo olean*Res+rU a4 a) ` ` IW<   $ <   $ 44PrU @$`(A` #nDrp#<'LG6& FJ(\IlEdbE6xJ(Sheet1$U__SRP_14h__SRP_15lBRoutines01\IlEdbE6'LG6&ME(SLSS6"N0{00020820-0000-0000-C000-000000000046}(%H@h %" %Xp@@0L$*\Rffff*0d4cd9c1324xAttribute VB_Name = "She@et1" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2rU p IQ[q[4[9[`rU @nrU $`(`$*\Rffff*0e4cd9c132*\R3*#52*\R3*#92*\R1*#19f*\R1*#19e*\R1*#a0*\R1*#1ef*\R0*#2*\R1*#4e*\R0*#1d*\R0*#1e$*\Rffff*0g4cd9c132$*\Rffff*0f4cd9c132*\R1*#55*\R0*#14*\R0*#1*\R1*#ce*\R0*#15*\R0*#f*\R3*#51*\R3*#51*\R3*#34*\R3*#50*\R3*#4f*\R3*#30*\R3*#4e*\R3*#4d*\R3*#8c*\R1*#b3*\R1*#c4*\R1*#229*\R1*#b8*\R1*#cd$*\Rffff*0U4cd9be26*\R0*#13*\R0*#19*\R1*#171*\R1*#b*\R1*#174*\R0*#f*\R1*#c4*\R1*#b3*\R1*#cd*\R1*#b8*\R1*#ce*\R0*#195W  B LH  4 0 4@x >8@HPX`hpx 2 " (08@H  2,Q`0F " Э "  22(  (.^   0(Q82`  ",Oi03`lf n`` Mv MvfoeghCompObjp8P %|!P@@0B705 pL)6 <T\ x/   j    < X t 0 <   ME 8:(Lx |> * " L3*LPLLLLLLLL"LLLLLLL<<<<<<<<<<<<<<<<* @.P @0 @4  @8, @< 0( @% %]T%`ZxHDp!@ @HH@J!L @N!l @R0@T! @X" @\@^8" @b`" @f  @h" @l""!@T%%$T% `$k5`rx `tp vlP% {hp%`~d  `%`^or+`/hk i (`pdl`ltm8`@h`d`X``X`P`L`h0H X`h2k`zro  `X4Lo1 `5@k8 `7kK X`P9@kY  `:@kl  `<@k  `p=@k  X `>@k   `0@@k   `A@k   `BDk  X `8DDk   `EDk $ `FDk  (0 `H@k`*zs 0p `XI@k4 2 `JDkG 6 ``LDkZ :H ``Mkk`<xSy J `Ohk  N `Pxk T `XQk`<x  `0Sk@ X os@ H ow@%D @ 4 @%$   `@V k i* `bz4`dtrc`fr un`h8 lof`jhs`Zd`lb `` t`]pk8]]i `zSy`th.`r y`Xpt`n(`pl ll`j:P`h`f0 P p  v8`pakCC`z`x `t 0`hdkVV\p  c. <WiT5\hP x p xSy%  t0leMicr`rs`p .d`n>S{`h`d`b`\`Z  T(wn`P`L Hx%`D P@%`<` 8: `4%`80`. h(P%`$`8"`8h`ro`ce` X We  @``okpbbib inop  0hP  ys p<t `z39`Rx$2`fv `p x`rkib X tro @dl(dx`  8e  fpro,-39X`z`x`v `Zp`hl`j`h`xdSy8 X   `yk @@id  `bz`x`t !`{k!LL xm.gresx`v`pt@p p,-%`rn h%`f `P%`^`t\ Y`XDY "`Pk"RRO`xl,`vv D`xp`l`zj `|h `~f ``q`\`tXm.`xTes x#`ȅk#`x`t $`Ȉ k$`x (%` k%`xfo &`k&`xll '`k' `x (``k(##4 `x&X !C(@,(@2x@6( @> !4` @@H!8 @Bh< @FD@L\ @P|@VX @Z @` @d @jH ! @n"#"@p$#@ H!0 X  " 8(`"0 X( @ Xxp!H "Hh X 0!X8"x!X  "x 0 p P! " !Xx 8` x%x / &/8&@% @% @% @ @ \@& @ tlH&`of`& &%indp&`ps&H&. &`ro&p&=&&`OhT%&&D&&`T%'&P(''`T%H'&VpX'@'`T%x'('\'p'`T%'X'b''`T%''l''`T%('r((`T%8('xH(0(`T%h((~x(`(`T%(H(((`T`T%(x( ((` T%(()(`T%()(h8) )`T%X))h)P)`T%)8)))`T%)h))|)`T%)))x)`T%*)(*t*`T%H*)X*p@*`T%x*(**lp*`T%*X**h*`T%***d*`T%+*+`+`T%8+*H+\0+`T%h++x+X`+`T%+H++T+` T%+x+(+P+`llT%++,L+`T%(,+&8,H ,` T%X,,1h,DP,`T%,8,7,@,`T%,h,=,<,`meT%,,Cft,8,`T%-,J(-4-`T%H-,TX-0@-`T%x-(-[-,p-`T%-X-a-(-`ysT%--hem-$-`T%.-n. .`.T%8.-yH.0.`T%h..0x.`.`T%.H...`T%.x...`T%../ .`T%(/.8/ /`T%X//h/P/`(T%/8//`T%h/@ p(p0010h000`x0h01 X@818 @P1( @1$ (10@  (11@h1 Y[D@1 @1 @1 1(@ @1 @ @2 Sy@ 2 .C@82 @P2x @h @@ 34383P33h3 @3t @p @x3n 3P3@l/ 3x3@3\ @X .x3@3H @8 @(4( @@4 @ (5X54(5"i@(5x ro@@5t (@p5p @5` @\ @L p666X66H642.@z @6t @d @6<l8 @` @6P @@ 7888977H46@7x @t @p @08` @x8P @H8@ @`80 ys@8 @8 @8 @8 @8 @9 @ 9 @ @ @ ::8::P:H642.@z @h:t @d 9<l8;@` @:P @@@ ;;;h;;H642.@z @;t @d P;<l8 @` @;P @@ S<@=<<=H642.@z @(=t @d <<l8h@` @X=P @@ @>>X>(>p>H642.@z @>t @d ><l8>@` @>P @@ ?@???H642.@z @?t ys@d Top?<8`@` @@P @@ A`AA@0AH642.@z A@HAt @d 8A@<8pA@` hA@xAP @@ A`BBxBHBBH642.@z @Bt @d 0B<8B@` @BP @@ CDCCH642.@Cx @h C<>@d @ DT @D DPEE EH642.@8Ex @h (ED<`E@d XE@hET @D E8FFPFhFH"642.@Fx @h  F<G@d @FT @D GGGGH&642.@Gx @h hG< @d @GT @D  HHHIH.642.@(It @d @@IT H<l8 @P X@@ (JJ@JJXJH.642.@z @pJt @d I<l8@` @JP @@ pKKKKH4642.@Kx @h XK<l8 @d @KT p@D H8642.@Mx @h 8OO 3L0M0LML<\^@d I@HMT @D 0 HNNxN0NONHLH>.@@`Nt @Nd @` @N\ @NL @HO< @N, @( @ N864<@ O @O O O @`O @xO @  OUXPpP@PHL648@x @h @Q(QPP8@x  RpR@R(RRQR6@8@XRt @r 4@R` @\ @RL @< @S, @R( RR @$O  SR Q@ TIR 0STS@Th @`TX @0TH @HT8 @xT( @T ( @T >@T @T @T @U @PU @ U @8U @hU @Ux @Uh @UX @UH @V8 @U( @U @(V @ @ h  P YVXWpWW@WZZY0ZYpHt>.@(W\ @Z @[T @P @W@ @W0 @W T`@W @W I@`X @X @X @0X @HX @xX @X -K@X @Xp @X` H@YP X@ Y@ Vvxz|~&@8Y0 @PY @hY @Y @[ @ @P[  ZY-0@Y @ XJPT`dh@XZ 0HZZr S@Z`pZ0Zr@ ZXZ{@`ZZ{YLRVbfj@Xp [Z` %@[Z Z\^2(@0@[ 8[` %h[ [ @x[ [P[@  8x[Z>nlp@ @[ @\x @\h @0\X @H\H @`\8 @x\( @\ @\ @\ @\ (@\ @] @ ] (@8] @P] @h] *@]x @ؕh Ж8^X^^P_p^^^Xa_>.<>@@^` @^ @X K@_H @h_D @@ @_> (_^@_< __ @^n0H@_, @( @`` @_ __'@` `_'@` (`_,@8` P``3@ x`8`3@` `8`8_C@` @` @` @a I@(a @@a @ @p 8_x2@*DFB cxbbbPd(b`c@b@0>n<2@Pbr hb(b X@cp IPcPb @bl @b\ @X @cH @b8 @ c( {R@$ @8c @xc KdPbNbHDFB@c @c @c I@ @ .2.@Pe @he cJ@f @e P@f 0V@e H@f @e Xfe,@l IHfe,@f @ Tpf0f.P@g`WfXf.@ g @hp Jhge7@xgl Pe,ln8p@gh nQ@kd @8gT T@hhD P@h@O hPgd>L@g< J@g8 qS@g4 @g0 S@, T@h( lI0hgm@`l$ @hhmKhhof:JPT`dh@h ~J@h hhz@(k O /XHkhz@k @i ]J@i /I@0i )O@Hi @`i H@xi oW@i J@i| Q@il @i\ T@iL @j< 4L@ j, N@8j I@Pj X@hj U@j @j K@j }I@j V@j +Q@j @ @n| PXkx@k` I%pk(kI@kt kXkT@kpO kkHmlk`R%kkLlk@h kR(lh@8lf PllL@8od xl8l T@l` Hl`l@l\ Jllll@lX =Sml3M@T Hml mlUhm8lMPh(0H<xmP`m`U%mHmQ@mL 1LmxmI@mHO mmDm`X%mmHnm oJPoPgK@0n4 Q@Hn$ @`n 2J@xn @n EL@n @n @n @n @ I0m2*FBD@ uP@ 8o3I(p8qhppprq(qpPqr0p@&8lnp@@pn IXppK@l L@q@p@ph M@pX @T I@pD V@p4 @xq$ U@q @q @ Phq(qL@`qPq@ @ q@p bO@rO ,Orq$X@q @r @(r @@r @Xr @ Wp@`(JPT`r`H%rrD4QqLprdhHDFB@ I H@Pus(tsu wtXttHxpt@&>.j@s` I@sP R@huL 9K@t< S@t, @@t @(u V@t  RtXt +K@u tt R@u 2Q@v Sut"@v`H@ut"H@xv @`x Put+@u XM@v Hsl2,n8lp@w @ @u MvuJI@w ,RvuJ@0v @Hv R@`v /R@ wS@v @x R@p vvOH@l`IvvOUK8wuUT@Hwh X@xwdO w w\bJ@` Ku(0H<2*w\w`%wxwjaQXw`H%ww~(Mx w@xV (xw5I@T 8xxxW`wFBDtR@xxD @x4 H@x$ @x DJ@ @x @ *O`zyyy{8z{Pz8lnp@``@{p @z` J@ zP 4O@ {@ @0 @P{,O p{8z@xz( @z$ O@z  @z RX@z J@z @{ H@  SW@8{ P@ h{`uS%{P{*yJdPhT(@ 8z3W@ 5J{HDFBMX8`p }|||8}}lH8np@|H jK@~D \L@ }4 @}$ PT@8} @P} P@h} S@} @} 6K@} -J@~ L@ @~O +N~}I@~ qK@ ~ L@8~ yN@P~ @h~ hJ@ M|:`JdP@@ [J@~t >K@0d @` ~+O@\O Tp+@HL @`< 3L@x, L@ @ M@ M@ BK@ S@ wR@ Q@8 S@P wT@h @| @l I@\ H@ȀL S@< O@, @ @( @X @ X@ O/@ FI2@ЁO #N2`%Ё5H~hT(DFB(=N}?@ OLH`0H؃0h 8lnp@`@PO Q@P@ @`< @x8 H@4 @0 @, M@( L@p$ (V@ @  @8 X@ M@ @ h@ MЄ@ 4(`%H8PJdPhT(bL@`%(?fRjVHD@ G@ HXFB2UP`HP(@8lnp`J@p @Ȇ` @\ NM@L @< I@, T@( @@O H`(fJ@h BI@ GI@  @ @ȇ T@ @ @ @ |X@ X`%@ hdPhT(HD(@ pFBHP8lnp`J@htO @d W@؉` S@\ @X R@ T V@8P J@L K@H D`I%h @Ȋ4 hdPhT(HD@$ @  JFB،؍؋8lnp`Jd@tO H؋nR@ d @0` M@H\ @`X S@xT @P @L ^K@H T@D I@4 L@$ .I@P @8 Q@h @ @ P`%ȍ PPhT(HDF؋U@ HIBKJhؐ؎8lnp`Jd@htO @d ~R@` @0\ W@HX @`T IQ@xP M@L @H hT@D @؏4 {S@$ P@8 J@  T@P I@ 3I@ M`%h PhT(HDF@ BLKILxБ0H8lnp`Jd@tO dI@d @` @\ @0X K@HT #K@`P @L @H @8 *K@( $ؒ`% IPhT(HDF@ @ BSL X@08lnp`Jd@0tO WP@d RR@p` @\ @X @T ZI@ДP W@L @H @x8 @( 4T$H`pT%0 pWPhT(HDF@ N@ M`BS@X @H @D @B x [H<Dx[`FB8*@0 @ (iЕ))%0 "v#L*\R1*#175i02b n``P MvP MvfoacdCompObjp  0P ( 0 P X px  $0P      (0PH x,O  0P   0 8 HP0PX       0P  @0PP   0P    8 0P@  p  x    0P      (  0 0PP  0P      0P  H  P p  x  0P      0P  H  P h  p    0P  0P  (  0 H  P h 0Pp      0P   8 @ X`0Ph     2(Q0@  "`0P  ,O   (00P8 h p   0P     8@0PH x"     0P   8 @ X`  $h0P 0P   8 @ X`0Ph     0P " ( P X p x0P       "0P8 h0P     0P @" H p x 0P       0P( X `     $0P 0P( X `x 0P   0P H Ph p  0P    (  00PP 0P   0P H Pp x0P   0P 8 @X ` x0P     0P  P0Ph    0P  8 @X0P`    0P  ( 0H0PP      0P ( 0P@  p  x    0P   ! !0!0P8! h! p!! ! !!0P! ! !" "0"  $8"0P`" " "0P" " "# # 0#8#0P@# p# x## ##  2#0P# ($ 0$H$ P$h$  p$0P$ $ $$ $%  "%0P0% `% h%% %%  *%*%%%  & & && B  &(&0&8&@&H&P&X&`&h& p&&0&&&&&' ?'8'P'h' '.A'2\'.A'@n (`(h( "p(x(  "(*( /( 2( (5(5)"5()5P)5p))&D)E) ) ")* "** N*28*P* "X*`*h* * %* %* '* *8*6*2* ++ " + 0+ 8+@+ "H+ P+9X+fp+ ,0,8, 0@, %P, +`, "p,, ",,, , %, %, ', ,8-6-2(- @-H- "P- `- h-p- "x--- - %- %- '- -8-6.2. 0.8. "@. P. X.`. "h.p.x. . %. %. '. .8.6.2/ /(/ "0/ @/ H/P/ "X/`/h/ / %/ %/ '/ /8/6/2/ 00 " 0 00 80@0 "H0P0X0 p0 %0 %0 '0 0806020 11 "1 1(1 "0181@1 X1 %h1 %x1 '1 1816121 11 "1 22 "2 2(2 @2 %P2 %`2 'p2 2826222 22 "2 22 "333(3 %03 %@3 'P3 `38p36323 33 "33 "3334 %4 %4 '(4 848H46X42p4 44 "44 "4444 %4 %4 '5 58 56052H5 `5h5 "p55 "5555 %5 %5 '5 585662 6 86@6 "H6X6 "`6h6 p6x636 6 %6 %6 '6 686672 7 87@7 "H7 X7 `7h7 "p7x77 7 %7 %7 '7 7876728 (808 "88 H8 P8X8 "`8h8p88 %8 %8 '8 8886828 99 " 9 09 89@9 "H9P9X9p9 %x9 %9 '9 9896929 9: ":: " :(: 0:8: "P:"&`: ':1:=:1:g: :F;B0;x;0; %; %; '; "; ;; ";;;< %< %(< '8< "H< X<`< "h< p< << "<<  +< "< "<&<1< $=1 = 8=FP=:bp==0= %= %= "= >> "PX 0P..` " >> >(>0>8>@>H>P>  %X>h> "p>  "> > >>> @>(?@@@ @8@  (P@x@.@@ R@PAhAA  ,A A AAA ARABBBB BBB BCC0C8CXC`CCC CC C CCC DD D @DPDXD pDDD D DDD DDD E E(E @EPEXE xEEE EEE EEVEEHFPF  $XFF Fd1FGB6GG G\BH`HB6H8I PIi`IIJ$S(J PJ XJ `J hJ,^pJ,^J,^J K $SK8K@KHK  PK ,^XK ,^K ,^KKK K L "L '(L 8L @L HL PL XL `L WhL L L L L L LL2L "LL L L M M iM M M "M 'MNNNN N(NW0NHNPNXN`NhNpN xN 2N "N N  N  N  NNN  (N OO(O48O HO *XOO (OO8ZO GOP P P P (P 8P HP XP hPxP PP PP PP PP PP PP PP PPQQ0Q HQ PQ8`Q6pQ2Q QQ "Q<#QRlRXR`R hR !xR !R !R #RR R R "R0 RSSS S S "S  TTT "T8TVV " V V(V0V8V@VHVPVXV`V hV )pV 'V "V =V2JV .VW 4(W`WpWxWWW W  WW W W$XWX$NX0X8X PX`XhX-pX BXXX X X X X XX YYY"Y(YPYXY`Y hY pY xYY Y Y YY  Y  YY YY ZfZ ZZZZ[ [68[ "P[ #`[p[ *x[ '[[[ ![ ![ ![ #[[[ "[\\\ \  \@\H\P\h\?x\ \\ \*E\ \";]0] 8]@] X]  `]p] x]6]2] ]zU] @^P^X^ `^^^^^?^ ^^ ^*E_ 0_";H_p_ x__ _  __ _6_2_ _|U` ```` !` !` !` #``` "`aa a0a8aHaXahapaxaaaaaaaaaaaaaaaaabbbb b(b0b8b@b HbPb*JXb*Kb b 0bbc  (c $S8c`cpcc  c :fc :fc :fd $Xd d d d Ed 1d -d  e ; e 9@e 1`e 1e 1e 1e 1e 4f 4 f /@f 0Xf 2<pf 1f 1f 1f 1g 1(g 1Hg 1hg 8g  ggg g gg g8g g8h!(hHh Ph`hxh*xhh h h h h Vgi  Xi `i $hi ii  i i@i i 6j@8j Xjhj0spjjj4jHj"0kHk Pk `kpkxkkkkkk kk:k0l8l @l Pl`l2xxll 8ll m  m !0m  Hmhm"pm m m  m mmm4mn (n$ 8n$!Pn$ hn n "n n$ n$ n$n nn n o2uo@Hooo o oo 0Mo o o p p(p@p Hp >Xpppppp ppp HqPqhqqqq qqq  q q q q q$7r0r-Hrhrpr xrrrrr r r r r r s s (s 8s 0w@sps xs s s s s 8s s t t!(t @t`t$ht t tttt t *btu u (u!@u Xuxu"u u uuuuu  u u vFv*~Xv&nv<vv2v0w8w@w PwXw`whw pw( wx& x &x8x6x2y; y/0y&Hy(Xy hypy xy y y y yyy &y$yy y yz zz z z 6l(z `zhzpz*:xz "z z z {{{ !{ !{ !{ #{ {({| | } } } } }(} " 0}8}H}X}h}x}}}}}} }$} }} <~ P~ `~ p~ ~ ~~ ~ $S~~~   :f :fX :f     Xg x   # ,^Ѐ    (8 $H ,^h   $ ,^؁ $,^( Xh px! *0*1*0 @ Hh4p4 ȃ؃  !( !8 !H #X4hx " ȄЄ (08@ H P`xȅ*JЅ*K 0 0@p   $S؆   :f :fP :f $Ї   E0 1P -h gx   ; 9Ȉ 1 1 1( 1H 4h 4 4 /ȉ 0 BQ 1@ 1` 1 2 1 2؊ 8 " ( G0 GP <p @ȋ*{*,8*0h*, ȌЌ    :>,Xh x "S  ȍ $؍ , "  0@ H*0X*1*0 "" @H X` p # , " ȏ ؏ *0*10*0` ""Ȑ 4 (& 0 &X8x62< ؑ 8 8  X;`/p&( *:Ȓ "  0 ؓ ! ! ! #(48HP " X`hp x <:ؔ=3  (0@ P Vy`ȕ ؕ  # ,^H PX `hp !  $,^   ( 0 @ P!h  4ȗؗ4 ! ! !  #04@PX "`hpx  Ș И: N ș Й  XgX ` p   ? К?ؚ ,D  8 H 0vX "a*    "a(P</h  !М  (  08@HP &X* ! ! ! #ȝ؝ " (08@  H0P   Zg ( 0 #@,^`       ?П    0HPX`h p  ȠР ؠ     ( 8 H!` x     С!    (84@PX` !h !x ! # "Ȣ Т*Kآ   0 h@" ȣ أ!  ( 0@HPX !` !p ! # "  ȤФ  TgX` p !  Х إ ! ! !( #8HP "X` h px  Zg.i @ P!h   ȧЧ !ا ! ! # "(0 8 @HX h XgxШ.hب  !0 H h p ! ! ! #Щ "    0 Tg@  !ت   (08@ !H !X !h #x "  ȫ ث Vg@H X h!   Ьج ! ! ! # 08 @ د;The Rainbow Analyst quality assurance add-in for Excel 2000EVersion 3.41 copyright Mike Shallcross, last modified 20 January 2006+Display licence information first time onlyted 29Ak-Groups 01 row number in Default Colours sheet]$!0 -Variables passed back up to calling procedure] X ] ]  ] (] P]  ] x]  ] ] ]  ]  !] H!] h] p!] 8Colour and pattern variables used by multiple procedures ] ] !] ] !] ] 0] !] X] "] ] ] 8"] ] `"] ]  ] "+Other variables used by multiple procedures] H] "] "]] ]8]X]x]] ]0 Z Rainbow AnalystA@ono"Add top-level Rainbow menu command l !!%.&Rainbow (*Copy first icon from Rainbow Icons toolbar Rainbow Icons$%B@ Rainbow Icons$(tAdd Formula Groups menu itemtio FGrpReport %%:!nd '~dh '~kX l !!%.z z&Formula Groups...9 ~9 AllGroups9C@qAdd All Dependencies menu item l !!%.z zi14j n`` Mv Mvf1oikCompObjp&All Dependencies...9li 9 AllGroups9tq(Add Inter-Sheet menu item l !!%.v &Inter-Sheet v( IShtReport %%:! '~d '~kp l v!!%.z z&Precedents...9r ~9InSheet9C@q l v!!%.z z&Dependents...9 ~9InSheet9C@qAdd Dependencies menu item l !!%.v &Dependencies v(yst v(cyc l v!!%.z z &Inputs...9(@ 9 CellDepends989q  l v!!%.z z &Workings...9 9 CellDepends9q  l v!!%.z z &Outputs...9m. 9 CellDepends9isq  l v!!%.z z &Labels...9pro 9 CellDepends92q Add Error Types menu item l !!%.v &Error Types v( l v!!%.z z&Row Differences...9em 9 ErrorTypes9ameq8  l v!!%.z z&Hardcoded Nos...9 9 ErrorTypes9q  l v!!%.z z&Long Formulas...9 9 ErrorTypes9AM.q8  l v!!%.z z&Cell Errors...9 9 ErrorTypes9d]pGuq Add Cell Types menu item l !!%.v &Cell Types v( l v!!%.z z &Numbers...9te 9 CellTypes9ginq l v!!%.z z &Formulas...909 9 CellTypes9qh l v!!%.z z &Locked...9 9 CellTypes99q l v!!%.z z &Unlocked...9so 9 CellTypes9(@qp+Copy second icon from Rainbow Icons toolbar Rainbow Icons$%B@ Rainbow Icons$B@Add Compare Groups menu item l !!%.vCompare Gr&oups v(un v(de CompColour %%:!( '~d( '~k l v!!%.z z&Formulas Only...9 ~9 CompareGroups9C@q l v!!%.z zF&ormulas, All Sheets...9 ~9 CompareGroups9C@q l v!!%.z zFormulas And &Constants...9@ ~9 CompareGroups99C@qp l v!!%.z zF &And C, All Sheets...9 ~9 CompareGroups9mC@qAdd Compare Formulas menu itemft l !!%.vCompare For&mulas v( ˦ l v!!%.z z&Formulas Only...9 ~9 CompareForms9C@q l v!!%.z zF&ormulas, All Sheets...9 ~9 CompareForms9WC@q` l v!!%.z zFormulas And &Constants...9 ~9 CompareForms99C@q l v!!%.z zF &And C, All Sheets...9 ~9 CompareForms9raC@q@Add Compare Values menu itemWin l !!%.vCompare &Values v( l v!!%.z z&Constants Only...9 ~9 CompareVals9C@q@ l v!!%.z zC&onstants, All Sheets...9cro ~9 CompareVals9(C@q l v!!%.z z&All Values...9 ~9 CompareVals99C@q( l v!!%.z z&Values, All Sheets...9e ~9 CompareVals9teC@qAdd Special Reports menu itemft l !!%.vSpecia&l Reports v( ˦ l v!!%.z z &Links...9 9 FindLinks9q l v!!%.z z &Comments...9De 9 ListComments9q8 l v!!%.z z &Names...98d 9 ListNames9qAdd Save Format menu item l !!%.z z&Save Format...9 9 SaveChanges9$9q Add Undo Changes menu item l !!%.v &Undo Changes v(5d l v!!%.z zCell &Colours...9 9 UndoChanges9q8 l v!!%.z zCell &Patterns...9AM. 9 UndoChanges9nUq l v!!%.z z&Both...9 9 UndoChanges9.qH l v!!%.z z&Font Colours...9 9 UndoChanges99q l v!!%.z z &Locking...9Mi 9 UndoChanges9owqPAdd ReFormat menu item38 l !!%.v &ReFormat v( l v!!%.z z&Cell Colour...9 9 CellActions99qh l v!!%.z z&Font Colour...9 9 CellActions9.dq l v!!%.z z&Lock...9 9 CellActions99qx l v!!%.z z &Unlock...9$ 9 CellActions9upq l v!!%.z zClear &Borders...9d]p 9 CellActions99qxAdd (Un)Protect menu item l !!%.v (Un)&Protect v( l v!!%.z z &Protect...9ry 9 SetProtect9Wq l v!!%.z zP&rotect All Sheets...9 9 SetProtect9 q l v!!%.z z &Unprotect...9d` 9 SetProtect9<S9q l v!!%.z zU&nprotect All Sheets...9 9 SetProtect9,-3qAdd Default Colours menu items l !!%.vDefaul&t Colours v( v( l v!!%.z z &View Colours9n 9 ViewDefaults99q l v!!%.z z&Update Colours...9 L$ 9 NewDefaults9q+Add Preferences menu item and load userform l !!%.z zPrefere&nces...9 9PreferencesForm9qAdd User Guide menu itemn l !!%.z z User &Guide9 9 ViewGuide9qHAdd About Rainbow menu item l !!%.z zA&bout Rainbow9 9 CopyRegister9meq#Remove old saved format information@pr !! -3AkP..v.zo0](]@]X]p]]]]] $' G 'j(ABCDEFGHIJKLMNOPQRSTUVWXYZ _-0123456789.''''  tw ?'M   $' G)'j    '8    '  $0.00000000000000E+000$' $-  $' $0.00000000000000E+000$' - $-  $' 'i ]@ (ys. !! d  !!  %B@h Guide %(Colours %( Preferences %(Control %(.Temp %(anCk B3:B999 %%:B@d %!!B@.d B@893 (FoH X8 Rainbow !%B@Rainbow$(o A HG|j A[ ( 6 (6 4 (.S 2sw .$B@$<$B@Hoso 2 %:B@Hws'2k0  (ll,.l.8o 'H !!  *There is no Excel workbook currently open. $ $*Please open a workbook file and try again. Rainbow AnalystA@rd'HM| k !'4do  (pr !'6dl (932o A HG|jA ( 6 ( 4 ( 2 .$B@$<$B@Hc 2 %:B@HS'2k  (swo.l.8oXA HG|jsAops (l,- 6 (d]p 4 (2 2 .$B@$<$B@H 2 %:B@H'2k (.l.8oA HG|jst(AM.P (rdL 6 ( 4 (so 2in .$B@$<$B@Hll, 2 %:B@HF'2k  (.l.8oA HG|j2A ( 6 (] 4 ( 2< .$B@$<$B@Hord 2 %:B@H'2k0 (Win.l.8oA HG|jF A@ ( 6 ( 4 ( 2 .$B@$<$B@H 2 %:B@Hd]'2k@ (..8o XA HG|jMiAft (dow 6 (ro 4 (ll 25 .$B@$<$B@H 2 %:B@H'2kX (.8o8A HG|jA ( 6 (em 4 (em 2er .$B@$<$B@Hros 2 %:B@How'2kp (dll.8oPA HG|jA ( 6 ( 4 ( 2 .$B@$<$B@H 2 %:B@H'2k (SAMox A HG|jtA (( 6 (ys 4 (38 2GuF .$B@$<$B@H 2 %:B@H'2k (oX A HG|jA" ( 6 (Sy 4 (AM 2tP .$B@$<$B@HWi 2 %:B@Hro'2k (38o A HG|jA& ( 6 ( 4 ( 2 .$B@$<$B@He 2 %:B@H'2k (e?o? ] A HG|jft %,'*s( *A.psy (,-3 6 (Y 4 ( 2 .$B@$<$B@H 2 %:B@H'2k? (.l.8o>0 A HG|jteA.twa (gis 6 (wn 4 (ic 2 .$B@$<$B@Hys. 2 %:B@HO'2k> (.l.8o=p A HG|jA4 ( 6 ( 4 ( 2 .$B@$<$B@Hoft 2 %:B@Hrt'2k0= (Mi.l.8o= A HG|jllA8 (YM 6 ( 4 ( 2 .$B@$<$B@H 2 %:B@H'2kH< (o0< ]0 A HG|jof (.SuLoading defaults sheet (Mic >!'. %B@@ @!B!D'< %B@FO .$!H >(HDefault Colours ( 8 %!  8!G 8!B!D %: 8!BB@Fj: < %:B@Hys (oft 6 (up 4 (l (ros.8oh:H A HG|jllAL (YM 6 ( 4 ( (.8o9 PA@ PB@Ro9 ] !'6 ( (Loading User Guide (r %B@eU @!D'<ic %B@Fin User Guide ( 8 %!  8!G 8!D %: 8B@Fj8 < %:B@H ( n< 6 ( (4S.8o@8 ]8 ]P ]h ] ] ] ] ] p (nr@1 (Make initial validity checksste'HAt HG|j H Grj * >!!!$Found only one worksheet in workbook $ .. $ $(To use the Inter-Sheet functions, please $%open a workbook with multiple sheets. Rainbow AnalystA@e|/k/Av HG|jws H Grjs."Check if selected range > one cell'l x! 'l BDo you wish to limit this function to the currently selected range $instead of the whole worksheet? zRainbow Analyst$'m  |G|jcro  ~G'ljok(.&Set up description for selected optionK'h'j * %, 'b b &Do you wish to analyse row differences $as well as cell dependencies? zRainbow Analyst$'us  |G|joft  G 'bjk, b KTunique formula'd KTused or referenced cell'd KTrow difference'dKTinter-sheet precedent'dKTinter-sheet dependent'd KTinput'd & 'he KTintermediate calculation'd & 'hi!KTcalculated output'd6p & 'h"KTlabel or memo cell'd & 'h)KTrow difference'd & 'h*KThardcoded number'd & 'h & 'j+KT long formula'dre & 'hB,KT error value'dof & 'hd3KTnumeric constant'd & 'h4KTnumeric calculation'd & 'h6KT locked cell'd & 'h7KT unlocked cell'd & 'hyS) Invalid cell type b. Rainbow AnalystA@i|`)nX)Get new colour etc if requiredi'f b )Click OK to analyse unique formula groups $in the selected sheet(s)'Z FGrpReport %%:!G Z and to generate $a report of all unique formulas'Zjic  Z. Rainbow Analyst$'  |G|j *eClick OK to analyse ds $in the selected sheet(s)'Z IShtReport %%:!G Z and to generate $ a report of references by sheet.'Zj  Z. Rainbow Analyst$'  |G|j h e,Do you wish to use the default colour and/or $ pattern for  ds? zRainbow Analyst$'m  |G|jInt  ~G'fjo h %%!C5'J5'P5'Tq@% h %%! '` h %%! 'd h %%! 'hZ j m. j %%!st5'L5'R5'VqX$ j %%! 'bs j %%! 'f j %%! 'jk#k# f @B@H (d  @!5'X5'\5'^ J9 P9 T9  %!R'f5'J5'P5'T X9 \9 ^9q" 2 %:B@H55 (CP fG|j'`'d'h j .Now click OK to select a second set of colours $and/or patterns for  ds. Rainbow Analyst$'  |G|jMic @B@Ht (ows @!op5'X5'\5'^ L9 R9 V9  %!R'f5'L5'R5'V X9 \9 ^9q0! 2 %:B@H ( fG|j'b'f'jk k "Start loop through selected sheets'( @ 0t @$>'ns n$B@H lll, 2 %: !$.ld !.lk  lG 2 %:%.lj l! l!!  'p b KTA LTys bAtruLTQu bAull"LTro dAW)KTA*KTA+KTA,KTA3KTA4KTA6KTA7KTAn HGyj HG|j H Grjys` 2ur .$B@$<$B@Hbou 2 %:B@Hof'2k (@p (G found.'ZcGs found.'Zj (#,##0 $ d Z Rainbow AnalystA@|PrH H !'H !'Dʆ !'Fst !'Buck 8y.V H.B (Mic"& Error number H: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@k|k 8!D'* HDUser has pressed Ctrl+BreakdQu Completed formatting as far as $cell  * in sheet  n. Rainbow Analyst F BA@|k (  # + 1 5 Error number H while formatting $cell  * in sheet  n: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@L L|o ]X]p]]]]]]]@ !' >!'. !' !!' G 'cG >!!'jery'Dimension array of selected sheet namesf <H-Dimension array of sheet names to be analysed >h''' @  @ 'nd_  @  %!'nd @  >%!'nuckx n G'j n eakH'  !d $! nbE'yk  n @  +> 'd'    %! nSy'yPkH@k8 ual n @  +<zed  'tkd  'r  'lk   '09f 0 -None of the selected sheet(s) are worksheets. $ $3Please select one or more worksheets and try again. Rainbow AnalystA@'H|k 0@>   @<$< d$<$B@Hg (  (k8 x!D'2 @!D'*| !'H !'D !'F !'B|o]]] Check for hidden sheets'' @ 0KB @$>'n n$!0  - n' e -s , $ n'D   e , $ n'edQ 'dp ,  n'akP  'k80$<$B@Hows 2 %:B@Hs.  94Please unhide sheet  $and then try again. Rainbow AnalystA@'H|XkPCheck for protected sheets'' @ 0dQu @$>'nt n$!ze cr n' ess , $ n'   e , $ n' 'd0 ,  n'k  'k$<$B@H 2 %:B@Hst  ucPlease unprotect sheet  $and then try again. Rainbow AnalystA@-3'HL k| !'H !'D !'F !'B|o8]x]]] ]8]p]]]]8]P]h]]]]]]]0]H]`]]]]]]] ]8]X]p]]]]` ' FGrpStart %%:!' FGrpReport %%:!' @em)Initialise colour arrays and report sheet  &  ' t   's  %%!945 +5 +5 + q   %%!  +  %%!  +L˦  %%!  +irt  & G  'j( (@ Initialise report sheet3 %!!B@ %B@F >!' Unique formulas (A1 %:!"($3:3 %:!"(&A:A %:((Sys B:E %:((Mi-F:F %:((dow G:G %:((em.#,##0D:D %:(* .D:D %:(,Sys 2A:G %:(0edA:G %:(41:3 %:(4Unique formulas in .A1 %:(+'ٶSheetA3 %:(RefB3 %:(CellC3 %:(TotalD3 %:(LastE3 %:(FormulaF3 %:(CheckedG3 %:( .$B@',kk''' l!'>S  l!!  ' l!6'  l!8!  ' '  ( , ',Q n , $%%(lick 8 lc 8!6'  ws 8!'opFinding formula groups in n row   of  p ('  '  G'cG'j    +Dl  l!  $. Cond0Apply same colour to cells copied from row aboveW  $. cCe .dll'    $$:%:.<'    $  $$: !>  !6$  $  !6$'c '  bir  'i8 $'Jo $'Pn $'T@ $'`t $'d- $'h/ .'   $  $$:%@.Bx'  !6' !6$'  $  $%%!'nflk2Because merged cell returns difference with itself  $ ! `G J9j dG P9j( hG T9jq@   !6+  !6'\  +  'tkk   $  $$:  $ !s `G J9j dG P9j, hG T9jq    !6+  !6'  +  'kk .Co$   $%%(cro$  $!D  $%%(k kkk 8!>  8!6$ Find unused colour'   ' G'j'   7Ensure colour is different from other cells on same row     $ 'y~k~~k~   AEnsure colour is different from this and later cells in row above     $ 'y ~k~~k~ Gyj}     ' es , $'   e , $' 'd8} , 'k }  8!D'  '' k| $'J $'P $'T $'` $'d $'h .' 8 8  $$:%@.D8|'  8!6''k| 2Because merged cell returns difference with itself 8 $ 8! `G J9j dG P9j hG T9jqH{   8!6+  8!6' , +  'kzkz  8  $$:  $ ! `G J9j dG P9j hG T9jq0z   !6+  !6' , +  'kykyy ( '( ' (#,##0 $ , $%, 8!D , $%,  , $%,  $!D , $%,'' 8!F , $%,Hxx' , ',kXxkPxHxJ@x   &Please note that there were not enough $+colours available for full colour-coding in $the row(s) in sheet  n $starting at cell reference . Rainbow AnalystA@kw @ 0 H Loading report sheet ( .$B@$<$B@H 2 %:B@H $B@A1 %:B@H !L(NK !L(P'2k8v. ....|vv Continue if no differences found ! KT<uKTBuKTDuKTFormula too long , $%,HHun@uk8u ! 2 8User has pressed Ctrl+Break 8!D'* Completed formatting as far as $cell  * in sheet  n. Rainbow Analyst F BA@'HJtkt !'H !'D !'F !'B   &Please note that there were not enough $)default colours available to complete the $analysis in sheet  n cell(s) $ . Rainbow AnalystA@kr. ....|ror0]]]]8]p]]]]](q b G'RcG'Rj @  R 5Swap types (1) and (2) to simplify later calculations  & ' e & 'dq  &  'kp  %%!5 +5 +5 +qp  %%!  +  %%!  +  %%!  +oko' 8 l  8! 8!'Finding all dependencies in n row   of  p (k0o 8!>'do 8B@TXZ 8B@V \ @%D\ 8%D'dn'knkn 8B@^ 8!$`XZ 8B@V \ @%D\ 8%D  'kndmXZ 8B@V \ @%D\ 8%DXZ 8B@V \ @%D\ 8%D  'k@mk8mk0m  8!$` 8! $G $9j $G $9j $G $9jqhl RG ( '(jk@l n$B@b(l n$B@H R$'J$'P$'T$'`$'d$'hAkk|kk !'H !'D !'F !'B n$B@H|0ko(k@]]]]H]]]]]@]x]]]]]]] `j b dependents'Z precedents'hdj precedents'Z dependents'hki IShtStart %%:!' IShtReport %%:!' @)Initialise colour arrays and report sheet  &  '    '  %%!5 +5 +5 +qh  %%!  +  %%!  +  %%!  +  & G  'jg  Initialise report sheet %!!B@ %B@F >!' .$!H >(H Inter-Sheet (A1 %:!"($3:4 %:!"(&A:A %:((B:B %:((C:D %:((#,##0C:D %:(* jB:B %:(, lC:D %:(, 2A:D %:(0A:D %:(41:4 %:(4  Inter-sheet Z in  .A1 %:(SheetA4 %:(ColourB4 %:(FoundC3 %:( hC4 %:(TracedD3 %:( ZD4 %:( .$B@ List worksheets and colours' >!!fP >!!dp  >!!  ' G'j  ',  >%! , $%%( , $%%! $G $9j $G $9j $G $9jqb +dbkbkb' n$!n'Finding inter-sheet Z in  n row 'Z 8 l  8! 8!' Z  of  p (ka b 8B@^XZ 8B@V ! n !n' '  b  'ha 8! $G $9j $G $9j $G $9jq`  $f +f $d +dkh` ( '(kP` 8!>e 8B@TXZ 8B@V ! n !n' '  b  '_ 8! $G $9j $G $9j $G $9jq_  $f +f $d +dk^ ( '(k^k^ n$B@b^J^ @ 0 H Loading report sheet ( .$B@$<$B@H 2 %:B@H  >!!  ', $f , $%%( $d , $%%(P] $B@A1 %:B@H !L(NK !L(P'2k\|\\ ! 2 8User has pressed Ctrl+Break 8!D'* Completed formatting as far as $cell  * in sheet  n. Rainbow Analyst F BA@'HJ[k[ !'H !'D !'F !'B n$B@H|`[oX[x]]]0[5Swap types (1) and (2) to simplify later calculations %,'b %,e'bdZ %,'bkZ' 8 l  8! 8!' Finding ds in  n row   of  p (kY' 8!>'dY 8B@TXZ 8B@V \ @%D\ 8%D'dXY'kHYk@Y b  b   b 8!$` 8B@^XZ 8B@V \ @%D\ 8%D  'kXkX b  8! `G J9j dG P9j hG T9jqX ( '(kWkW n$B@bW n$B@H|WW !'H !'D !'F !'B n$B@H|XWoPW ]`]]]]]] ]8]X]p]V' l!6'  l!8!  '   (No row differences are possible, because $'the selected range has only one column. Rainbow AnalystA@'H|UkU 8 l  8! 8!'Finding row differences in n row   of  p (kPU 8!6'   'p  l!  $. dT  $. kTkT 8!> 8!6$ p 'p . 8 8  $$:%@.D T  8  $$: !>  $ p !6+kSSkS     $ 8$: !6$'t  !6  r  t  t r ! `G J9j dG P9j hG T9jqR ( '(kR t'rxRkpRhR|`RXR Continue if no differences found !GDj !'H !'D !'F !'B|QoQ]]]0]H]`]x]]]]]`Q(ABCDEFGHIJKLMNOPQRSTUVWXYZ$:'0123456789.'' 8 l  8! 8!'Finding hardcoded numbers in n row   of  p (kP'v'~ 8B@TXZ 8B@V \ @%D\ 8%D'z'|'x 8!F't  t  t $'  z  vGyj x G'~jd`O'vkPO'zk@O  e | xG'zj z x G'vjkNdN |'|kN 'xN z x G'~jkN v 8! `G J9j dG P9j hG T9jqN ( '( ~e 8! bG L9j fG R9j jG V9jqM ( '(kpM n$B@bXM|PMHM !'H !'D !'F !'B|MoL]H]`L LongChars %%:!'' 8 l  8! 8!' Finding -character formulas in  n row   of  p (kL 8!F  8! `G J9j dG P9j hG T9jqK ( '(khK`K|XKPK !'H !'D !'F !'B|KoKx]J' 8 l  8! 8!'Finding cell errors in n row   of  p (kPJ 8!$ 8! `G J9j dG P9j hG T9jqI ( '(kII|II !'H !'D !'F !'B|`IoXI]@I' 8 l  8! 8!'Finding numeric constants in n row   of  p (kH  8 !% 8!> 8! `G J9j dG P9j hG T9jqH ( '(kGG|GG !'H !'D !'F !'B|GoG(]hpG' 8 l  8! 8!'Finding numeric formulas in n row   of  p (kF  8 !% 8!> 8! `G J9j dG P9j hG T9jq@F ( '(k(F F|FF !'H !'D !'F !'B|EoE]E' 8 l  8! 8!'Finding locked cells in n row   of  p (kE 8! 8! `G J9j dG P9j hG T9jqD ( '(kDxD|pDhD !'H !'D !'F !'B| DoD] D' 8 l  8! 8!'Finding unlocked cells in n row   of  p (khC 8! 8! `G J9j dG P9j hG T9jqB ( '(kBB|BB !'H !'D !'F !'B|xBopBEnd of Routines01PBUserCode %%:!LicensedUserCode %%:( ( B@ (Display Rainbow toolbarRainbow$( Rainbow Icons$(   " ) Rainbow Analyst Personal 3.4.1 $ $&Copyright 2001-2010 Mike Shallcross. $ $7This software is free for personal, non-commercial use. $.For information about other uses, please visit $/www.themodelanswer.com or email Mike Shallcross $at mike@themodelanswer.com.'Z Ponal 3.4.1 $ $&Copyright 2001-2010 Mike Shallcross. $ $7This software is free for personal, non-commercial use. $.For information about other uses, please visit $:www.themodelanswer.com or send an email to Mike Shallcross $at mike@themodelanswer.com.'Zchr(13   " ) Rainbow Analyst Personal 3.4.1 $ $&Copyright 2001-2010 Mike Shallcross. $ $7This software is free for personal, non-commercial use. $.For information about other uses, please visit $/www.themodelanswer.com or email Mike Shallcross $at mike@themodelanswer.com.'Z(M & chr(13) & "at mike@themodelanswer.com) & xemodelanswer.com in order to find out" & chr(13) & "about obtaining a licence key.", Buttons:=vbInformation, Title:=msgTitlemike@t%,3;+Your copy of Rainbow Analyst is unlicensed. $ $3It is provided on a 30-day free trial basis, and is $available for use until  t dd mmmm yyyy$. $ $*Please send an email to Mike Shallcross at $,mike@themodelanswer.com in order to find out $about obtaining a licence key.  zA@J out xabout obtaining a licence key.  zA@  '/+Your copy of Rainbow Analyst is unlicensed. x x3It is provided on a 30-day free trial basis, and is xavailable for use until  t dd mmmm yyyy$. x $*Please send an email to Mike Shallcross at $,mike@themodelanswer.com in order to find out $about obtaining a licence key.  zA@H8!> 8! `G J9j dG P9j hG T9jqH ( '(kGG|GG !'H !'D !'F !'B|GoG(]hpG' 8 l  8! 8!'Finding numeric formulas in n row   of  p (kF  8 !% 8!> 8! `G J9j dG P9j hG T9jq@F ( '(k(F F|FF !'H !'D !'F !'B|EoE]E' 8 l  8! 8!'Finding locked cells in n row   of  p (kE 8! 8! `G J9j dG P9j hG T9jqD ( '(kDxD|pDhD !'H !'D !'F !'B| DoD] D' 8 l  8! 8!'Finding unlocked cells in n row   of  p (khC 8! 8! `G J9j dG P9j hG T9jqB ( '(kBB|BB !'H !'D !'F !'B|xBopBEnd of Routines01PBUserCode %%:!LicensedUserCode %%:( ( B@ (Display Rainbow toolbarRainbow$( Rainbow Icons$(`AAttribute VB_Name = "Routines01" 'The Rainbow Analyst quality assurance add-in for Exce@l 2000zVersion 3.41 copyright Mike Shallcross, laVmodified< JanuaryG6  OptGExp licitBase 1Compare Tex#Groups 01 rnu mber Default Colours sheePub/ nGgrp01R{s Long33F'Variables pXback up to cjiprocedure *lCount A( % Sng urrA mWkbook& sShs Intege&rge6oldCalcula7[#:nF@StatusBarABooleanFoneCellRangG?select%() -˂`%sumA4subErrCo8ntxWMDe scFile?@@B and@ttern$ vƄusAy mipsInewX2$M`@F@:Pa%?Atn GiGsetR(&&HOth?Gre'Gc!k,KlAlAl`R">!Sub S!'mm`Yo Dim keyCodbHDaƠKgpro PopupthisButto% Sty'csFop_ m rReplya"Fx'DispPlay eAinmfirtionly#If TWorE¯.D3).1("Use`de"@).Valu"]`elpyRegisc A 2 LicenaAp.$AlertsFalsEYav_yVTruEPPIf SFtPbba0hcAg!s(" itA3<3@= B!AnPrE-o Ft,!=I=!0!nt`Ns . ol , ID:=1D With DG1%J!...H>.Q HOn+c%AllP}0e Q<1 #S' DepenzdQi0-o3p 8 ?d$ ϯ0Ĥo belr-w q?%ndF?%ddF!u+%?8 T ?9<9ISht?9rlxl55?9 ?9+sDBKt?=j8=WorkingU=G==Out=on==?\s=Label_=C?\2\bError _ t_.A_FH_Td55Row Difference66"16?7_d"&Hardcoded No___doO:s1 (O:_0gILong FormulaoYh__xps B <8_x S2J"!____1/Jz JA** /J "q"&Numbe~r6a9th /*/*/* 4_P??Z9.9t nOO򺟏 qolOOOLockedOB//}r B?+liQ1: Unl ? ߣ9J/'Copy s(eco[iP from Rain*bIsolbars("z")(2"&Formulas Only..."Æ OnAc"Qares PasteFacEK# BF&B, All ÑDpDÿ?-Ɔ@ &stantsDDBii i`F &!%CHsk_jH }'@ dr f8menu itemoHto_M2`PopupːʛA%&Ća_:smpA1t>h4 D J)om_??"?!"ߣ r.ona ?"d"ops4/+`s >bQbsQ /?te.QQs#P#4Qdԗ4 .S Q s Q %p&QOe3o&Q9i%Q& Q/@gq _ P gY ׀@貏reQobo@o@R26QU&onso_@W<-  !ϯ! /ol!!g!ѳ+==rm!PG?PPr7OOOׁ""".PASpecial ReportPPo%olPPS &)l Report s" Set thisControl = main4.CommandBar(s _px.Add(Typ@e:=msopButton, I D:=1)`Wi th F.Caption|"&Links...AbStylesoY0BOnAcaCFindFCE8nd }.x #xent _ ol<&View,on6s__ "_""Update"_4#New #~^Preference(^ ` load userform#&_`?eR`&?} ~& ss .;$XF$O BUP GuideWBOB_%U} r} U & 2sF69tAbout RpbowM#? 3#X A& = f#CopyRvpsterdRemove old saved q5at in)If TWor@kbook.Count > 5%e8QCaClpearS`I>fS;jp)No0angdASub FunӨHashCode(CString As )Dim adjFactorDoubllphaNumm charPosLo AcTemp/m h One#Twom 5eQFor v=Range("B3:B999").Co@nts!Used.EntireRow_KCYTruOo-@ ResAmmandsOn Err@upzCoB @Bars.A@veMenuSs("Rainbsub-= Exit <C–Cells(10INStaxtus4kr+)old1 cul~ `rF"f<> """Qs(m,W)M0arc(suct)).S {7.#U'=5%`'cre enUpdng#OASet curr Noth«one3IA(?U?0AiEf'.C< 1+MsgBox prompt:="Th is noHcel w"ently op@en." &Qr(13) _Ce& "Pse a' fi `p try ag;.", Buttons:=vb@Exclam"J, TitleDo Analyst(jccI:kT 2)'WxlManual g)$i- Inb\_EEC2Cn.) } y p.':IC CokC  sCCiveCFC &~SCak4CCCd_onDe`;n! *3B!}d3!!$Y, !  !! O!?!b!!!geld!!U!r!pdd'!Type㳫&s(4!!!/B/B!al/B /B/B/B/B1 V!!!!t`,C ! f B{B B5 =B Bҁ/c NW A r  B?BpBBB Sub CompareGroups()  Call CheckLoadedTIf subError = -1 Then Exit rCells(10Application.St@atusBaHF0alse= "Di splay )old0cul_+-rangeName

""a{Workbooks@(mainW).ActivatQSheets(selectp)).S'e.R<(?L=L"End If creenHUpdvngvTruOSet o ne Nothing $ҊForm?} Z }2?}?} V?}?}ctt?}}݊}V@ܿ>3>_}߃>_}_}_} {_}`_}a> Q_}S_}T}>FindLin߻߻l Do& P??$ɝ M?|? =#8?|?'ȷc:List@men::aIx?{b} <?{?{?{?{?{ox%7'<"<2{yϘoϘDoa??dy ?? :|al;?ok:A ??r1? A`Yq>SaveChh____ћatF OOϵ:O::&OOϵ0w@7OOOr""S(O .:: UndoLDim cRef As IntegerS1Ր` u=6ler(1)`Restore!(t"Ox???Oؒ]]]]]]%""""2?IcurrBߠf Ϻ#~%Buttonoon{!) 3) Application.StatusBar = FalseDisplay old`CalculV -If rangeName <> "" ThenWorkbooks(mainW ).Activat'Sheets(s elect ))\.SN8e.R<(?L=L"End If creenUpdvngvTruOSet curr7 Nothi ng!oneCell 3Subl  ^ons(l CheckLoad ed(subEHrro-1 Exit (@FormatsC7 >tFub Prot?A `A$[)F( .ivA US|ViewDefaul@|Dim aeAddress As Str&58oi24I" d$ sa"7E.Thlisw2ͼ = .MergeArea.$ 0Copy Colorse)B"D7 urs$ Each żIn`Usedc M.Valu 3! _CU n(" (U)'NexOs$? )oC _d oCG7jyDFyN9N?96a wwl Re>O 58Қoo o?ooPreferencesujB R.Show QpQGuideUOQOQ $0 ?/ 7?2OSs ?r BPs(1PaPP" PkL. LLLJL.K5KgevKtJJJo7_#?4444Register/msgT ZRpbow Analyst Perso 3.@4.1" &0r0(13)c& "Qright 2001-2010 Mikeallcros|s.sPA. software is f f p , non-commercial usemJa*in@`P about ers, please visit"Chswww.themodelanswer. elFat *m@.D?MsgBox pro mpt:=, Butt:=vbI , Title:="SÈb(cRef 6As Integ@er) Dim cellT0ype pNamString>olourSe@lectedB@ooleanDdefaultRow2msgTextA vrangeuuserReply> JApplication.EnableCanKey = xlErrorHandlerOn  GoTo(Scre enUpd/ng'False'Make initial validity c heckssu"b7= 0Call CShe0ets(+If -1 TheXxit Sub > 03 "cRef/20 An@vctiveWorkbook.!.Count CMsgBox prom@pt:="F d oncone zws1@A"\ _& 'O iM}p > ;es= (`gvaoG> GTruhAB'{= L(L."Do you5sh to limbthis?ACcurrhentTs Binstea \fbL\wh`bDB?AYesNoA}a s( vbc~NoC85L?Set up descrip for %obf= + )A\e|gH12/cAC-Aale r`ndiffe?ces=as w= A"dencies==`=8+r= c&3Is9 Cas<1S"111R= "uniqlue PaKS2_Vs#red2Dt O "kUY2 eEir-b9iecepV 2 0deC3pu A2grp01!-l 143m ediatalcule?8d?3O6 9buts = D4 label  memo p*4 !a0ۏ9 b 4hardcod numberm*8G2h7/l6 _ S 6ifeAѨue  5X5OVeric ctan/r4 b5o/O5lockNd SARq!@hEf3InR4 t__}}_A_^#d3 S'bGRnew etcrequPiredCcK= 6 = 1 %0hC k OK}{i0Joup}y"inRvb(s) p T (3).R("FGrport").Valqs x & " P generp^ω a rep` of 19дlas" userReply = MsgBox(prompt:=msgText & ".", _xButtons:=vbOKCancel, Title:="Rainbow Analyst")~If wvb; Then Exit SuBb.Else.c@allRef20&L= "Click OK to ave "lTypeNHames"f& Chr(13)in the selected sheet(s)KThisWorkbook.Ss(3).Range("IS$htor~.Value_TrteedhgenerateA^a rep; offeres byc.CdefaultR> Mذ"Do you wishP u colourAX/orVpattern for?YesNoeCvbNo C:Sų= Fa@khWith Y2).Cells(g0, \In@!iorGnew"Cc*= .!rIndexP$)sDOtnG 1 End set&(qtr4)t L? w T, 5  6 =22 c2;h; <2!6<$'Bd<E")q==f>A**2, >D  f t?e  4@!If*i Cs~@gActive!>.Appuation.ScreenUpdngl"&Aold9#0@d&Q'?G H`fJ{.D/1`wU.A8Dialogs(xls)owU}U @4@ ~P HoqmpuL_hk%w],!%G%2rQ!bm++o2qr2AF K0h O\en ai}"Np&cȯc acoq (߯1and0 $s?Ŵ @OEGL!7Lp /Mp,,!oM3R/"[qggM{/N2;'C _;p ,?$= OOO# D $9 AOPDlx7ooMkQ OQOQ lication.ScreenUpdpng = False If colourSelected Then Exit SuBb hsetCh21ZTru Pa tterntnAEnd Ifp 'Start loop through s@sheets(cellCountQ0 For Num 1 To` numSc8urr ames()&r().rangeт%et $RU|nlleN`fsubX- H= > 0c Gob Handl\Next  <> ""̓Workbooks(mainWb).ƒatfġñ})o}-$'=)AppG`!o(msgT# @/" f`d." sCMsgBox prompt:=aI atBmB , "#,##0 ") ^&ƌ!p ,MButtons:=vbInform, TitleP:="R0bAnalyst""&H=:h&c!7*.3DescpripC!]FileTHelp-ContxAyA(P oneq?d7 <> 18+ /"('"1,"p p3pM "p& ":#e& Chr(13"g'/qy"C-k Q`'r furt her ig!."#x$Exclas$qvb3qC?D?'3'1a:=C, 4EGqYZA<3= !.Addres4d = 'r has;0ЮCtrl+Bre,akG% C=le8ta0far as ZA # #@è6?A AA!Qle2:[5?5`?5UpwhaDq9/;:<:/:/:29eaC/9/9bC88Xg!R L8eck$}P As BooleaBnDim 1FtQgercStr4old#es" total wk5On S/s☀al= _5egv5.Na me mainSheet = Active1h.NatotalSelecWindow. *edps.CounthIf a ll.False Then ws \_:E2 -Work book.v'Dimension array of sed sns4Re%(G))$g be analysed ,s+s+other0  Fd 1ForfNum ToÂzAcurr?>Fa DoS{ tѓ (6- I)ȯ 2EI@!"End IfP?b͆7@iLoop While '%K"tg!Lwk,= 1aL!obj}%M(C2 ! B 8TruEx8it -Nexa`) *uC`k- Hr)Ik@ `a vTL5 " O6K@xp8`"o<=!>%?@1 +OCCDłD̘DS;Lb`'+ ĽAa ȩ st 9numS &32& 0MsgBox prompt:="NoneGQ{q{(s)@}e ws." & Chr(13 )) & "PXlea0# Rr0 mor `|d @try ag.",_ Buttons:=vbExclamat, Title Rbow A "t"g7subErr{= --8Sub Preserve3J&䄝r*01) <>u D0))@Applic.ScreenUpdng #]oldranberDescripK Fy= HelpContxk a!a2" p/e@ckProtp(Cprev As Integ? 3EListStrinfgOn1 +GoЦ 'Ch fhiddp?#:7 #= $ArQU$.cg=)1-*6).VisibВ0.^Qss ,0B@= "& ZQ6AREθJsN& ",9O0- V!= 4 oVoC"t1QRUw9mmMs(MsD.RH(vH{P9+> oo$jun 4^;naŀs@?l  Buttons:=vbExclamation, Title:="Rainbow Analys0t"  subError = -1,Exit Sub"End If'Check fdprotected s heets prevCountRQ0&F@Num) To 0numSIcurr#.ame4s(9)LIf ().PQContents"True Then)RLisn" " & 6 (ElseI *1!*s*3& ",Chr(13))8- b4 EBQCKS VȣAFEo1! + Next$sel@a)).SA ctive.R@ange(rANG |> 0L]M sgBoxfompt@Pleaspe unӃҋ_' E:& ǃ"at Z try ag`}.", ߄߄ƄDžLoctal":.}berIDescrAripa!)File$Help{xqA?};GB   @mGr oups(Stc newCo@lours(@vo 24) As VarianFFPtnattern+ LongC$rptWkbBkStriset1BooI? @jDim colDiffcesA"b`'Array()_Cu*I@gEBF@dq `Indexend#ARas Jmp mTotal genReportAi!Lsq lasA8 `2n@Celbl.Ro_ oArO w[pK/Growsta~r atxhis  m~  ,xs4)6q ^xsS/On sGGo`7PeY&= ď=bisWorkbooDk.g3).( "FGrp!a=s fr/rvk + grp01- 22D3= W'ye= K  Withts(2$).&s($, (riodi5`)h.#r`PuT} QAdorc_ m?Akb߁r(T 8(?4( (!gx!??/?5?@1a_% !w, >6_%3w)-+ 23'en*+ 04P=r?`98q1s(!`UsedE.E ntireP9.D=tEwICopyk&Պ= s$4"UniqPvuo$QA1LFon t.Siz16C_"3:3EBxoldpolA :A`P7umnWlidPE J5olB<:Eo_ "F4:Fn4Ȯe("G:G").ColumnWidth = 10 ActiveSheet .RangD:DNumber@Formatn"@#,##0"$xHorizontalAlignmenCxlLeftBAVerti"c @Top$?Wr apTex;True1:3zFalsA1 ValueUniqfulas in " & mainWkbook^B'B RefC PCell D Tow E Laszt F @S G Checked Worbs(e$).Bat{currRowv4mEnd IfprevCour1xsl0ours&this.CendE + J &s@- start@#& &I # ReD im coaArray(1 Top 2, ) !Index@If genReporq Then i=~s B2%+Gg;rptmk<).h @\s().la:#@ Each one!e In0C! 3A'!0K!% >% AAppltion.StatusBar@"F(ing d group&f\ _ a a&r@,aaof"huse!RsxYdC b`$7L E @2 E JM6n`?1hTK Z , ) N .!!%=s\Set@ otherI= s(e+jC/j%o'Ay samet to c/pied@ from qa8bovlN/ ll' E, / U DiffceM errorJmp\u3,+V{, C eren (@"Co@s: l QvAA _* d ), DP.Hasm@rPю APj{> "\ 8,b5 K0Intersect,,!4!) Is N`IO rsS vA_ % /%Do Whil4x> 2Xyur-LoMYnewP  ?lx"PatntnP//se   ex VM`ST,@C#HC2_UCwCQ7V[Pi OJOP  Iz_ pu ~od\!a̰gO .3B , 4 595y'Beca merg|} retur0ns d`w wi@itselfm If Not (Intersect(thisCell, rowDiffc@es) IsNhing) ThenWith .ior37setColour = Truem .rIndexnew#%QPaton ) g'&(tn@ )_wr.8"kP,%End cArrayu O,fumn)0C Count@hgenReport>[ At2'Ensure is dЮerent from othe(r cs same1L=o y_B@Vs3uFalseIExit _U.13 0w@'O |a 2a5laPin abovA6/d Pprev,,ol+O   vo!&-N>D8@ xs = +O<@xs|= P2BQ!sѰC" "O.E2's" & !& ",ChPr(13 - "5 P 9  evCount = xs ElseT`lours|& ", "nd If.EoneCell.Add0ress8 +D 1&RowTru EnewCods(c Index) 1Patterntn 3PsetM? MA &YSet rowDiffceothero KerrorhJmpJ3KNR ange(, _ Ũs(thisy, end1H)).@#er ""+MsgBox prompt:="Plea!noteEats@ wA@0oPugh" *Cphr(1%@Ks available ! full -cod in& #ೡh(s) s}A5 1Astart 4f q' .' Buttons:=vbExclamation, Title RainbAnalyst$9"( Numpnum s Or subErp-AA_ZZZApplicB.Stat usBar"Loar3.m `JK).Ac`tivat( (гSelG4e.3rNameO6 "A1"yPage0up.PrintGridlin{ `Y#zEZoo7{5 rangeName = ""End If,Set otherCellEN0ing8this6next6rowDiffcesUcolExit Sub LocalE rror:'Continue if no d_erencfouDnd&If .@Number>1004 ThenSelect Case e0Jmp 1ResuCol@Copies2ѕRow34Workbooks(rptWkbk).Sheets(1).@s(curr@, 6)@"Formula too longDA6H7Write GLZ8 A@9G<>@ (oneIs D")f'Us@mhas pressed Ctrl+Break$c@Da.Add M sgBoxom@pt:="Clet@f@CatDg far" _E& Chr(13) & r" "@ in s^C@]Bb .",Buttons:=vbInC"ion, Title)Ra inbowLalystHelpFi sub@, ǀ:=xtoab-VD[Report?Cdefault bavailabl omp!J _ an:isXF AK(s) !`PMExclamaA2M#->ÒʟSLJ   AllDepend`Type As Integer) St` c nel9(1 To 5)AVariane'PtnOwPern Lset0 Boo`V GDim,Cst TotalaT@.AgOn BHGoP}0>/= 13a = 5 El0{8EqX`D*`m!S_'Swap t`$$s `u a`m(2")t si`?if`y latjPc߰u5hq oq&"J = grp01- 18Z2s\[ + ICWith lisՊ525, 3).q:rio^r:Q.Q4rIndexo`8}OA>ot@_ AAk>(TSs(F4).Val> 0MaC@OOM5OIuntos6o!No(4P@0?Each n #508?ˆ7x!ApPplicRw.]u sBpFind@ a dBk@@o0& ֥ 0t2 of"u`P Hߥ0.Has= FaUX$PI/DShowPrecedentQ5Navig@TA0BwXward6:=True?4 2C:=ڀActivƕ(Ex;al).=$Ŏ?Ra+L = If IsEmpty(oneCell.Value) Then NavigateArrow TowardPrecedent:=Falspe, _ xhNumber:=1 #ActivAddress(External0:=TrX= 8JcolourCount D= + 2OEnd If EtO Ar5Dz75( 7I< 4 O r Not'Wi$thFInior A"@setC¶s() t!.rIndex@new xPatv?! m.ϤR tn %aIP =3F>Total4#/c@f + HGShee"t@*urrB).Clearjs0Next#Selec5C1= h?5)J5'C h) U(WL`s( Call Differen ce(i.Exit Sub LocalEr:sub.aIDescAr`iptioFile$Help Contx! ;"  InDependH@'Type AsP tegerStatic h1P~ 24)VarianU&hALong#othe.(rptWkbka Stri@iBoo`3k" s c this8- Dim?چg33Xm genReportmsgT#2m starc1f!G  / ACR` #On ,or GoTo 4H(= 22H 0= "d+ps"q24"pKAY= isWork book.W3).Range("ISht&rt")ӵ ^ psAaG`+:'Initialise& arrays ar#k + grp01-F@C!= 3Gu!z=%+  T3}2po"s($, A1hLh ade}OxPoBDž %IELq (?s(?4( > 0H}! ex!??/?5?@1wzuyБ_~6_U3w)-p3H*+ 04gP=rue98 Q.UsedE.EntireP9.DteKCopy  rptWkbk = ActiveWorkbook.Name Colorspds(maifn|).<S0heet_<"Inter-"-Range("A1").Font .Size>1633:44Bold4TrumL5 :AbumnWidth306(B:B2C:2D156NumberFormatR"#,##0*Horiz@TalAlignmenxlC erd Righ tA?VertDic!TopWrapTexA/"x1…H FalsaValuDsA " & msZg _ -& i~nC 7B# our߄C3PF FoundVCI $ 2DJ Trace "Dp 'K ӑat;'L`ist w`B8s@ and cu rs Index@l zReDim this3(1X To"sunt)k oth|er@2 CS+d 1If$%"25 Then0currRow C+ a'9$).((1ells( , Vto! Lؤ )Bi2).". >w=y+Appl0~tion.StatusBar; &BT1 ofrused YET c0 TypAy22+dDowDepe nt<^5 NavigbArTowardPLrei0:=r,6 9 B:=OH"#`GO1'#e%Do While[> 247s-?LoQ6F"oR!5 oRr<oRoR3~( AMpM(oRer\W1oRAoR\oR ![Q7oR!0 genRepor/8qB0(# o``χdY D DŔ.EDHaspVmulap *ShowFFI1ZCIII$ vIDer:=1 If ActiveSheet.Name <> currD Th en zcolourCount = Index`0>*Do W`hile %3>x 24* Y -!3Loop$With oneCell.Interior8setRCs(R)lTrue _Y. r[new(@PatRn@D@-tn,o@BPO#E8nd AnOigenReporAeCO cthis(Aes+ otheOU4If)c@F|).Clear@ArrowsN`ext c':`*(sNum Fum Or PsubE@r-02) A3/Application.StatusBa"Load`ing r7""#,Workbooks(mainWb).atec(select)).SRange(rǡFor%11 To. | aRowǀ$Æ+ 5Ghrpt k .s<(15@7 , @3).Val=5X)?54>]G#L!"a940"A1"O4PageSetup.PrintGridlines/Zoo\73fC@"R)lExit Sub LpocalBbg.`gbe\18d' ""bNot B( Is hE b)'Us has pressed Ctrl+Breakgab=Add7M sgBox`om@pt:="Cpletformf8pf:as"& & Chr((13)"1 "&in = -2wResuQ?) cDesc#rip1P!   2[ NF+2*C1 * OneDepend(QTypeb#As St3g$CDim  I.?<G Applicb.Sta@tusBar`"Findingn1in "+!?q'? /baof8d)"zgQ!D!R Re1 @bS 1C192P q{ASet 7F= s(,4\ElsH07# "HasFulaP A6ZY)0? NtaV=7+~H(O=Z, T >)!4gdCopiesut ;*@;< )%.//Ermrs%1,74j) Is N(<1Sv \l 7.$g& "n="14h/,Q/-)+ C >Wpւ> 0 !6b\11.w @p߼n߼ ppdPG_endqA(߽I,%=&O1+ou'Qinue if no*fdac!10045 Resume Mw?q u Ha rds alphap!StrpM 1a~bigBooBharP[charPos As Long Dim inN umberBo olean pStringponetposCountt thisC.$The1)%Application.Statu sBgFinddcoded ns " ._ #&,Sheet & rUN"@E"of& used-s@End Ifbig= FalsHA3O.ShowPrecedentHBNav@igateAww Toward :=True,9c :=1G+fA ctiveBAddress(Ex@ternal)qU v׎Fain NAct@:~v@ĞAi=Fula9 " = 1' Len()A =Z(1, Ag, Midf,& , 1)0 - < 29 # a $!:H 8$Tf Exit> $/!eerev > 3)xa/[! wEb) eho{NA@>_7X7b7A)s= ) MEA&  =3 3hvNot CxU Bo3Next 30( )0"Witn.In0Rior+! setCoplourJ.1rIndexp8new3PataX+G|tn*OpA 2.Qy PQ1M[c`Î= + XgT5/ // 2  D; 4CLtW2/$KQ2agAɊ2s().C0r҂88aSub Lo": sub= p.s`Desc0 ripFileHelpContxtA 2 SЯngmms(ylq񀡩sOI0[ WorkbookPs(3)."("s").ValuE@` 's wb(@/q-Q[acJ fQP`.2wE   +pD) >= 6 ?E?Eo\o\^ C`ErU@/'2DK Q1[DDDoBoB oBbetoBoBoBoBpCoB :End Sub   CellErrors() Dim thisRow As LonghOn V GoTo2cavph= 0 For Each one In currRange"UIfo<>+.~Then'+cS' "Application.StatusBar = "Finding cy ey in " _ 3&VSheet &r"A of & uhsedXs$IfrIs(\Value) rWit.Interior%O)setColou!oTrue& . rIndex{new Patn tnCTUA/.A )PKRDKqCount@+ 1 aNexBtCExitLoE:sub= .NumbeD^Desccrip FileDHelpContx,&. "'httt"ttnum^c con@stantsuruwukWorksFuncŠIs1Ey)>bgp^FA %~Has`mulaFalsvCz" Dq% s߆vJb !a# sco:e: thisRow = oneCell.h Application.Sta@tusBar"Finding unlocked c~s in " _ & currSheet &&rz"  of& usedsHEndH IfIfL= False` Then'|With-Inteprior )setColouqHTru& . r Index}neFw Pat1n?!  tn0 !\.(S~P$4DKpC0ount@+ 1 aNextCExit Sub @balError:sub.NumbeD^Descrip FileDHelpContx,&.( 'ARoutipnes08__SRP_5X__SRP_4nSheet2__SRP_c"qh6(lh )qhoXlhoptXoPlhoptP Lf gAmX ot:pNok( q`1`6(\((`M8@ n:r( `M@ n`1d6 (AmP ot:pNok( q`1`6(nldr*F((`M8@ n:r( `M@x nxh`1d6(xhldCxDT8 xH`ld,(xh" t $  t  t*pt$ t 0lpt/pt$ t 0lpztkl2XkzD\%t$ t dXs)tX zel}5:Ht%X(\%t$ t dXu)tX5:Hv%X(\%t$ t dXu)tX5:Hw%X(\%t$ t dXu)tX5:Hx%X(\%t$ t dXu)tX5:Hy%X(\%t$ t dXu)tXD:Hz%X(\%t$ t dX{)tX5EX(\%t$ t dXW(|=}s)tX6( $ " t $  t  tt$ tX(KN'L%\:`%ptx $ d x (t p ,\ )xtp\2t:`%x $ d x Ht )xtt0$ xtp\ ~ H +z %fd% t $  t  t%( t $  t  t'" t $  t $ t?O8 ` Fd%t $ t D` 0)t`6`0Md %t $ t d`)t`2@t $ @ t@t5@ T" t $  t  t c= c=,<$ t`P@` H9ptx $  x t 0lp)xtf `  0 '':N0:P`@0 : 6`@0 H0p x $  x  lpiPx% x $  x $ x+ x $  x  k(x" x $  x  x `$ 4 xt`@0  ~ H +z %fd% t $  t  t%( t $  t  t'" t $  t $ t?O8 ` Fd%t $ t D` 0)t`6`0Md %t $ t d`)t`2@t $ @ t@t5@ T" t $  t  t c= c=,<$ t`P@ ~ H +z %fd% t $  t  t%( t $  t  t'" t $  t $ t?O8 ` Fd%t $ t rU~| )R( a ))Q"YI@y@@@aAAAAAI9AB>BB%ACCCDYDDD!EaEEEIFFFAGGGHIHHHIiIIJJ KKKQLLLIMMNNOYOOOPYPPPQYQQQ9RQNRR)SaSSSATyTTUYUUUIVV WaWWWQXXX1YqYYYQ][\]^\"9]_)_Y____!`Iy"lami#!Iqa1` a9Ayn9ooppqrAsstttAuuu!n1j)fIvIb1^vv1wywwx yayyAz){{9|9Y||Q}}!Iq9a} ~AA~Yz~ 1Q1)YqY9Yy Aa)!A )Qq )Ya 1!i!!" $$$9%y%%1&q&&&&&'Y''''# (9(Y(y(iɓ1Q1))  &X%Q:4%D(H%X$ X dDA:]4)XD6 F: %:4%D(H%X$ X dDC)XD5" X $  X  X $ " X $  X  X2D:H%X $ d X HD )XD2D:H%X $ d X HD )XD^c4%'%'%'$%H %DX $ d X (D  $l=`)XD ` Q(4%D:H%X $ d X HD  ,)XD2D:H%X $ d X HD )XDO:4%D(H%X$ X dDAc]4)XD6 qd qdP'%'%'$%(4%H%DX` LX D $l=h)XD lh   ld x    `cP'%'%'$%(4%H%DX` LX D $l=h)XD lh   x  cP'%'%'$%(4%H %DX` LX D $l=l)XD l O:4%D(H%X$ X dDAc]4)XD6 qd qdP'%'%'$%(4%H%DXl LX D $l=h)XD lh   ld x    `cP'%'%'$%(4%H%DXl LX D $l=h)XD lh    ld x    `cP'%'%'$%(4%H %DX` LX D $l=l)XD !l  l |P'%'%'$%(4%H%DXl LX D $l=h)XD lh "  x # cP'%'%'$%(4%H%DXl LX D $l=h)XD lh $  x # cP'%'%'$%(4%H%DXl LX D $l=h)XD lh %  x # cP'%'%'$%(4%H%DXl LX D $l=h)XD lh &  x # cP'%'%'$%(4%H %DX` LX D $l=l)XD 'l P'%'%'$%(4%H%DXl LX D $l=h)XD lh (  x ) cP'%'%'$%(4%H%DXl LX D $l=h)XD lh *  x ) cP'%'%'$%(4%H%DXl LX D $l=h)XD lh +  x ) cP'%'%'$%(4%H%DXl LX D $l=h)XD lh ,  x ) cP'%'%'$%(4%H %DX` LX D $l=l)XD -l P'%'%'$%(4%H%DXl LX D $l=h)XD lh .  x / cP'%'%'$%(4%H%DXl LX D $l=h)XD lh 0  x / cP'%'%'$%(4%H%DXl LX D $l=h)XD lh 1  x /   |cP'%'%'$%(4%H%DXl LX D $l=h)XD lh 2  x / cQ(4%D:H%X $ d X HD  ,)XD0D:H%X $ d X HD )XDP'%'%'$%(4%H %DX` LX D $l=l)XD 3l  l |O:44%D(H%X$ X dDAc]4)XD6 qd qdP'%'%'$%(4%H%DXl LX D $l=h)XD lh 5  ld x 6   `cP'%'%'$%(4%H%DXl LX D $l=h)XD lh 7  ld x 6   `cP'%'%'$%(4%H%DXl LX D $l=h)XD lh 8  ld x 6   |  `cP'%'%'$%(4%H%DXl LX D $l=h)XD lh| 9|  ld| x 6|  | `c|P'%'%'$%(4%H %DX` LX D $l=l)XD :l P'%'%'$%(4%H%DXl LX D $l=h)XD lhx 5x  ldx x ;x  x `cxP'%'%'$%(4%H%DXl LX D $l=h)XD lht 7t  ldt x ;t  t `ctP'%'%'$%(4%H%DXl LX D $l=h)XD lhp 8p  ldp x ;p  p | p `cpP'%'%'$%(4%H%DXl LX D $l=h)XD lhl 9l  ldl x ;l  l `clP'%'%'$%(4%H %DX` LX D $l=l)XD <l P'%'%'$%(4%H%DXl LX D $l=h)XD lhh =h  ldh x >h  h `chP'%'%'$%(4%H%DXl LX D $l=h)XD lhd ?d  ldd x >d  d `cdP'%'%'$%(4%H%DXl LX D $l=h)XD lh` @`  ld` x >`  ` | ` `c`P'%'%'$%(4%H%DXl LX D $l=h)XD lh\ A\  ld\ x >\  \ `c\P'%'%'$%(4%H %DX` LX D $l=l)XD Bl P'%'%'$%(4%H%DXl LX D $l=h)XD lhX CX X x DX cXP'%'%'$%(4%H%DXl LX D $l=h)XD lhT ET T x FT cTP'%'%'$%(4%H%DXl LX D $l=h)XD lhP GP P x HP cPP'%'%'$%(4%H%DX` LX D $l=h)XD lhL IL L x JL  L |cLP'%'%'$%(4%H %DX` LX D $l=l)XD Kl P'%'%'$%(4%H%DXl LX D $l=h)XD lhH LH H x MH cHP'%'%'$%(4%H%DXl LX D $l=h)XD lhD ND D x MD cDP'%'%'$%(4%H%DXl LX D $l=h)XD lh@ O@ @ x M@ c@P'%'%'$%(4%H%DXl LX D $l=h)XD lh< P< < x M<  < |c<P'%'%'$%(4%H%DXl LX D $l=h)XD lh8 Q8 8 x M8 c8P'%'%'$%(4%H %DX` LX D $l=l)XD Rl P'%'%'$%(4%H%DXl LX D $l=h)XD lh4 S4 4 x T4  4 |c4P'%'%'$%(4%H%DXl LX D $l=h)XD lh0 U0 0 x T0 c0P'%'%'$%(4%H%DXl LX D $l=h)XD lh, V, , x T,  , |c,P'%'%'$%(4%H%DXl LX D $l=h)XD lh( W( ( x T( c(P'%'%'$%(4%H%DXl LX D $l=h)XD lh$ X$ $ x T$  $ |c$P'%'%'$%(4%H %DX` LX D $l=l)XD Yl P'%'%'$%(4%H%DXl LX D $l=h)XD lh Z  x [ c P'%'%'$%(4%H%DXl LX D $l=h)XD lh \  x [ cP'%'%'$%(4%H%DXl LX D $l=h)XD lh ]  x [   |cP'%'%'$%(4%H%DXl LX D $l=h)XD lh ^  x [ cP'%'%'$%(4%H %DX` LX D $l=l)XD _l  l |P'%'%'$%(4%H%DXl LX D $l=h)XD lh `  x a   |cP'%'%'$%(4%H%DXl LX D $l=h)XD lh b  x c c P'%'%'$%(4%H%DX` LX D $l=h)XD lh d  x e cP'%'%'$%(4%H%DX` LX D $l=h)XD lh f  x g cP'%'%'$%(4%H%DX` LX D $l=h)XD lh h  x i c*X$ X 0lX4% j c=` c=l c=hX%7|xtplhd`\XTPLHD@<840,($  h`xl(XDTl M8@( k(`1H5( lH23lCHmCltptXtPLlHJd op?tp?llF((lLHM8@ nD` 0)t`6`0Md %t $ t d`)t`2@t $ @ t@t5@ T" t $  t  t c= c=,<$ t`P@ ~ H (+z %fd% t $  t  t%( t $  t  t'" t $  t $ t?O8 ` Fd%t $ t D` 0)t`6`0Md %t $ t d`)t`2@t $ @ t@t5@ T" t $  t  t c= c=,<$ t`P@ ~ H 2+z %fd% t $  t  t%( t $  t  t'" t $  t $ t?O8 ` Fd%t $ t D` 0)t`6`0Md %t $ t d`)t`2@t $ @ t@t5@ T" t $  t  t c= c=,<$ t`P@ ~ H +z %fd% t $  t  t%( t $  t  t'" t $  t $ t?O8 ` Fd%t $ t D` 0)t`6`0Md %t $ t d`)t`2@t $ @ t@t5@ T" t $  t  t c=,c<$ t`P@ ~ H +z %fd% t $  t  t%( t $  t  t'" t $  t $ t?O8 ` Fd%t $ t D` 0)t`6`0Md %t $ t d`)t`2@t $ @ t@t5@ T" t $  t  t c=,c<$ t`P@ ~ H +z %fd% t $  t  t%( t $  t  t'" t $  t $ t?O8 ` Fd%t $ t D` 0)t`6`0Md %t $ t d`)t`2@t $ @ t@t5@ T" t $  t  t c=,c<$ t`P@t ~ H %fh% x $  x  x%( x $  x  x'" x $  x $ x?J8 d Fh%x $ x Dd 0)xd6d0Mh %x $ x dd)xd2@x $ @ xDx5D T" x $  x  xt8t$ xdTDt ~ H %fh% x $  x  x%( x $  x  x'" x $  x $ x?J8 d Fh%x $ x Dd 0)xd6d0Mh %x $ x dd)xd2@x $ @ xDx5D T" x $  x  xt8t$ xdTDt ~ H %fh% x $  x  x%( x $  x  x'" x $  x $ x?J8 d Fh%x $ x Dd 0)xd6d0Mh %x $ x dd)xd2@x $ @ xDx5D T" x $  x  xt8t$ xdTDt ~ H %fh% x $  x  x%( x $  x  x'" x $  x $ x?J8 d Fh%x $ x Dd 0)xd6d0Mh %x $ x dd)xd2@x $ @ xDx5D T" x $  x  xt8t$ xdTD ~ H3T (d%t $  t ( TUpzt5T z %fd% t $  t  t%( t $  t  t'" t $  t $ t?8 P Fd%t $ t DP 0)tP6P0Md %t $ t dP)tP2@t $ @ t@t5@ T" t $  t  t c= c=,<$ tPT@ ~ H +z %fd% t $  t  t%( t $  t  t'" t $  t $ t?O8 ` Fd%t $ t D` 0)t`6`0Md %t $ t d`)t`2@t $ @ t@t5@ T" t $  t  t c= c=,<$ t`P@ ~ H %fh% x $  x  x%( x $  x  x'" x $  x $ x?J8 d Fh%x $ x Dd 0)xd6d0Mh %x $ x dd)xd2@x $ @ xDx5D T" x $  x  x c= c=,,8$ xdTDt ~ H %fh% x $  x  x%( x $  x  x'" x $  x $ x?J8 d Fh%x $ x Dd 0)xd6d0Mh %x $ x dd)xd2@x $ @ xDx5D T" x $  x  xc=8t$ xdTDd ~ H" t $  t  t&:d% t $  t  t'`t $ H t >` t1\(d%t$ t d\)t\=t $ ( taLi\\a<`1x)t\6L<1\(d%t$ t d\)t\gL ',%\ Fd%t $ t D\ |L '%( $ H ( )t\(5L :d%t $ @ tutF\(d%t$ t d\W<|4,)t\5<_,aL:d]A5Lr_,aLitta<`F%\ $ @ \%_,ai((')t\(6 L<,0x@t $ @ t<t5<%fd% t $  t  t%( t $  t  t'" t $  t $ t" t $  t  t c=,d0_x0 `t\(L< ~ H %fh% x $  x  x%( x $  x  x'" x $  x $ x" x $  x  x c=,$ xd0Vx$ x$0$ x+r t $  t  kr(t" t $  t  t" t $  t  t&:`% t $  t  t1\(`%t$ t d\)t\$t $ ( taL`1xt5L1\(`%t$ t d\)t\ :`%t $ @ tutF\(`%t$ t d\W,|4(,)t\5,$_,aL:`]A5LF_,aL`F,%t $ @ t%_,'t6L,,$0x@t $ @ t,t5,%f`% t $  t  t%( t $  t  t" t $  t  t c=,h0($x t\L, :XL h hH 8 8(:M    :N  :xOh X XH:8P(  :Q`1x6&hH8(hXH(.'8'H:Nhh@xMX@ 6hH8 (xXhH8(hXH( % \ $  \ < \K" \ $  \  \ H +Z  Hs H@ PT\ $ H \ T 0lP)\T @      p '':0N  0:0@  F::p`:P@ 6@ p`@  H Hpb.\  $ \W@(0]u\5@cpbR @ '':N:0@ :^p`6 @ k`Mk`cpb ql qhA D@ (0%\ $  \ ( @ Upz\6@ kz ?R @ '':N:0@ :^p`6 @ k`)k`? pzkzp k _Ct k uCt k Ct kCt kCt kCt ql k Ct ql k!Ct ql k"7Ct ql k)WCt ql k*Ct ql qh k+Ct ql k,Ct ql k3Ct ql k4Ct ql k6!Ct ql k7ACt qlE'':0N  0kz#*#*F@ 26@ pr kz 1:0 @ @ :`1d6@ O:%T(0%\$ \ dT@A c]4)\T6@ W8ld*F @ @:0`1d6 @6'':0N  ld*F@^p`6@ k`  Blt*#*F @ @:0`1d/6 @O:%T(0%\$ \ dT@A c]4)\T6@ v8ld*F @ @:0`1d6 @6'':0N  ld*F@^p`6@ k` ll i @ '':PN:0@ :ltF:^p`6@ k`Jk``prSl@(%T(0%\$ \ dT@A q)\T5@lA@LlA@"|5@lA@ q^l@(%T(0%\$ \ dT@A (P]rV)\T6@ ^l@(%T(0%\$ \ dT@A (P]rV)\T6@ ^l@(%T(0%\$ \ dT@A (P]rV)\T6@ lh Sh@(%T(0%\$ \ dT@A q)\T5@lA@\lA@"5@lA@ q^h@(%T(0%\$ \ dT@A (P]rV)\T6@ ^h@(%T(0%\$ \ dT@A (P]rV)\T6@ ^h@(%T(0%\$ \ dT@A (P]rV)\T6@  kr\ $ ( \\" \ $  \  \'\ $ ( \a@\5@a@aa@_"5@a@bL @,a|i0%,_ @,bW0T%T\ $  \  T@a Vpr)\T6@ a@aLa@_"|5@a@b @,ai0%,_ @,bc2@\ $ @ \ \5 " \ $  \  \ kr    lhi @ '':PN:0@ :ltF:^p`6@ k`\ $ ( \\" \ $  \  \'\ $ ( \a@\5@a@aa@_"5@a@b\ @,ai0%,_ @,bW0T%T\ $  \  T@a Vpr)\T6@ a@a\a@_"5@a@b @,ai0%,_ @,bc2@\ $ @ \ \5 " \ $  \  \ kr    8cC84T4TF0%\ $ \ dT)\T kb!@\ $ @ \@T $ @ TW |D 'H%'X%'h%'x%'%'%'%'%'%'%'%'%'%'%'(%'8%'H%'X%'h%'x%'%'%'%'0%'P%'%'%'% [@[ $ QD)\T6@ K(\ $ @ \W@|\5@cL(%(%@\ $ @ \@B \6@ G_a@"_a \\av"\6@ kzpB kB   kB & z kBA z kB"\ t  kB)q  kB*  kB+  kB,  kB3  kB4  kB6  kB7  HC H% H7 8d?8 T F0%\ $ \ DT 0)\T6T0M0 %\ $ \ dT)\T2@\ $ @ \ \5 T" \ $  \  \;CdCCdl:N@@M0@ q'':PN@ ltFldF 6@  HE!P \\ lPH\! \\ ,>@\! \\ 4>D\#P \\ <lP<\,c; H6" \ $  \  \ @     <MP@DM@:Npp0@H#*#*F @@F0: 26 @p_,a@`5@ H @ <M@DM@:N@:0@ :F:FP:0 6@ " \ $  \  \ @    @   <Mx@DM@:N  0@H#*#*F @:0F:F:Pp@F0`@ :0 26" @p`@ 0 \ <$dtl\TD@ p`@ 0 JDK)^ ` $  `  k^pr`'X` $ H ` >X `"` $ @ `WHu`1t`5H=@` $ D `aHDD 0l@pj)`D5H  kjph4@D` $ H ` D 0l@ph)`Dkj0kh4pppnpz8khc< 8u ltTV  X(8kzD,%` $ D `aHDD d(Wu`)`D(6H/N(8kzD,%D` $ H ` D d(WHu`)`D(5Hlt2Gpzlt2ypl-f@` $ ` 0l@`cBDkfD,%` $ ` dDWHuF]4)`D5Hpl fd kl8kn4;  plplfkjcY(kfD,%` $ D `aHDD d(WuF]4)`D(6Hpl fd6 kl8kp0; kppp knpn kppp 8d<[khkn f H   'p':N0:,H: 6Hp H4khkp00lt?_6D0M, %` $ ` dD)`D" ` $  `  `#kr ` $  `  `*`  $ `WH``5H'` $ ( `aH``5H!@ `` l@H`!X `` ,>X@`!X `` 4>XD`#@ `` <l@<` D(t< X`D(HpxKpzpx8cpt84T?XF\%l $ l dXW8cH]A)lX58f kx*1tY kxElt*#$*F( 8 8F\`1t/$6(8Ykxkz?;lt*F( 8 8F\`1t6(8kxpzYlt*#$*1t/$ kxpx 8dp)6X0M\ %l $ l dX)lX2@l $ @ l(l5( kxHU 8 '':HN0lt*F(8:\ 6(8 Hpzpx8c84T?XF\%l $ l dXW8cH]4)lX58 kx*1t kx-Elt*#$*F( 8 8F\`1t/$6(8kxkz;lt*F( 8 8F\`1t6(8kxpzlt*#$*1t/$ kxpx 8dl6X0M\ %l $ l dX)lX2@l $ @ l(l5( kxU 8 '':HN0lt*F(8:\ 6(8 H! ll lHl!$ ll ,>$@l!$ ll 4>$Dl# ll <l<l"(t4 $lX8( %,$K pbJ:%(% $  dAUp.) 6K:%(% $  dAVpZ) 6 8k.!p.nc k.knqS@(%(% $  dAq) 5lAkn_R5lA"kn_<5lAkn_ R5 qf@(%(% $  dA(]rpVkn_\) 6f@(%(% $  dA(]rpVkn_) 6f@(%(% $  dA(]rpVkn_x) 6l8 k.p. nd kZE(% $  dW|=p}s) 6p1(% $  d) -l  $ H  ll_T/l :%  $ @  u ;(%:%  $ @  =C 69c%:%  $ @  =C 61(%:%  $ @  C 51( %:%  $ @  C 51(-%:%  $ @  C 51( %:%  $ @  C 51:%:%  $ @  C 54%:%  $ @  C 54%:%  $ @  C 5/c%:%  $ @  C 50f%:%  $ @  C 5< *F%:%  $ @  C 61:%: %  $ @  C 51: %: %  $ @  C 51: %: %  $ @  C 51:%:%  $ @  C 51:%:%  $ @  C 51:%:%  $ @  C 51:%:%  $ @  C 58  F%  $  D 0)  q< qC_a"q58l_a  av"qd 6_a"q058l0_a  av"qh 6!lhtp" kZL lhTxFT%@(%d(%h_TF%  $  D h ddC) hd5,@)_,a"q$5 l$l0_,a"q5g*#l*#l@ !l   4>lD #   <l< l?#      '':N0::#p|:$4F$:%lFT:D 6p|4$ c=@ c=( c=H c=4 c=x,$h@ xtplPLHDx(thT4H@tl<840, hdhp|4$K  px#px 8uzkxclu kzX qp kzp qpkz!qpSp@(4%T(X%h$ h dTAq)hT5lAkz_R5lA"kz_5lAkz_R5 qfp@(4%T(X%h$ h dTA(]rVkz_)hT6fp@(4%T(X%h$ h dTA(]rVkz_<)hT6fp@(4%T(X%h$ h dTA(]rVkz_ )hT6 zdl@ qp,lp_,a"5,_,a"qp5g&*#*#lp#*#*##*F% h $  h  2 h5_,a fX]45Spz_,o#cX%(4%_,^cX%h $ ( h `#c4%_, `#22h6pzpz_,m_,a '5$fX%(4%_,^cX%h $ ( h `#c4%_, `#22h6 kzpz$fX%(4%_,^cX%h $ ( h `#c4%_, `#22h6$fX%(4%_,^cX%h $ ( h `#c4%_, `#22h6 kzpz!kz_,a '5_,a5kz_6kz_@ @,akz_<gkz_iX%,_kz_ kz_@ @,bc kx4TFX%h $ h dT()hT,4TFX%h $ h dT)hT kx_L_|___<_  ! hh lHh! hh ,>@h! hh 4>Dh# hh <l<h4TFX%h $ h dT)hT08 hT4K  %)Cp*Cl7*Cp)ClJ:<+%L(P%`$ ` dLA Upj)`L6 K:<%L(P%`$ ` dLA Vpv)`L6 8 kj!pjxc kjkxqdSd@(,%L(P%`$ ` dLA q)`L5lAkx_XR5lA"kx_5lAkx_tR5 qfd@(,%L(P%`$ ` dLA (]rVkx_)`L6 fd@(,%L(P%`$ ` dLA (]rVkx_)`L6 fd@(,%L(P%`$ ` dLA (]rVkx_)`L6 ld8 kjpj xd kv EL(P%`$ ` dLW|=}s)`L61L(P%`$ ` dL)`L-` $ H ` l_/`g '<%L FP%` $ ` DL | ',% $ H  )`L5 :P,%` $ @ `u`;(,%:P%` $ @ `= C`6 9c,%:P-%` $ @ `= C`6 1(,%:P%` $ @ `C`51(,%:P.%` $ @ `C`51(,%:P/%` $ @ `C`51:,%:P/%` $ @ `C`54,%:P.%` $ @ `C`54,%:P/%` $ @ `C`54,%:P0%` $ @ `C`5/c,%:P0%` $ @ `C`50f,%:P1%` $ @ `C`5Q2lp*#3*# *F%:P%` $ @ ` C2`6 1:,%:P4%` $ @ `C`51:,5%:P6%` $ @ `C`51:,7%:P %` $ @ `C`52llF,%:P8%` $ @ `C`51:,9%:P%` $ @ `C`52lpF,%:P:%` $ @ `C`58 L FP%` $ ` DL 0)`LpxGL` $ H ` L 0l_)`LGL` $ H ` L 0l_)`L<zL` $ H ` L 0l)`Lc kxpx kx pxkzkzDP%L` $ H ` L dWu%@(%(,%_F<% $  D  d C)`L6 {@(%(<%L_FP%` $ ` DL  dA ppql)`L5kx_{ kx_XllCkx_ kx_iP%llCkx_ kx_tllC qlkz_ zd qd:LFP%` $ ` dLW;Uph)`L5,<lp*#3*#*#h*1p2h,dld_,a"5 _,a"qd5Slpld#*#*#h#`*F% ` $  `  2h``5   _,m$fP%(,%_,,` $ @ `WuFP]A`5 "` $ @ `W;Upz`5kzpx kx kxpx _,a\5kx_ kx_X@ @\,akx_4 kx_iP%\,_kx_d kx_t@ @\,bc\ kv "kh_kh_"kz_kz__,a cP]45_,o#cP%(,%_,,` $ @ `WuFP]A`5"` $ @ `W;Upz`5kzpx kx kxpxv_,aX5kx_kx_X@ @X,akx_ kx_iP%X,_kx_:kx_t@ @X,bcX kv"kh_kh_"kz_kz_4LFP%` $ ` dL()`L,d 8ƓHkv&:P% ` $  `  `8 L FP%` $ ` DL 0)`L6L0MP %` $ ` dL)`L2@` $ @ ` `5 <zL` $ H ` L 0l)`LcT(kzkz_i%@(%(<%L_FP%` $ ` DL  dC)`L5kz_i%@(%(<%L_FP%` $ ` DL  dC)`L5 zdT; L_FP%` $ ` DL 0)`L/:P%` $ @ ` `5 &cP%` $ @ `WC `5((PK%` $ @ `WC!`5 T: `` lǔ?Ĕ,c`_,a`5  <M@DM@:N@:P :<F,D:4F$: 6 D4$ H ! `` lH`! `` ,>@`! `` 4>D`# `` <l<`4LFP%` $ ` dL)`L@(d\XplpXh``L D4$KY:P (`%p $  p ( P(@]4p5PKpz:P (`%p $  p ( P(@]4p5Ppz3P (`%p $  p ( PUpzp5P qt,,"lt_,aP"5P_,aP"qt5Py= *#(>*#$*# *#lt#*#*## *FP% p $  p  2($  p5Ppx_,aP f`]45Ppxb_,o#c`%(%_,^c`%p $ ( p P`#(c%_, 0`#$22($p6P0Wpx`pxkzkxkzkx!kz_,aP '5P:_,m$f`%(%_,^c`%p $ ( p P`#(c%_, 0`#$22($p6P08 kxpx kzkx_,aP5P L @,a |i`%,_  @,bc4F`%p $ p d()p,,4F`%p $ p d)p! pp lHp!( pp ,>(@p!( pp 4>(Dp# pp <l<p4F`%p $ p d)p5,,< ($  pP0@K qX_aH"pf5H:kf_aHDDa4v"pvD6H4 kvkfN H '':N0:$?H4:@ 6 H4 H,lX_,aH"5Hu_,aH"qX5HgA*#*#lX#*#*##*FH% D $  D  2 D5H_,aH"p^5H k^kfXkvxptlX_aH"5H?lXi$%kfD%D $ X DHpD5HV?lXi$%kfD%D $ X DHpD5HD_,aH c$]14_,a"lx'6Hz ktpt lphvlXi$%kvD%D $ X DH,ot%H,o% $ 4h)D6H4alXi$%kvD%D $ X DHH,o% $ Q[``D5H\z`aH c$]14 '%' %'%',%'<%'L%'\%'l%'|%'%'%'%'%'%'%'%'%' %'%',%'<%'L%'d%'t%'%'%'%'%lhl`D $ lc')D6Hkkt`aH"lx5H `\ k^kvalXi$%kfD%D $ X DH,o%H $ Q[`D5H`aH"lxp\5H/`aH"kfknk\k\kn5H`aH5H gL @,a |i$%,_  @,bck\pn `,$ DD lD (! DD lHD! DD ,>@D! DD 4>DD# DD <l<D$T: `\`x`hp`HDH4`K]BCx qT,PZlT_,a@"5@_,a@"qT5@gC*#<*#8lT#4*#0*#,#(*F@% $ $  $  2 <840,($5@pvpf_,o#c%(%_,^c%$ $ ( $ @`#<@$!< $$ 4><D$# $$ <l<$<$PXx\8 <840,($@xKK:LD%\(`%p$ p d\,A"qx)p\6, qt,lt_,a,"5, _,a,"qt5,=lx#*#E*# *#*#lt#*#*##*F,% p $  p  2 p5,"_,a,lxi`][5,_,a,5, |L @,a |i`%,_  @,bc,p! pp lHp! pp ,>@p! pp 4>Dp# pp <l<px,D p\,d K~ qx,t{lx_,ad"5d_,ad"qx5dgF*#`*#\lx#X*#T*#P#L*Fd% H $  H  2 `\XTPLH5d_,ad G5dj_,adD5d L @D,a 0|i4%D,_ P @D,bcD,t%! HH l HH!` HH ,>`@H!` HH 4>`DH# HH <l <Hp\ ,tD,`\XTPLHd\K qx,tlx_,ad"5d_,ad"qx5dgH*#`*#\lx#X*#T*#P#L*Fd% H $  H  2 `\XTPLH5di,o4%DH $  H Dd@V_,a f]1')HD6d_,ad5d _L @,a |i4%,_  @,bc,t%! HH lHH!` HH ,>`@H!` HH 4>`DH# HH <l<H\,t< `\XTPLHDd\K qx,tlx_,ad"5d_,ad"qx5dgI*#`*#\lx#X*#T*#P#L*Fd% H $  H  2 `\XTPLH5dh,o4%DH $  H Dd@V_,a c]1')HD6d_,ad5d ^L @,a |i4%,_  @,bc,t%! HH lHH!` HH ,>`@H!` HH 4>`DH# HH <l<H\,t< `\XTPLHDdh K qx,t|lx_,ad"5d_,ad"qx5dgJ*#`*#\lx#X*#T*#P#L*Fd% H $  H  2 `\XTPLH5d_,ad c8]45dk_,ad$5d L @$,a 1|i8%$,_ Q @$,bc$,t%! HH lHH!` HH ,>`@H!` HH 4>`DH# HH <l<Hl ,t$0 `\XTPLHd(h K qx,t}lx_,ad"5d_,ad"qx5dgK*#`*#\lx#X*#T*#P#L*Fd% H $  H  2 `\XTPLH5d_,ad f8]45dl_,ad$5d L @$,a 2|i8%$,_ R @$,bc$,t%! HH lHH!` HH ,>`@H!` HH 4>`DH# HH <l<Hl ,t$0 `\XTPLHd(      !"#$%&'( 0$`$`$!`$I`$q`$`$`$ `$ `$9 `$a `$ `$`$`$`$)`$Q`$y`$`$`$ `$1`$Y`$`(`&(`#$`$!`(I`&(q`&( `0$!`$"`$#`$9$`$a%`$&`$'`$(`%nDr|#<giN&۵D FG uJ@4^xG uJ@4^giN&۵DME(SLSS6"N0{00020820-0000-0000-C000-000000000046}(%H@h % %Xp@@0L$*\Rffff*0a4cd9beea4xAttribute VB_Name = "She@et2" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2rU Q[)[4[9[`__SRP_dBSheet3~__SRP_6__SRP_7BrU @n<jx\#<S]BOrR$` F+OGdx+OGdS]BOrR$`ME(SLSS6"N0{00020820-0000-0000-C000-000000000046}(%H` % %`h8@0L$*\Rffff*0W4cd9be264xAttribute VB_Name = "She@et3" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2rU )[Q[y[[4[9[`rU @n<jx #<©ۦD3XN8a F9q@~q?}x9q@~q?}©ۦD3XN8aMESheet4~__SRP_8__SRP_9 BSheet5(SLSS6"N0{00020820-0000-0000-C000-000000000046}(%H` % %`h8@0L$*\Rffff*0X4cd9be264xAttribute VB_Name = "She@et4" Bast0{00020820- C$0046} |Global!SpacFalse dCreatablPre declaIdTru BExposeTemplateDeriv$Bustom izD2rU @a`Q[`[4[9[`rU @n<jxT#<>?@ABCDEFGHIJKLMNOPSTUVWqYZ[\]^_`abcdefghijklmnopRrstuvwxyz{|}~ "  (08@HPX`hpx  % "  " 4 ($0 8HPX`Ah   8@ H Xx   (8X`hx      !"#$%&'()*,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcefghijklmnopqrstuvwxyz{|}~$0sx0xxK? N ;K <~~ uX;K trr  ME0(:(p> LL LLL"PLL ***<<<<<<<<<<<<<<<<<<<<<<<<(Uh `k@i* `z `x `v`p`l`Zh`hd```\`X`lV ` T `@R 8L%`PJ`xH `D`@M.`<ges`8 `4v!``2 z`,9`*.`$` %`H&Fon x`P&Nk0||i Pv!)px&Loc%il gesi Formi i0 .vi$'i(80@i,p   <X0! th P 8' P px -  xt( D`p`l'`j p`X a`XH  D$% @B@ 94`>e sh`8< `:.`8 bow `4`0X`,for `('`x$ 0` nt``H `s`0 ` `` 8 '`h``` $`0  P0 %`se u`H `  try``xA@`L `` !`` ` X % P x %` `@ ` h` ` `   `% H ] 0   ]h `t` '`( rt` '` em` our `  eet h H %`  `0  ` |94`h x `8 t P p %  l %` h` d!`  b LP p      8 X `p7Hk`$x(`&h `(d`*`m. ,\0%% .XP(%`0T(`ZP%`2L%`Hormu`4X8  64Shee( `8$ `: `<`>` p`= kkk`hx`jt`lp`Zl`h n dP%`b "p`PA$k]]`xz`Zt`2p`l`:h`<d`f``^ &`E@kx`zx`|v `t`~p`n`h PpX`H`F .``K>ki* `z`t`Zp`ln `h`Pf` d`8``^ X`Rk i `x `Uk i `x H `Xk ""i `x  `[k i `x P `^k  i `z `t 4P `8ak $`fz `x`t`p`l`Zh`lf `d  ` j`k `x `mk`x X`p k+`x `rkF`x `vka`x ``xk|`x `{k!!`z`x `t 8`~kFF`z `*x`Zt`Xd `` Lp`kNN`z`x`v `p`n`l `kL `xp`xpHXXPPp %0`hxH8x #8& p.>@` 7@h$ 7@ @  (7@" 87@ `7@ 7@ 7@  7@P 7@ 8@h 8@ @x 8@h @8@X `8@H 8@ 8 8@( ( 8@@  8@X  8@p @ 9@ 9@ @9@! `9@! 9(! -@" 0Ht*v>@0@8! P!! @x!  !8!: nxz|~@! @:!x!@" !!!!:#8!@" @0"| "@H"l @"\ @`"L @x"< @", @ @ `!.22,( @# "@# 0#" @@# X## <@h# @<#@#@$ #h# #h#<@# ##"@`%/ $#@$ @ $ @8$ @% "<DFB@ $#$$#.@$ $$3 @$ %$3=@% >0%$6@ @%%6P%%;x%$B"@% %`%H@%/ %%H>@ >%%R@& &%T @/ (&&T&^P$H?8  P   x+'' '078.`(((7((&JPT`dh@8'\ @P'L @(H @h'8 @'( @' @' @' @' @) @, @8( P((\XA@(4 xAx(8(\@82 (`(^@,` ((^A ,8(g&,2l @( @`+ @ ) @8) @P)x @h)h @)X @)H @)8 @)( "@) @) @* @(* @@* @X* @p* @* @* @* @*x @*h @+X @+H @0+8 @H+( @ @ @+ @+  @+ "@+ @+ @ @0, H,,@h, X,0, F,0,@, ,h, @, ,,@. hF@, F-,@0-  -,H-, G@X- hGp-0-@- -X--X-@- G--@/ --P.-(:8(n@ . H@X6 XJ@`. hJx.8./ @.O .`./(G.`.1F(L@. xL..8@.O ..8N/.:PN@ / 8/.>" @X/O H/ />p/ /@N@/ N/X/G@h0O //G//I"N@/ N//K@0| 0/K @00/UXO@@0x `PX00X@1t 0@0X (@0p .0h0^P@0lO Q00^00` @0h  10g R@(1dO 0R10g@10i@P1` h1(1o S@1\O 8Sx1P1o1P1q@1X 11xS@2TO S11x21z@2P  (210T@`2L XTP22@5< x282@x48`2`2T222@0@24  22@U@30O `U22 32 @03, H33 U@h3(O UX303303@3$ 3h3E@V@3 O V33 33@3 d143PW@O (X43@43@P4 h4(4Y@H7 HZ4P4@4  4x4 @4  ,^44^Z44@5 54@H5  (55^[855 `5P4@p5 5H5X\@5 x\5p5 @5  55 @ 6`W55\6p5 @  8653 @`2H6 63" ]`7,>@p6 @6  @6  @6  @6 @6t @7d @T -*HDFB^@P @N  H7Q 2P 8p8h9(8p8X8@88::< :pHtB>@9 _@ _@8 P`@8 ``@ x`@8 `@8 `@9 `@09 `@H9 `8|2.,@`9 a@x9x a@9h 0a@9X @a@8;H Pa@<8 a@X:4 a@:0 a9(FDH@0>n@0:, bH::8@;( :0:8 @p:$ !@ #@: ::A c@ :;:A9RVZf<@; @ ; @ @P; @h; @ ;:_@; ;;c@ ;;c;;w0:x:2DFB@0< @H< @`< @x< @< @<x @<h @<X <@H 8X(?==>=@@X? Ap?pHt|@?\ @Z @ >H @8>8 @P>( @h> @> @> @> @> @> @? @@ =>2..,@? @X@ >(@0>n8@? ?X?.@ @?.@? @ @? @t @0@p H@@4@lO @0@4@p@h @d @0@F?K@?<2DFB@` @@P @A@ @8A0 @@ (@XpCB8BPB BDCxDCpHt|@XCX @V @hBD @B4 @B$ @B @B @B @B @C @(C @8D @D A>2.,(@C @C @C CC*@ hDC*@ @ D @Cf<2@ @PDx @h C@DDFB@d @DT @DD @D4 @$ (@xFEhFFEEFHKFpHtvn@ F@ @> @8 @8F( @J$ @PF @G @F @G @F FF@hI 0GF@0K @G @@G IF(@XG @pG @G @G| @Gl @G\ @HL @H< @0H, @HH @`H @xH @H @H @H @H E|.@0>@I @ I @8I @PI| @l @\ @IZ IhI3@IX/ II3II5@IV JIA@JT 0JIA@@JR XJJL@xJP hJ@JLJ@JQ@JN JxJZ@L JJZ KJ\@JH @D HDFBIk@@ Kh NLL0LMLMRNp.H@HLX @`LH @ PD @xL4 @L$ @L @L @ @M @8M @ M @PM @hM @M @M @M @Op @hN` Ltvxz|~0@^ @N\ NM,@8NX @T M>(@n2@0OD @NB NNF@N@ NNF@N> ONJ@xR< ONJRNO@HO, @`O @xO @O @O @O @O @P @PP @ @8P @HR @hP @Pt @Pd @PT @PD @P4 @P$ @Q @(Q @@Q @XQ @pQ @Q @Q @Q @Q @Q @Rt @Rd @0RT @D @@ PNlp@> RxRaNo`R<DFB8R*@ ShTSTUSpUS8lnpJ(@0UtO PUS@Td @S` @T\ @ TX @8TT @PTP @L @TH @T8 @4 @T$ @ @T @U @ HU`|%`U0U SSHDFB@ V(WV@WXXVWWhXpV8lnpPT@ XtO WXV@pWd @V` @V\ @VX @VT @WP @L @XWH @W8 @4 @W$ @ @W @PX @ XW @`@XW 8X`|%X X@ @V(HDFBXV@ 0Y0ZYHZ[`YZ[([xY8lnpJP@@[tO Z`Y@xZd @Y` @Y\ @YX @ZT @ZP @L @`ZH @Z8 @4 @Z$ @ @Z @p[ @ [Z @``[[ HYT(HDFBX[`|%[@[@[ @[ @[ @ `Y@ \]\]^\^\8lnpJ(@@^tO `^\@]d @]` @ ]\ @8]X @P]T @h]P @L @]H @]8 @4 @]$ @ @^ @(^ @ X^`%p^@^ \\HDFB@ 8 _8`_P`ah_ a_8lnp(@pO `h_@`` @_\ @_X @_T @`P @ `L @H @h`D @`4 @0 @` @ @` @` @ h_@ P_HDFB 8hca8b bbic@cjXcpHtvxz@@d` @^ @hbL @Pb< @b, @b @b a|~*@X@b @b @c @(c @e @c @g c@c"@c @d @c @d d|c`|%0dcBb\^JPT2pgx(d`|%gdI@Xdt @hp c`dhHZ@dl @dh @d @dT @eD @0e4 @He$ @`e @xe @e @e @Pf @e @e @e @f @ f @8ft @hfd @fT @fD @f4 @f$ @f @f @g @(g @@g @Xg @ h @ g`|%gpg}pdN(@0>n@g gg@i ig@pi @8h @Phx @hhh @hX @hH @h8 @h( @h @h @i @(i @@i @Xi @ @ glp@ iii.<Dg@ iFB8kkklhmjmj8lnp`Xd@ktO kj@kd @0k` @Hk\ @`kX @xkT @kP @L @H Dk`|%Xmk @ l4 @Pl$ @hl j\h^JPT(@l @l @l @m @l @l @l @(m @ @@mt @d j@` 8lHDFBn oxnohpPnphn8lnpX\^@8otO XoPn@hod @n` @n\ @nX @nT @oP @L @H DPo`|%Xp8o @o4 @@p$ @o @o @o @o @p @ 8n`JdPhT(@ Pn@ (pHDFB@q rxqrrPqrhq8lnpZN(@8rtO XrPq@hrd @q` @q\ @qX @qT @rP @L @H DPr`%r8r @4 @$ Pq8qHDFB@  s`tstusus8lnpX\^@xttO ts@td @s` @t\ @tX @0tT @HtP @L @H Dt`|%uxt @t4 @$ @t @u @ u @8u @Pu @hu @u xsZN(HDFB@u @u @ s@ wwvwxvxv8lnpX\^@wtO wv@wd @w` @0w\ @HwX @`wT @xwP @L @H Dw`|%xw @x4 @x$ @ x @8x @Px @hx @x @ @ v(HDFBv@ Hyxzyz{y{y8lnpX\^@ztO zy@zd @z` @z\ @0zX @HzT @`zP @L @H Dz`|%{z @z4 @{$ @{ @ { @8{ @P{ @h{ @ @ y(HDFBy@ |`}|}x~|x}P~|8lnp@~pO }|@}` @|\ @}X @}T @0}P @H}L @H @D @}B }x} @@ 0~} @}0 @ @  (~`%@~~h~}x|(HDFB|@ @p(Hx`HpHtz@`\ @L @< @8 @4 @$ @ @  @ @8 @h 0|\@0>n@ @ @Ȁ @ @ @xt @ r 8%@p x %P>DFB@l -@j @d @ЁT @D @4 @$ @0 @` H@ @ @ (X@``(؆p8@xh @d @` @Ѓ^ @\ xЃ@(L @@H @X8 @4 @p$ @ @ @Є @ @ @ @ @0 @H @` @ xЃ@| @l @Ѕ\ @L @H @D @04 @H$ @ @ ` @ O Ȇ H|&>%@ ؆.@P @.@ h(/@`xP/7HDFB8X@p&JPT@t X@p @؈l @\ @X @H @ 8 @8( @P @h @ @ @ ؉ @` @ (@`P@ `p`   (\E00P((   ( $H XhDp996    ( @ H ` 6x             0 6@ P X `  x    - @           "9 @ H P h  p     (     6   (  .  S     *K(bTX*KJ` @0PX(`@H  2`E1  ;$9 @ 8P1p 811 1440/Pp1x1 84/0 :,8ZXx $12$1(2P"1h"12$12$1@ H1X1x 11"1"1(101P"1p"16     (8 @ P 9` 6 -@   6  9 @ HP2Xh p 8 *8   0 2"8 p = ==6(L828 =   (.88h x } @6P-` 9x     9*8(X h px & @ = ==8\uX628      0 =H  h =x = \u 6!2(!88!p!  x!!=! &!!6!4!0! "/ "&8"(H" X" "`"Lp"H)"L^# X#`#h# p# # # # !## # 8# $ " $0 0$% %%% % "0% X%&& "&8 & @'H'P' ",X'x'''''''''''(((( (((0(8(@(H(P(X(`(h(p(x((((((((((((((((()))) )()0)8)@)H)P)X)`)h)p)x)))))))))))))))))** * * **J(*(JX*.T**J*.T*+(+@+ X+>fx++ + $S+,,(,  8, :f@, :f, :f, $#- (- 0- @- P- `- p- - ---  "-S-S- . .(.0. 8.*H.x...8d. . .9.9/ 0/*@/p/x//8d/ / /9/90,(0,X0,0,0 0!01 1 (181P1h1 1 11 1111111112Pc2 h2 x2 $2 22  222 73 3 (3 783 P3 `3 p3 3 3 3 DX334444>84X4>x444 4455 5 85@5H56#`55552[5556 "> 6 ,H6$ x6$2 6 6 66 6  6 6 7772[7P7X7`7 ">7 ,7$ 7$2 7  8 (808 H8  P8 X8 `8h8p8x8 88 8V`8 9> 9`9f{999:: @(:H:X:p:: :V`: :>;H;f{h;9;:; @<0<@<X<p<x<,< < < < < < <0A< (=Pc8= = = = = =====>=(>=H>h>>>>=>=>  2> 0? <@? H?$.4?  ?@ @ @ 4p @X@ `@ <h@$8@  @@ @ <A H@A$.4A  AA A A 4pAB  B <(B$8hB  BBB  B B ,B$ C (C$0C$@C$PC `C hC  6pCC C$ C$8C$D :D(@PD,.4D( D$D( D(D(FD0E(8E(@@E,2E( E$E$ E$8E$E :F(@@F,.4F( F$F( F(F(FF G((G(@0G,2pG( G$G $ $G$ G(G(H( H, H(0H(8H(HH(XH(hH(xH(H$H$H$ H$=H$H(,H . I,PI, XI,hI, xI0"@I4I4I4I4J0 0J,8J(@J$ HJ$:PJ$0npJ J JJJJJ  "JJ8K(K :8K.]xK .4K KK KK4pL8L@LHL 8XL L.]L 2L MMM  " MHM8`M xM :M.]M .4M (N0N 8NHN4pPNNNN 8N N.]N 2 O XO`OhO  $pOO O OOO  O P  P (P 88P$pP(P,P,P(P$ P P P 6P Q$0Q(HQ,`Q,hQ(pQ$ xQ Q Q QQ Q$ Q Q$$7Q R$-(R$HR PR$ XR hR  pR R RRRRRRRRSS S (S 8S@S,XS S  S S S$@S(S(S(T$ 0T$8T PTXT `T0nhT0nT:T0nTU"A UHUPU"AXUUUUUUU0nU0nU"C V"CHVpVV V@VVVV WW W(W 0W@W HW PW XW`W xW W( WX X X X X X X X XXX &Y$(Y8Y @Y HYPY XY`Y hYpY xYY YY YY *8Y YY *8Y Z Z(Z0Z HZ XZ`ZBhZZ Z Z Z !Z Z Z Z Z Z Z Z [[[ "[ [([0[8[@[H[P[X[`[h[p[x[[[[[[  %[[ "[  "[[ \\ \>8\ P\_`\]  ]E8]1X] $p] ];]9]1]1]1^48^/X^0p^(:^1^$1^01^ 1(_$1H_"1p_6_ _ ___&A_`*l`&-H`&-p`&-``` ` 2` a  a aL^a haFfxa& aa aWb$( bHb Pb`bhb xbb2obb6}b> c`cpcccc c c cc c?c LLc U8d (Pd(hd,4d d 'd dd:neHeUPe2ohe2oeOeeff  f (f 0f8f &@f6`f4pf0f6f/f&f(f f "fX!gL^Xg g ggg g g g g !hh h 8h HhjB`hhhF$h "(i8 8i Hj PjXj`j "hjpjxjjjjjj  %jj "j  "jj kk kR8kk  kEl1 l $8l Hl;`l9l1l1l1l1m1 m4@m4`m/m0m*:m1m1n1 n1@n1`n6n n nnn2nn*on o/ o 8o :JHo o .o .zo o p 'p-8p Xp =`p(p p .}p *op q q q (q <n8q xqq qq &q6q4q0q6r/r&(r(8r Hr "PrL!`rL^r sss s (s 8s Hs !Xshsps<$s "s0s ttt "tttttttuu  %u u "(u  "8u`u hupuuRu0v  HvEhv1v $v v;v9v1w1(w1Hw4hw/w0w(:w1w1x"1 x6Hx Xx `x?hx$AxUxx x #x *y >N y`y hypyUxy(y (y ,4yy2oy2o0z2ohzOzzz zz &z6{4{00{6H{/X{&p{({ { "{F!{L^{@|H| P| `| p| | !||| "|0|}} "}}}}}}}}}~  %~~ " ~  "0~X~ `~h~~~~~ *~"J~-  9@ X h x*C "9    (($0XR`  ( *&H*x " / 2 ؂ "&D"G  <H؃ 20@H P`h p8x  Ȅ    +( @ H X)`x <  (%(` 7( 6@2P,`&p4Z #2QȆ `3hp x    !ȇЇ  "0؈  "8 (0 " 8@HPX`hpx  % "  ""J؊ 3`3  e08@ HPh  2. Rȍ  ,08 @H`h"Ў؎XEPX  .` Y8v@Аؐ  (  82HX-` @    p<Б@ 2TH 4(   *Г &  8T  GX x        Ȕ Д      (684H0` x ":!ؕ`h p    ! Ȗ ؖ "0 ȗЗؗ  " (Иؘ "8 "  ( 0 8@P ` `cpК0aؚ  (0 @H PX` h x  ! "  ț Л؛  `ch,_p     9Ȝ   ( 0 @ P !`px "     pcН@,_H x     ,P؞    ( 8 H !Xhp " x    `cȟ(0a0 ` p    Р  ! "  ( 08H X `chȡ0dС9 0 (8 @HP X h x ! "ȢТآ  % "  "@ HPh  (. RФ  ,3 8 @.Hx$إ "@PXxXE  $ 0* @ p*(jeX p '  " 'Ш W       (00 "HX,&h,&ȩ ة,(0 8 H FCX   Ȫ   LYX ` p"   ȫ TJЫ(:"04"p&( Ь Э@ x<ح P h 9 '  W د   ((8Ph  (p 2ȱ ر * & 08T8 Gp    Ȳ вز    ( 06@4P0h  ":!Zu@H P ` p  !   "ȴ0 ش  е "  "8ж "   0 @ \cP  Xȸ 8Pp     ȹ !ع "  ( 8 \cH  ,P @ PX `hp x   ! "Ȼл ػ   hc   ȼ мؼ    !(0 "8@ H PXh x hc  D+P` px     !Ⱦؾ "   ( Xc8  ,P(ؿ     0 @ !P`h "px    Zc  ( ,P8)hx      ! "   (0@ P fc` =  ( 0 8@ `hp x   ! "  % "  " 3H`x\E 0H ` lp XRCH` hpvZx2(( 088h *2p '02*/(B0nOx    ( !8HP h "x8  "  % " 9 <8 NX    q   6DF8@H P X h R(&$S( &HP &Hx &H zzPz P X (&8EX "x  "-    ! "(08 "  >(h D H D$9 $S 8@ H  PX $S` K K K     (;The Rainbow Analyst quality assurance add-in for Excel 2000EVersion 3.41 copyright Mike Shallcross, last modified 20 January 2006`XP]`]x]]]]]]] ]8]P]h]]]]]]]]0]H]`]x]]]] p (nDerX (mmentsMake initial validity checks'. !!'   #Found  open workbooks. $ $*Please close all except the two workbooks, $)or the one workbook with multiple sheets, $)that you wish to compare, then try again. Rainbow AnalystA@ry| ect9'd'k * %, '  KT'selected'Zformula groups'tP KT'all'Z formula groups'!KT'selected'Zformula/constant groups'KT'all'Zformula/constant groups'KT'selected'Zformulas'KT'all'Zct9formulas'KT'selected'Zformulas and constants'KT'all'ZDefaformulas and constants'(KT'selected'Z constants'.z KT'all'Zn constants'faults"KT'selected'Zvalues'#KT'all'Zzvalues'loS Invalid procedure call *. Rainbow AnalystA@rfor|hn` G  'j%   !!  %Only one sheet is currently selected. $ $,To compare different sheets in one workbook, $-please select the two or more worksheets that $$you wish to compare, then try again. Rainbow AnalystA@|kCheck both workbooks >!' old mat in '$! e$!'PdX$!'0k8'H  p $B@ At'* HG|j H GrjjAv HG|jYZ _ H Grj' $B@kp Attw'* HG|j  H Grj'Av HG|j  H Grj  ' $>' e000000 $B@'' @ 0  @$>'n''  !00 $! n'y0k(   ' n' e , $ n''d ,  n'k  'kxp !)-Unable to find the following worksheet(s) in : $ . $ $ Please select other sheet(s) in  , $then try again. Rainbow AnalystA@|PkH $B@k0"Check if selected range > one cell'l x! 'l BDo you wish to limit this function to the currently selected range $instead of the whole worksheet? zRainbow Analyst$',  |G|j  ~G'ljk Get user preferencese is CompColour %%:!' G.'hcG $ $and to colour differing cells.'hjrd RowInsert %%:!'4do G'cG RowDelete %%:!'jH j  '1Click OK to compare  $in  Z sheets in workbook $  $ $%with corresponding sheets in workbook $  h Rainbow Analyst$'d  ,Click OK to compare  $in  Z sheets in workbook $  $ $ with sheet   h Rainbow Analyst$'Pk  |G|j,Initialise report sheet and range to compare<$ %!!B@B@ %B@F  . Differences (A1 %:!"($G 3:3,5:5,7:7 %:!"(&  ])@A:A %:(( B:C %:((B@H@D:D %:(( E:E %:((WinF:G %:((#,##0D:D %:(* .D:D %:(, 2A:G %:(0A:A,F:G %:(4d A:A %:((:B@ B:C %:(( (B@D:E %:(( 2A:E %:(0jMiA:A,D:E %:(4owk 1:7 %:(4 lGrange 2 in  Z'Zj2  Differences in  between  Z sheetsA1 %:(G A Workbook 1:A3 %:(em B3 %:( Workbook 2:A5 %:(B@H B5 %:( WorksheetA7 %:(dlldh Workbook:A3 %:(G B3 %:( Worksheet 1:A5 %:( B5 %:( Worksheet 2A7 %:( k  '2Cell 1B7 %:(Cell 2C7 %:(GDiffcesD7 %:(LastE7 %:(38 Contents 1F7 %:(<$ Contents 2G7 %:(dCell 1B7 %:(Cell 2C7 %:(G Contents 1D7 %:(6  Contents 2E7 %:(tPk8 $B@Loop through sheets:B@',''( @ 0 @$>'n' j , ',( n , %(4  $B@  ! $! n'y0k(  $B@ n'd @  , ', n , %(,''kk $B@H n' 4  2If twoWkbks is False then skip first sheet, or ... 2 Sheet not found , %( , ',8kd Do comparisonG ('    l      A 4  H Grj  $  ,   %!'>   %!'p  %!'nj $B@ Deleting rows  to   in  >! ($ n$B@H $ $ %:!B@k( N1:P1 %:!B@ ,'k , GyjYM ( No differences found , %( , ',Hkkxp , 2,Too many differences, comparison aborted at $row   in sheet  . Rainbow AnalystA@ e@ $B@  !O $!'n(H' @ 0 @$> n!'y(k  !D , ',! n , %(< Sheet not found , %(up , ',kkJxLoading report sheet ( L !!!'     %!'9  A@  %!'9  %!'n6 Deleting rows  to   in   sheet  n (!D $B@ n$B@H  $ $ %:!B@k  8!    %!':B@  (  %!' (  %!'n  Deleting rows  to   in   sheet  n (essi $B@ n$B@H  $ $ %:!B@kkxH1:P1 %:!B@erLoading report sheet (k0 $B@$<$B@H% 2 %:B@H% B@is licA1 %:B@H !L(N%K !L(P'2 ( at  G different group'ZcG different cell'Zj# (G Z found.'ZcG Zs found.'Zj (#,##0$ Z Rainbow AnalystA@5.|r Hse e !'H-dig !'Dion !'F$ !'BRaink8 *'1Error did not occur within cell loop in DoCompare Ha st ( of"& Error number H: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@Codek.|k H User has pressed Ctrl+Break! Completed comparison as far as $cell  * in sheet  n. Rainbow Analyst F BA@Jk (staff   # + 1 5 Error number H while comparing $cell  * in sheet  n: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@.|o  ]X]]]]8]p]]]]0]H]`]x]]]]]]0]H]`]x]]]]]]] ]8]P]h]]]]] ] ]8 ]P ]h ] ] ] ] ] ] ] ]( ]@ ]` ] ] ] ] ] ] ] ]P ] ] ] ] ] ] ] ]0 ]P ]h ] ] ] ] ] ] ] ]8 '' ColsCheck %%:!' worksMinCells %%:!'MaxIdent %%:!d'~ RowsCheck %%:!'iptionMinIdent %%:!d' h b   &   rInitialise colour arraysas CompStart %%:! &  '  |   't  %%!5 +iq5 +5 +edq  %%!  +inte  %%!  +'d   %%!  +ediate  & G  'jKT  t'$'J $'PT$'Tem$'`$'d$'hw kXkPInitialise ranges to compareded nu  $%. &  $%.ormula''' ,' lvalue 2 %: !$.lc consd !.lkh lG 2 %:%.lj l!'ell l!6'  l!!  ' cel  l!8!  ') lInva 2 %: !$.lRaind !.likp lG 2 %:%.lj l!'  l!6'Clic  l!!  'la g  l!8!  ' sel   G 'cG 'jRepo   G 'cG 'jnd t   G 'cG 'juniq   G 'cG 'j Rain  'k    Clic  d in''khLoop through cells  ' ' '_(''  '  're  'ncComparing cells in  row   of   (  '  G'cG'j  h to u  +our an k    d   %. !F'yst !'m   %. !F'G !'h $ $ X ''J X ''TkP           %''''        %!F' j G  'jt   %!F'X$ G  'j    '%  G  'jk    +     +# ' G'j           '_X  '!   %!F    ^9''     Pަ(   %!F''h(    $ to  'd ,    $G  'j dk8 0    alys ' ''xkk   %!F    '\''     !(   %!F'X9(    $  '+    $G  'j k    eets ' ''xkk    Gxj   kX !  Inserting    rows in   sheet   (% B@.lj  $  $ %:!B@ ,  G , ',j Rows  to       inserted , %(  , %(  , %(  , %( , ',    '    'ys ' eur  Inserting    rows in   sheet   (( B@   $  $ %:!B@ ,  G , ',j Rows  to       inserted , %(  , %(!  , %(y.V  , %( , ',    'mber    '$ 'k   G 'cG 'j infkH "  ' 'k      !> !>G 'j eD   !>  !>G 'jkp    * eet      %.   %.   e   %.   %. f 0 P i p:dH   %.   %.nf,Record matching column copies in both sheets   A@ 6Because ColumnDifferences only works inside used range(    %   %$:( !FG !6+j d? .' (     %$:%:.?' (    %   %$:,  $G !6+j?k?   6Because ColumnDifferences only works inside used range(    %   %$:( !FG !6+j@>d8> .' (     %$:%:.=' (    %   %$:,  $G !6+jX=kP=    $'  $&Record stage 1, difference copied down  +d< + + +k<</Record matching row copies of the column copies    $ $'   %.8 8!F(3Because RowDifferences only works inside used range 00    %   %$:4 !FG !6+j8;d0; .' 00 8   %   %$:%@.:' 00    %   %$: 0  $G  !6+j@:k8: $'   %.8 8!F(3Because RowDifferences only works inside used range 00    %   %$:4 !FG !6+jH9d@9 .' 00 8   %   %$:%@.8' 00    %   %$: 0  $G  !6+jP8kH8$Write details to report sheet   $' '  b  '7 $'J $'P $'T $'` $'d $'hk`7 ' $'  %!'   0 $  $ ,(Record stage 2, difference copied across '  +  ' 8   %!< `G J9j< dG P9j< hG T9j<   +q5k5k55   %( ,  $!D  %(kX5P5kH5' 'k05Record row copies in sheet 1 $   %.8 8!F3Because RowDifferences only works inside used range$  8   %$:( !FG !6+j 4d4 .' $ 8 8   %$:%@.3'  '2Because merged cell returns difference with itself  +$  8   %$: (  $G  !6+j2k2k2Record row copies in sheet 2 $   %.8 8!F3Because RowDifferences only works inside used range$  8   %$:( !FG !6+j1d1 .' $ 8 8   %$:%@.p1'  '2Because merged cell returns difference with itself  +$  8   %$: (  $G  !6+j0k0k0Write details to report sheet $ Find unused colour'   ' G'j'   $2Ensure colour differs from other cells on same row     $ 'yP/kH/@/k8/   $/Ensure colour differs from this and later cells$ in row above     $ 'y.k..kx. Gyj`.     ' es , $'   e , $' 'd- , 'k-  8!D'  '' kX- $'J $'P $'T $'` $'d $'hk, ' $' $''   $ $  $  ' , +  '    %! `G J9j dG P9j0 hG T9jq+   +k+k++  $!D , %(  $!D , %(  , %(  $!D , %(''  , %( *''  , %("x*' ( '( , ',kH*d@*   $!D , %(   $!D , %('  , %('  , %( ( '( , ',    %! `G J9j dG P9j$ hG T9jq(k(k(' e'k((' , Gxj     &Please note that there were not enough $+colours available for full colour-coding in $the row(s) in sheet  n $starting at cell reference . Rainbow AnalystA@kP'....... .|'' Continue if no differences found ! KT&KT&KT&KT&KTp&KT`&KTFormula too long , %(  &KTFormula too long , %("%n%k%  G'j '*d%  $!D'*kx% !'H !'D !'F !'B....... .|$o$x]]]]]]8]X]p]]]]]] ]8]P]h p (nr@$ (Make initial validity checks'HAt HG|j H Grj B >%@'6 6'>  'Click OK to find possible references to $ >! linked file(s) in this workbook. Rainbow Analyst$'  |G|jInitialise report sheet %!!B@ %B@F >!' Links Found (A1 %:!"($3:4 %:!"(&A:A %:((B:C %:((<D:D %:(( 2A:D %:(0A:D %:(41:4 %:(4 Links in .A1 %:(LinkedA3 %:( source filesA4 %:(Possible link referencesB3 %:(LocationB4 %:( Cell / NameC4 %:( ReferenceD4 %:( .$B@','( ( > ($6'8 8 8 8\$F $D'4 , ', 4 , $%%( 4J~L~~H$H'& &J?L~?H$H'& &J*L~*H$H'&'0 @ 0 @$>'n n$B@H'*'$_Found $ references in  n to  4 ( * &N RP VT ZX\ !%L., ,G ,!D'*jd ,.. .` !%^., ,!D *G.,jk ,x ,!>e 0 n 0G , ',j n , $%%(k ,!D , $%%(' ,!F , $%%( ( '( $ '$ , ', n'0k`XP'n':'$ 2 >!b!Found $ references in defined names to  4 ( 2 >%b!d'< <$= <$'< <$'G' <'<jkH < 4 f : 0G , ',j[Names] , $%%(k 2 >%b!': : , $%%( < , $%%( 2 >%b( ( '( $ '$ , ',kJLoading report sheet ( .$B@$<$B@H 2 %:B@H $B@A1 %:B@H !L(NK !L(P'2 ( (G possible link found.'ZcG possible links found.'Zj (#,##0$ Z Rainbow AnalystA@.,..|@r8 H !'H !'D !'F !'Bk HGJj H No links found No links found in .. Rainbow Analyst F BA@|(k  nG defined names'ZcGsheet n'Zj (  ! ) / 3 Error number H while searching for $ 4 in  Z: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@.,..|o]]]]] ]8]X p (nr@ (Make initial validity checks'HAt HG|j H Grj  Click OK to list all comments $(cell notes) in this workbook. Rainbow Analyst$'  |G|jInitialise report sheet %!!B@ %B@F >!'Comments (A1 %:!"($3:3 %:!"(&A:A %:((B:B %:((C:C %:((D:D %:(((E:E %:(( 2A:E %:(0 .C:C %:(,A:E %:(41:3 %:(4 Comments in .A1 %:(SheetA3 %:(CellB3 %:(ValueC3 %:(AuthorD3 %:(TextE3 %:( .$B@','( @ 0 @$>'n n$B@H , ', n , $%%('l n !r l 'lFound l comments in  n ( n!t.8 8!D , $%%( 8! , $%%( n!v'j n!d'h h j: h j $'hk h$ $b h$'h` n!v , $%%( h , $%%( ( '( , ', lNo comments found , $%%( , ',kphJ`Loading report sheet ( .$B@$<$B@H 2 %:B@H $B@A1 %:B@H !L(NK !L(P'2 ( (G comment found.'ZcG comments found.'Zj (#,##0$ Z Rainbow AnalystA@.n| r H !'H !'D !'F !'Bk HGJj nG'ZcG in sheet n'Zj (   $ ( Error number H Z: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@.n|@ o8 p]]]]]](]@]X p (nr (Make initial validity checks'HAt HG|j H Grj  Click OK to list all names (e.g. $range names) in this workbook. Rainbow Analyst$'  |G|jInitialise report sheet %!!B@ %B@F >!'Names (A1 %:!"($3:3 %:!"(&A:A %:((B:B %:((<C:C %:(( 2A:E %:(0A:E %:(41:3 %:(4 Names in .A1 %:(NameA3 %:(SheetB3 %:( Refers toC3 %:( .$B@','( 2 >!b!Found ( names ( 2 >%b!': :! f'x x : x $'f : x $':  f$'G f f $'fjd'fk 2 >%b!d'< <$= <$'< <$'G' <'<jk : , $%%( f , $%%( < , $%%( 2 >%b( ( '( , ', JLoading report sheet ( .$B@$<$B@H 2 %:B@H $B@A1 %:B@H !L(NK !L(P'2 ( (G name found.'ZcG names found.'Zj (#,##0$ Z Rainbow AnalystA@|r H !'H !'D !'F !'BkX HGJj (   " & Error number H: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@|XoPp]]]]]](]@]x] p (nr (Make initial validity checks'HAt HG|j H GrjAv HG|j H Grj !! B3 %%:!'~''  !!  %!'n  n' es , $ n'   e , $ n' 'd ,  n'k*+Click OK to save formatting information for $the currently selected sheets. $ $.(This will overwrite information already saved $for  ~ sheet .) Rainbow Analyst$'d~+Click OK to save formatting information for $the currently selected sheets. Rainbow Analyst$'k}  |G|j!Delete existing saved informationSaving formatting information ( !! (  !!  %B@ } (k}B3:B999 %%:B@ .B3 %%:(6Loop through sheets, checking to avoid duplicate namesGuide+Colours+ Preferences+Control+Temp+ @ 0 @$>'n n$B@H'_{  n'z'|d{  %!'zkh{  $ z $X +'|k{{ |' e !! 'dz  'kz  !!  $  %(Hz!Add new worksheet and copy format !!'  %` !B@  ' n  %( .$B@ n$B@H !!D' !B@F     %%:B@ (    %%(x *Formatting information successfully saved. Rainbow AnalystA@|xrx H !'H !'D !'F !'Bk0x HG|j n ("& Error number H: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@| wkw H  ('-1 Error number H while saving $information for sheet  n: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@ku|uou]] ]8]P]h]]]] p (nr`u (Make initial validity checksB3 %%:!' !! )No formatting information has been saved. Rainbow AnalystA@|xtkpt . ,Formatting has only been saved for sheets in $ workbook  . Rainbow AnalystA@|sks'HAt HG|j H GrjAv HG|j H Grj+Check if user has selected range > one cell'l x! 'l BDo you wish to limit this function to the currently selected range $instead of the whole worksheet? zRainbow Analyst$'  |G|j  ~G'ljkr&Set up description for selected option *' KT cell colours'KT cell patterns'KT cell colours and patterns'KT font colours'KT cell locking'Sq Invalid format type . Rainbow AnalystA@|pnp(Get confirmation of changes to be undone 0  Click OK to undo changes to  $!in the currently selected sheets. Rainbow Analyst$'do Click OK to undo changes to  $ in sheet $>. Rainbow Analyst$'k(o  |G|j"Start loop through selected sheets'( @ 0 @$>'n n$B@H'  !!  %! n 'yPnkHn@n  'No formatting has been saved for sheet n. Rainbow AnalystA@dm    %%!' !!D ' (The used area of sheet n has been $ changed from   to  !!D. $ $%Unable to undo changes in this sheet. Rainbow AnalystA@kXlkPl  l 2 %: !$.ldk !.lkk lG 2 %:%.lj l! l!!  'p KT AKT AKT AKT AKT Ank H Grjkjj 2 .$B@$<$B@H 2 %:B@H'2kxj ( (G cell.'ZcG cells.'Zj  Changes to  undone in $ (#,##0$ Z Rainbow AnalystA@|iri H !'H !'D !'F !'Bk8i 8 H ("& Error number H: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@k0h|(hk h 8!D'* HUser has pressed Ctrl+Break Completed formatting as far as $cell  * in sheet  n. Rainbow Analyst F BA@|(gk g (  # + 1 5 Error number H while formatting $cell  * in sheet  n: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@|eoe]@e' 8 l  8! 8!'#Undoing changes to cell colours in n row   of  p (k(e 8!D  %%:!!'J 8!5 J J9 ( '(kdqdd|dd !'H !'D !'F !'B|PdoHdX]0d' 8 l  8! 8!'$Undoing changes to cell patterns in n row   of  p (kc 8!D  %%:!5'P5'TqHc 8!5 P5 T P9 T9 ( '(kbqbb|bb !'H !'D !'F !'B|bob]0hb' 8 l  8! 8!'0Undoing changes to cell colours and patterns in n row   of  p (ka 8!D  %%:!5'J5'P5'Tqha 8! 5 J5 P5 T J9 P9 T9 ( '(k`q``|`` !'H !'D !'F !'B|`o`H]p`' 8 l  8! 8!'#Undoing changes to font colours in n row   of  p (k_ 8!D  %%:!"!'J 8!"5 J J9 ( '(k`_qX_P_|H_@_ !'H !'D !'F !'B|^o^] ]8^' 8 l  8! 8!'#Undoing changes to cell locking in n row   of  p (k0^ 8!D  %%:!B!' 8!B!   8!B( ( '(k]]|]] !'H !'D !'F !'B|`]oX]P]]]]]]] ]8 p (nr\ (Make initial validity checks'HAt HG|j H GrjAv HG|j H Grj"Check if selected range > one cell'l x! 'l BDo you wish to limit this function to the currently selected range $instead of the whole worksheet? zRainbow Analyst$'  |G|j  ~G'ljk[&Set up description for selected option %,' KT&select a new colour and/or pattern for' re-coloured'KTselect a new font colour for' re-coloured'KTturn on cell locking for'locked'KTturn off cell locking for'unlocked'KTclear cell borders for'cleared of borders'S`Y Invalid action type . Rainbow AnalystA@|YnXGet new colour etc if required  all cells which match cell *'Z le"all cells in the selected sheet(s)'ZdHXall cells in the selected range'ZkX  Click OK to  $ Z. Rainbow Analyst$'  |G|j @B@H @!5'X5'\5'^qPW  ( @!  %!R'f5'J5'P5'T X9 \9 ^9qV 2 %:B@H ( fG|j  X J   G X'Jj  ^ T   G ^'Tj J X'` P \'d T ^'h ` d hG|j'' `colour'- cell colour from X to  J $'kXU d   and pattern'dUpattern'kT - cell pattern from  \ to  P $'kT h   and pattern colour'dPTpattern colour'k0T - cell pattern colour from  ^ to  T $'kS J-4105L automaticH$H' J-4142LnoneH$H' ` d h!You have selected to change: $ for cells which match cell  *. $ $!Click OK to proceed with changes. Rainbow Analyst$'  |G|jd(R")0<You have selected to change: $  $/Do you wish to change all the cells which match $the   of cell  *? $ $2(Click No to change only those cells which exactly $ match cell  *.) zRainbow Analyst$'  |G|j  G'jkxP e @!"!'Z @! Z9  %!R'f5'N X9 \9 ^9qP fG|j*,Do you wish to change all the cells with the $same font colour as cell  *? $ $2(Click No to change only those cells which exactly $ match cell  *.) zRainbow Analyst$'  |G|j  ~G'jkN"Start loop through selected sheets'( @ 0 @$>'n n$B@H l 2 %: !$.ldM !.lkM lG 2 %:%.lj l! l!!  'p KTAKTAKTAKTAKTAKTAKTAnL H GrjL 2 .$B@$<$B@H 2 %:B@H'2kpL ( (G cell 'ZcG cells 'Zj (#,##0$ Z . Rainbow AnalystA@|KrK H !'H !'D !'F !'BkXK 8 H ("& Error number H: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@kPJ|HJk@J 8!D'* HUser has pressed Ctrl+Break Completed formatting as far as $cell  * in sheet  n. Rainbow Analyst F BA@|HIk@I (  # + 1 5 Error number H while formatting $cell  * in sheet  n: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@|HoHP]G' 8 l  8! 8!' Re-colouring specified cells in n row   of  p (kHG 8!  `5 X d5 \ h5 ^ `G J9j dG P9j hG T9j ( '(kxFqpFhF|`FXF !'H !'D !'F !'B|FoF]E' 8 l  8! 8!' Re-colouring specified cells in n row   of  p (kPE 8! 5 X5 \5 ^ `G J9j dG P9j hG T9j ( '(kDqDD|DD !'H !'D !'F !'B|@Do8D]@ D' 8 l  8! 8!',Re-colouring the font of specified cells in n row   of  p (kxC 8!"5 Z N9 ( '(k8Cq0C(C| CC !'H !'D !'F !'B|BoBX]B' 8 l  8! 8!',Re-colouring the font of specified cells in n row   of  p (kB 8! 5 X5 \5 ^ 8!"! Z N 8!"( ( '(kAqAxA|pAhA !'H !'D !'F !'B| AoA]A' 8 l  8! 8!'Locking specified cells in n row   of  p (kh@ 8! 5 X5 \5 ^ 8!B( ( '(k@q??|?? !'H !'D !'F !'B|?o?]Hx?' 8 l  8! 8!'Unlocking specified cells in n row   of  p (k> 8! 5 X5 \5 ^ 8!B( ( '(kp>qh>`>|X>P> !'H !'D !'F !'B|>o>`]]]=' 8 l  8! 8!')Resetting borders for specified cells in n row   of  p (k0='     8%5 ' 9k<q<< G ( '(j<|<< !'H !'D !'F !'B|@<o8<](]@]X]p] p (nr; (Make initial validity checks %,'* * *' * *e'dX; Invalid procedure call *. Rainbow AnalystA@|:k:'H At HG|j H Grj * G-Do you wish to set a password for protection?'ZcG-Do you need to enter a password to unprotect?'Zj   Z $ $(The default is no password.) z  Rainbow Analyst$'  |G|j   * G to apply protection:'ZcG to remove protection:'Zj Please enter the password ZRainbow Analyst$\' G|jd8'k8 * G Protecting sheet(s) and workbook (cG"Unprotecting sheet(s) and workbook (j @ 0 @$>'n n$B@H ! * G  B@jd7 * G  B@jkX7P7 >! * G  >B@jd7 * G  >B@jk6 * G protected.'ZcG unprotected.'Zj "Sheet(s) and workbook successfully $ Z Rainbow AnalystA@|6r6 H !'H !'D !'F !'Bk5 HG|j H  ('-1 Error number H while (un)protecting $sheet  n: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@|`4kX4oP4]]]](]@]X p (nr4 ('' !!  !!B2 $%%:!B2 %%:!  ' 'k8303k(3   ,Please click on Rainbow and View Defaults to $-load a copy of the Default Colours worksheet, $then try again. Rainbow AnalystA@|@2  e Found  copies of the Default Colours $ worksheet. $ $/Please close all except one copy and try again. Rainbow AnalystA@|P1kH1 $B@' 8 %!  8 !% 8!D %:! 8!'y0k00  %This sheet has been modified at cell 8!D. $ $Unable to update defaults. Rainbow AnalystA@|/d/*Click OK to set new default colours and/or $$patterns as specified in this sheet. Rainbow Analyst$'  |G|jk/Updating defaults (  & &   %%!   %!!9   %!!9   %!!9q0.   %! G  %%(cG  %%(j   %! G  %%(cG  %%(j   %! G  %%(cG  %%(j,    Default colours and/or patterns $successfully updated. $ $%Do you wish to save the new defaults? Rainbow Analyst$'  Saving defaults ( %!!B@ ( B@ (kP+$ >B@B|8+r0+ !'H !'D !'F !'B HG|j (   " & Error number H: $ D $ $#Click Help for further information.   Rainbow Analyst F BA@|)o)p]7Utility to set defaults using values in columns G, H, I  & &  %%'J  %%'P   %%'T J P T  %%! J9 P9 T9q(d(  %%!5  %,5  %,5   %,q(k((o' End of Routines02'(Attribute VB_Name = "Routines02" 'The Rainbow Analyst quality assurance add-in for Exce@l 2000zVersion 3.41 copyright Mike Shallcross, laVmodified< JanuaryG6  OptGExp licitBase 1Compare TexC#8Sub C@ells(cuRef As Integer) B Dim S heetsBo oleancolourDiffmpType-/ >Sng!endRs Lo msgf)  2 notFound prev5?Ct "@zgeSelecth@0GrowDBjInserptWorksbHC@5B'Do=N'BOnBgcMRTwothisRK1 JDfLwoWkb kӏuFReply!w >A6Ŕ6w#,Num!*)C*Apama5.E@nableCa}lKeyxlErrorHandlDer#On  pGoToC ScreenUpd ng FalsFe'Mainitial v dachecksCm)ook="x$= IIb@s.#If > 2 ~a MsgBox prt:=""K" && " open wV Chr(1p3) _ e&6 `P@@cl&o ept4 ttR ,"7~ o`\ with multiple \s_ "that yoush toE",n t@a"g/.",Buttons:=v"blamH, Title),D7$Exit Sub&EBj4=n4$#j= TruDH/HLEIfc<"= +G:C@3e :dà Ce# B1 ҥ=bs\Es(! 8a g`roups 2ca !  X 14  d%e| /c#tant 15q?p@ns"2@= #<23a2߂ O"rA"+_ _e_p]s `kO wYOaq23?Ќ)vU) 3O 1M?`3_ I`tue _ 'XuInid!vceduW u&X@r_f_f_ftX\f`]cFg(?V[8= F5 -Pfd8CR|ActiveWindow.ed <߉܉OnR~ is current`I.E@gaՐfe$ y/r0mo`Ӊatώωeωω`o#o#o#ʼn#'Cѩ bo0a@Ԣ.Aif'$A=!6'(1)b`*eq= Workbooks(2).N@ame E lsH4wkbkPTwo 1 nd IftsubErrorZ0"If twoWs(True A`allSheetThen1t~).Acti(vatCD CPheckJ(T)aIcell|""-1 ? Exit Su"b> 0GoTo sHandlIProtecFt8OneEϞPKaJ\I JHrbHFa@ncsAKs(1D@ notFouY@a= IBCt7ˁF@C$um@@o num/ curr s(EHA E"B3 wkEAbs.k $('c|eB  Atǯ\ Nexp`* :`J7 HPP?4 d@( & "," &r(13) A Laa  *+ 1k%M982<>@j0(MsgBox prompt:="Unable to fithe followi0ng w(sp) in-:x" _o90)$. 4 "Plea@se sel or 1@  "n try again.",Buttons:=vbExclamation, Title"Rbowp{alystXtQ?sAca@ /j'b} ifDed range > one ajRSy0= xM" .0> ~ GuserRepl6y 83%(5% "Do you wish&limthis fuJnoo  3entS&P &"inste0ad op,whvo-6,?oa(YesNoCan0y/An#c`iv^bR7 N~oP #'0 Get@ 0%1%qQ.{r"$t.).Îwp$!g0 'is st` skip firsts:, or ...= &333"B not fq<_e>:GJ\'DoarisoٱKbNCQvKKCaPrDoCare(w,F owInson,=q1colourqs, X, #?$OsubErr>  GoU2Han dl 6 rowDation$AP 0 Then  81 = rptSheet.@Cells(2, 15).Valuecurr;F4FWorkbooks(wkbkOne).Ac tivat{Application.StatusBarC"Deleting ro@ws " &1, _e&to 2 " in KeX.NamQs().SMctB/.RaPnge( 1),!c 2 ).Entire.H.End If(8Nex.C+"N 1:P1"Columnprev#mH@KQ"@C 6500 Exit ForKA Count@VCt„, 2İ"No differe@nces fdN")= E+ 1 8[<MsgBox prompt:="Too many, carison aborted at`Zpb& Chr(13)!_h"_䂅asA#"Two!."SButtons:=vbExclamv, Title Rainbow Analyst)Else(all6s/Tr|ueL7 C Dwk"Num 10 To Abs.BD36'@6)bFABFa?   nu~mKHs() A' sg"plJ~ bp1p x "#;notxxAag#EyRep`m :aLoadB ?7$a ,pw= 1`endUsedbY...(5= = @18 Step -J2'0f3 $UX  #?T5 Q:ARSbT,fG/N߆&O{ φφ\OOnD"woW0^f+c+FϮ!6+$+t?,Oϗ",1S,,," B,_,+D",e'";-?z-ϴG-----D=.{.UDHOOtde|Ls")+_rAQыv9"AÙ9PageSetup.PrintGridlin@qZooq75Cv c"Tvcre enUpdng@@Type < 2msgTvt group" ہ e@cGˠhŵmsgText & " found." _ AElse =$s`MsgBox prompt:=Format(cellCt, "#,##0"), Buttons:@=vbInfAion, Title:="Rainbow Analyst"ySet rptShe= NothingExit Sub Erro`rHandII f sub = 0 Then  .Number DescriptXFileHelp Cont|= %̓End IfZHNam)"" [' or did not occuPr wi  loop in DoCare< D<> 18Applica9.ScreenHUpdng@8T\ru L"C'n S&G`& ":N& Chr(13fB^L "C.k W@r furtherBF."E`Excla@z + vb8 ϕ A:==, xtGq A/GdKMEJ=A'Us'has~essed Ctrl+Br8eak-@Nle tcOison `far2@?"X"` GZs"urr@t:9_@r43]3Resu`wRepor%6lm+1k whᐤ.ngN-,,ow H{vu:h:t,sc`?>l>on , (!6Type As Integer,ހ0Work_TrangeSelecmBoolearowIn`wA8colourDiffs/@wkbkOnb Str w, R<HqTwo:) 0StPec newCs(1 T o 24)Va0rianTOPt2ns Pa tternLo#dset?s ?D  c 'titardd Dim}Array1(y2Jent1q'nt2FValueOolq(ce(Ra- !   .IndexqopyDoC0nend#qK sYolRRqs ow  eaJmp !mO?2Tohtal?i!Asom las0o maxSkaPSJlqmin n`C`'o PKx 2"44e'/ 0,olR umV.? umߐ ODU~o B2er5prev2*!!#?>ptIU+Y{;XTns`eim startRow As L@ong D1h24thi sCell2Range4o2 AIndex4Integer 66Sheet5Works_6xaoursVStricunt qxsaBoolean8On Error GoToqcaleCQ= 0eJmp numsTYbook.cs(3). ("Check").Valú@lMinvsmaxSame^MaxIdentE / 10?4 G_  P0min in RecBArray1(1 @cFols)^2If colDiffB4rue And`K0 Theā'Init@ialise a"szmpS[_+ grp01* - 2FQr= !24Kwl)+B WHithismT2)."K(D , Vq!rioDenew s().rPPatterntn E>q set p4a( q=o&4z > 0$Va@DNgo5{6'6oR[+ 23np W@`\Next6zmpType}+2wA,RPT1,1@$12'D)FJ fs( 0[.IfIMBrрs toAmpargSet j1 As(wkbkOne)l/z2TwoprevCozM#{Fua\!\""xurrS= c"SelectedT_K^! b "Ns 0PS|%Nv),(.Used~&Els-# . r Is Nopng#4 is r T^1, )8.3 9Sumsend7 h sPa- 1S0 19n? ? ?a4G2OG2OO]=Or# O OD OA:O&YC@?O=L62 OOf<;07ow'P$  2AC12j@% LJ>!GCODIG󛺲+S4"C2 D 8vM d=/o|< |i@mnO 1crowB®[^forIH Q7v!, !22 'Loopp?rough ā,+thisRow1 =  e`2 Do|cellFoundAHFalse4opyDone20+ 18,1  2 Application.StatusBarn"Comparing s in " _=i& sheetTwo &hrow& obf end If colour Diffs9True Then2prevInde~xx %1ǂ"A2 E dFor ne`xtCol4!o> X 5 -ArPray(F$,E)0 NGE y2)KZCStrI k a2 1@ !3@q2 A Gpp*1cK< numLs= {Inser!@!tu!@ `!J'SamhBG"xe @iD 7"ck )sTA a:$ :""$!ga#.ll*   SO2aR.BumGaM=DdA^$F` "V,1rEj1( -V0|e2!c~2?d5@96 {'0k'0 !(11 >B ]s 2x)D;R/ X maxR~`l` .?u'8V5tt>=\X9r eOA= RRols vk㱄S#VCL1/)\sM+<7t>RO f/f( #%H ? R#  RO_K=/Bd) Fmin/B 6u7o F_XWTExit K{o \VL4`>9 `+=!u,b/I_L_L0p_L:C\ #Cells(nextRow,  Col).Formula Ifhntent2 <> "" Or cYAr0ray1^U _Nn- thisCQThen#>numFound = + 1# g>=cgebJSa\meONEhIfbN7(@E/G) > minB#ZAwCo|I ZValue2A row v29Exit Do U@7PA+AVs B|"Loop W0hileҁ< endO.U#@!F1Application.StatusBar0"Inserting " & E W)w&!s inwk bkTwo " sheet" 3'Sa2.ActivateTeB.Range(/, 1),}Ꞁ1).Entire.!-curr`>prevC=EǠb{rpt$, 2).c2|"s+1b.tob(VC+=") i"Ced"!11;?6 $_(13G?d`.%+ s%( &2="71 `@o Else2@ @@0 7@@6 B#@Oner )`? 11@ @2@@0D@ @@wZ%nbo0!F, H,o<E@v22@2QZ(o>w@@BO C 14@D516@e@@3@1 =w t D?p@ 0+ 2lU k "aF- 3ompType34JBr@[= 11 = 2ϔCP C.Hasɐ Fa X Aa< R"a% [$^c 3 (xQc? a0 True)2 / % qOO_OCP_0oJ( 20?(pyDo l= /=%q}starSotherQ#1QTp!s Z1  Set otherCell2 = thisS@heet2.Hs(@Row + 1, startCol)  ElseIfl@> prev pThentG 1 1 -$U*ReDim indexForms(1 To endHrow12ٗ)^[2'Record matching column!piesk b逼 sAs vxAx'Bec`ause @Differenc@ only work#side  d range#@ Each In R_ a|, w ]E )._ula <> ""  n" -)L0?Next_fWK;A;=1errorJmp@ N >Ʒa!5+_*&* %,%).NW( @>Coaj\1:h3 \et\,\w  [(Not (Interselct"*AS,ADD)0 Is !))g!)Ο_/]End Ifoy<}>1#2~QQQQ#QgG#ߒ2Q?L` mQQl 0YO?e ged&d dow(I `- ?Gw_2(_W?%o)=/gѼtching row copies of the!hlumn  For nextCol = starTo 8end(zXIf@ indexIms(K) < 0` Then@DformIE1 L1M#DSet @oneCelethisSheet$1.s(Rotw,w)*o*.JulaQ""(np'Because @Differencnly@ worksside d rpangeOA& Each@is?pIn RB=A >_N),߂?idC)d&fAuA<gq:)~1gONc Els({(A!H= o`~ra ' errorJmp@3NsLEM&XL #L1)).Kp({@O<`Cb1:" )0vf_Y %v8 F* vIntersect aW,؁dZ) Is NZ?_Hn ,ms1F .x_ y%End If? &2@qE2?e rq9d,PaKY2o~_VpDU /oonoO4odO4#0A,oC4oia.j &32 Q9(3e/2ߟogo2(Z4__o? goKZet? &2o=o2ooO;O;,G oP;oooOoo 24 " z = -*Loop!'ynewC =R  s()*LPattern&i9'tn OP5)set'8&;@;A;q(End If#olasEBmxA urrRow-iAFor`ms(nefA Total@rptSheet.Cells(B&, 4).Val uec'@" oth er@|star9To endIf row61()!~1 A-__ m 2 2 Then 'Record ge 2, differencapied across D% CI((< Fg+ 1+`;D$s`:True.IfWit@h thisBX2dX@d, C &&.Inior _ i g.A d(ɟ g&2 g.g ݄ d[_  U -o _S.Array(!)rK,&R)?ECount/ j3_nN@l OktCMk6VJ___AzU5pO= su4Iad]).AddreOa??9copyDoneJprevӇ  5ty0ss in sfA|16;10dTSet qq c1c! E.ula""v'Because qpӂsp ly workside @d rang_Za Eacp In Rq(4 p /v ,t)o@O4,@umnNJO1Els?"ceS0errorJmp 5#.,߸_:s181)).&e!ɀCo171: Ix 0Wi10Y1mer gc returnKs difference with itself rowForms1(thisCol) = f"Count1xr Each vell In Range(oneC, _BASheet1 .7sRow, end1)) HIf@tersectgAqDces) Is No6ng Then%OS -.Lumn)NextdEnd Iؙ ('Record . copie@s in sAY n2 @P92CPC0BK FSet |s2 sAMr&.ula ""\&A''Because As@,ly workFside KA!AAKC$BVaRn#\fAE=s?k\\[ls~e{*aHODu`;terUerrorJmp@6_ J h1&2))^.kM _Cq2:0;2` + |6&cmer ged c > return/+ H9 ;!e(954 In)$fL%km8d7d ?'Write details to"port#e?1 indexB!eOAcolour@s`-True^v'F unߒ\OY3IA P{6 *1 To 3276G: ϐ`|! 25\/?F d ?MA5{ > startA'Ensure Īs from ^GAy sa\meh 2n`= o__ Array*, Fa_qExit!_ >D > _& A@$pp$3p < /$$$ ala[$__P@X abov/a@''0''prev''o'O'!''o?'Uc o O ]&#@>W-xs-= =k_@x X?Q!as = " " ElseIf xsCount = 1 Thenjloursn"s" &"& ",Chr(13).- prev54PGp A%#dT"nd If4G=goneCell.Address#A+ 1 Row@Tru e[ E`4newCo@s(c`Indexܚ PatternCitn!Pset,2@2H?aX 6las-thil@formb8B1rowFs\1(;22 Total 0 nex To end`8A$g) ц1 A __- E 2(Q 2 2ik"2)curr{)-g?({DiffAWith HSheet2.sC ,;).Inior?E @fx .arbY =? + {H g H?/(U.Q CDa Arraybr/-LO?;NA5rpt''D3, 2).Value = z+1,"-p)/|A;, 324=X__piG, 5_ %~_ P_errorJmp%7_ 6"'cP Co0Gnt` WriteUula1:H8_KO7OllD2 I2O H_sV#/_=3<9!_8]#8O"s7?+?sX7(rH7&-$!oxtR 8??llxFjeru_J~P6ɶ If setPtnColour = True Then _  0.PatterrIndebxnewEnd With!IfcelplFouS 9Else$Content1 <> ""v2&2MNext!thi6s0 >urrRow > 65000Exit DoLoop While "< end["x-s_MsgBox prompt:="Please not)at+ere wough"Q{& Chr(13) & "cs availab(for full -coding inthe row(s) shePet "@cHSB#start@4j ref48nceH@..",Q7Buttons:=vbExclamation, TitleN RainbkAnalyst"_ S@-zzNong nCi er1QF2Q[DiffcesQUX+",TSub LocalError:C'iindifL d`C1s< fq W.Numbe1004loSelect CVe! Jmp7a1aRe sume mCopies23o 4>mm 52 6 7Qrpt=.AMs(k , 6).Val@6= "Formula too long$]+H,WriteD,8ow, 7(pcErLX> 256E=A= caANa K#%?C+! B+D ).AddresscIsubgw'baCDescAr,ipA)F!= Help!r|xtDFKhTKKOKKKQK ?KurK 0wFindLinks()Dim f@C`Kt As L0VarianSDsle rst QStrQRa$Range7lastS@=Om msgT m n- C CWkbk_mq`zort01 sce!7PR}so m`Ktalr userRPeplyIPg erSApplDic.EnQCBa lKey3xAcnHandluOnA7GoToScreenUpdp= Fa&D'Makeitial validity checktCB4Ca C!/s(+0M-1O{ 9>O 8ActiveWorkbookJ.3SBs(x' S4tof= tUB.(T=* (Ck OKB9 possisަyX&l>edle% w5 XOK!/%D y vbs t In" irepw`63TV45).Used@+tireg.DftCos(``ys>= q8#2.9pB "IqY ("A1").Fp.Size #1t"3:4Bold-:A}umnWidth21"B:C14"D:D6f.VePA`lignm xlToīo"AbpWrap2Z "1DinmaiCnWkbook  ActiveSheet.Range("A3").Value = "Link(ed"4 Zsource filesfB aPossible lj referenc? sLocat(ionoC /Cell / NamjeD RJWors(mai).atecurrRow5;Count 0 For 1 To tot8alFthis ()shortRight( , Len) - InStrRev"\")HcG1E+ 1BrDptk).’s(1).Zs( <, @E(GfindE-eplace(Expreon:=F , F@ :="~", RC A~"H-U??**alastGq"ĒwsNumnumRH ρS s(EAA C`gelectk firstAdd-,%%TgWaDo+ aAppliCr.StatusBar F_d " &`^tnd# _aa&@ inBtoIIf A ThenS0et f= Usedb.AP X(WhatT:=gMLI@Yxrl=mu`Ar`AxlPart,} SearchOrder:=xlBys, MatchByte:=False@H! Not (Is hing)b" E .Go*E7-aB=.3Next(Afta$ W"@UE3F*OEnd I>fTN28UEx8it oA. .Has$N@Tr/8"1B <> 6?5qz""%Spc)ddsu, 2U8mpR 7O O E 3O .34`v'bX'.!1cbu!=&"& Wp !B!`"YyqQl p  nxrB|c5.s.1 ?s?s`.brde edb sp߿rBbso Hes( ).T0@LefA==@;aZMid2O[S@?-!J *"r.'" R(1,D, vbT fCompare) > 0oZ26$obASen611BBBSp[B+]ت8$$_! W w=U7#,' Vi= qzXSiJ curr@Row = H+ 1 End IfLNextReportSheet:.Application.StatusBar"Load ing r2 s3"3Workbooks(mainW ).Act`ivate#cs@(selecps()).S"0e(.Range(rName (ч7rpt7k 6$"A1"6PageSetup.PrintGrid lines{Tru` *Zoom75aX " creenUp&d= /If cellCount1 Then msgT' possiblDe 'k f d0." _CEl4seW s  MsgBox prompt:=Format(!, "#,##0") &, Buttons:=vbI nfB, Title:="Rbow AnalystE["C<@7Noth%`lastF8 Exit Sub ErrorHandPsub 0PCG.NumberpDescrLipM Fia= A HelpContxAr 'IK-18C~Resume # 3'NoC$=l=" in "ǡ<&x"."=)H>ExclaFZ>3&:=2a(, $E!?ț"‡7""(gdefzd nsfB" c)y"-@or nbN %Q&whJseXarc`@cr.& Chr(13qsh!&4f7d ~:bd"] 숩 "2C`k !6! further}0ED + vb# Da HaB= CN"  DoListCo`mment#EDim c`tBody As StgHead0loca@LonnU-? $qm Vs1 t PuserFl IpntegQ3y/EDnaphCanbKey6xl.XDUOn S/GoToS}qFaplsS'Make'itial validity c`hecks#5= 0CallP3 rAs(v){TN-v F9> d H= -(eu!3OK tYst a !":x>"x notes)Y2 wO7 H7O>Kxx vbsT 'InbiThis%.t5).Usedb.Entire.Dos(`Copys-= 6#9Q`.s՘aZFz.Size0 16"3:3ÀBold#A:AColumnWidth"B:B 2,"C:CԴ"D:DE:E4AVertlAlignPxlTop$C Horiz aXLef["#Wxrap4 18FS!Valu!"U$18{ ߑ"0?( Bi{CDqAutEQ6?7ށ4C@ # ƳзPPWoAcBST60OnA;P)GoT.oS-XFap4sS'Make&itial validity checkԨ~CCaC!bs(]4@-]OH9>T 4= -(\3OK to l$ a s (e.g_ckz7k )2 wT/7 x`OK3O`E` vbsN;Inimه=TŐUsedB.Entire`.Dos(`CopysU1= 60#wR2PqscF! d.Siz16ÿÏ"3:30xBolǂA:AColum@nWidthPd2d"B:B!"C:C60 EVertlAlign1 xlT_ "A:qWrapT/E 1<E"A.!/ % o BAC$Utoq'jbooks(mainWk).Activate  currR@ow = 5@ellCountH0HFor name,1 To !eWor.N9>s.BhApplication.StatusHBarW"F`d@ " & cn&es"@thisY3o()E8f`Pos8InStr(1, &, "!", vbTextCo@mpare)If > 2 T8henk$SheeLeft(,- 1)eMid+E08,i"'"K{iE_R9 LLen ) *E\ls ;"fE`nd If Rpefer\k ToI:C:=: A&JS 2L^QCW&BVG & Ch{3OgT"Ck @#r fur@ther iG.` Excla + C$##1:=C 9, Ext&`wb' Savet/do0Dim QaF As St @gpnoDus@B`oolea4prevInteg*mST&BVListm testA Ph5)Om usedAddre,ssr*ly y+Ena`hCanCKey6xl* I ProtmC _\_eO_$RFToC > 5Sa)'Pf(4)Tv"B3q▓ '= a+= 705,= 61) Nϱ70%/@B 11 TvtM7O`s!g0Z,oGYr-@zUE= 4r ooQD"b=rJ1`/=cJrH= c(ŊiOK to sP\Qjft1HjaqnmB_e ntOCed sheets." & Chr(13) _ p& "(This will overwrite information already save,d"8 prevWkbookq" sList.)",QButtons:=vbOKCancel, Title:="Rainbow Analyst")ElseuserReply = MsgBox(@prompt Click OK toj vting| wthe current6selectedwGond IfpIf ovb Then Exit Sub C'D%uex^9s ; AppF}.StatusBar@P"Sav J"@%Wor }      !"+$%&'()*,-./0123456789:;<=>?@ABCD