“It is practically impossible to teach good programming style to students that have had prior exposure to BASIC. As potential programmers, they are mentally mutilated beyond hope of regeneration.” [E. W. Dijkstra]


I studied computer science as a secondary subject and I worked as a systems programmer later on. When I entered the banking industry I almost fainted. Programs were of quite poor quality. Many programmers in the ’80s have never heard of Jon Bentley’s Programming Pearls.

Then Excel © was distributed and each and every hobby programmer offered his “solutions” to the public. I had to face the fact that many programs and many worksheets were not tested before shipping.

The application below is meant to help people who want to test properly. This is just the first initial idea. I am thinking about defining all inputs via XML.

You want to create six Boolean values, 50% True and 50% False, once in generated order and once shuffled? Here you are:


Or you need to create 4 money values in GBP, the first series between GBP 10 and GBP 20, the second should have an average of 6 and a standard deviation of 2?


If you like to generate four dates between 1-Jan-2000 and 1-Jan-2013 or four dates with average 30-Jun-2012 and with a standard deviation of 180 (days):


If you need 4 countries, one African, one Asian and two European; or you need 2 Asian and 2 European (drag tab “Countries” next right to tab “Data” so that it is tab #2!):


If you like to generate first names from a list, drag tab “First_Names” next right to tab “Data”, you get a warning, just press “Ok”:


Note: It is not pure chance that columns of items and item groups in both tabs are identical here. Actually, I have created it this way, so that I can easily switch between creating first names or country names.

You can also generate correlated numbers with this application. I have implemented the Iman Conover method with VBA.

The spreadsheet tabs:


Please read my Disclaimer.

sbGenerateTestData.xlsm [149 KB Excel file, open and use at your own risk]