Excel User Group
Microsoft Excel blogs, forums, files. Read, ask questions, provide answers.

More advanced Excel automation & simplification

In a previous post, I showed a way of automating and/or simplifying Excel by processing many data records through a single sheet using data tables, rather like a merge. If you liked that, you should love this more advanced tool, written in VBA.

It is generic enough to be used on a wide range of projects without modification, so I'll call it an automation "engine" below. If you find it useful, it is free to use and modify, providing you don't claim undue credit or sell it.

It was built to power an actuarial valuation system which can be extremely complex, because each client implementation is unique and has to be configured separately. The complexity and non-standard configurations make checking very difficult, so this has been a good test of the software.

Importantly, the engine allows every single formula to be laid out clearly and simply on worksheets, and checked step by step at every level, from the lowest level to the highest. So if you want, you can see all the calculations for product X, in a specific future year Y, laid out in detail across a whole sheet. It also means non-experts can configure the system entirely in worksheets, because the engine only provides automation and doesn't contain any business logic or client details.

The engine also allows us to nest as many calculation loops as we like, eg we can run 6 scenarios, each involving processing 1,000 products, each of which requires 15 future years of calculations, each of which requires several calculations - all by pressing one button.

All of this made our system simpler, much safer, more accessible and highly flexible, which is exactly what we needed. The only downside is that it isn't as fast as a pure VBA program, but it's still fast enough for us, and a small price to pay.

How it works

I'm going to pitch this explanation at the level of experienced business spreadsheet users who, like myself, work with nasty spreadsheets and who are motivated to automate or simplify them. The section below introduces the engine, then I have a workbook which explores its features step by step.

The engine is like a souped up data table. It puts a sequence of numbers in a cell (ie 1, 2, 3,..), calculates, and stores results chosen by the user. However, it can nest calculation loops, so that for example, each time sheet A calculates, sheet B will calculate Y times, and each time sheet B calculates, sheet C calculates Z times. This means that sheet C will calculate Y x Z times as often as sheet A. If you are familiar with programming, we are talking about nested For...Next loops and subroutines, within worksheets, which is something I've always wanted in Excel.

Each calculation loop requires its own worksheet, which has special range names that tell the engine what to do on that sheet. For example, there are range names that tell the engine

  • how many times to loop through this sheet (can be a formula)
  • the name of the child sheet, if any, which should be run every time this sheet runs (that child sheet will then have its own fields which tell it how many times to run, etc) - this is how the loops are nested
  • what results to store

and more. It can also keep running totals of results, and copy hardcoded results to separate sheets.

The code engine comes with a worksheet template with about 10 named cells which are all you need to configure your system. You should not have to touch or even look at the code.

It's hard to explain it in much more detail without looking at it, so I suggest you do that now. I've provided 3 files

  • explanation of the features with several examples using a simple financial model (Engine Demo.xls)
  • a non-financial example showing how to solve a word puzzle game (WordPuzzle.zip)
  • the template for your own use (Template.xls)

The documentation is not as complete as I'd like, but please bear in mind this is all done in my spare time. Comments and suggestions are welcome.


Posted Jan 28 2008, 09:26 PM by dermot
Copyright Excel User Group and the relevant contributors, 2010. All Trade Marks acknowledged. This site is a peer-to-peer site and NOT affiliated in any way to Microsoft Corp. All rights reserved.