BUG FIX: I went back through the logic and fixed an issue where you get a SMASH 50% of the time. It is much, much less likely now.
The basic logic is that the spreadsheet decides how many malts will be in the beer with a max of 7. At least one malt MUST be a basemalt and basemalts make up at least 75 percent of the grist. You can change that value if you like. There could be up to 7 basemalts in a beer though from the random number generator.
If there are less than 7 basemalts, it checks to see if crystal malts made their saving through. If so, it decides how many Crystals malts will go in (up to 6 from the long list) and then Roasted Malts get a chance to make a saving throw and if so, it adds them. (up to 6 from the long list). Then it figures how many hop varieties go into the beer (5 max) and picks the names. Its a little more complex than that, but you can noodle through it.
To make this work, you need to enable macros for this worksheet and you need to turn your calculation setting to manual. F9 is the default recalculation key if you need to use it.
If you know much about excel its pretty easy to go in and add and subtract ingredients, but if you change the number of each you need to futz with the calculations which should be self evident. The 'main' sheet is only a condensed print-out of the 'background' sheet which has all the data tables, IF statements and the VLOOKUP statements. If I had to do it again, I would vastly simplify the data tables to allow user additions and provide the ability to specify upper RANDBETWEEN values on the fly. Maybe I'll do it later.
Here is a dropbox link to the Excel Macro-Enabled file: https://dl.dropbox.com/u/76184517/Random%20Beer%20generator.xlsm