Wednesday, March 31, 2010

NCAA Bracket Madness by David Tyler

We have a special treat for you today. Our very first guest blogger is David Tyler, the creator of what I consider to be the best March Madness Excel bracket on the internet, as I stated in a previously. I really appreciate David taking the time and sharing his insight, experience, and wealth of information with us today. Now, on to the article!
 -------------------------------------------------------------------------------------------------------

Every March, thousands of people fill out NCAA basketball tournament brackets, for which someone is faced with the challenge of running the pool.  This process can be tedious and fraught with human error.  To alleviate this, we can use a two-file Excel solution: a Bracket file submitted by all pool participants, and a Pool Manager file used to track the results once the tournament has begun.

Nick asked me to provide a brief posting on how these files work.  Below is a basic overview, but I recommend poking around the files to learn more.  Please bear in mind that the bracket files aren't perfect, and there are better ways that I've often been too lazy to implement, but the current files serve their purpose.

The Brackets

Most importantly: we need good, clean data.  Let's say there is a game involving Massachusetts.  If the participant puts the winner as "UMass," a human understands what that means, but Excel doesn't.  The file needs to have "Massachusetts" exactly.

To keep data consistent, all participants must submit the exact same bracket file.  By using VBA code that allows the user to click on a cell to advance that team, there is no opportunity for mis-typing.  The user clicks on "Massachusetts" in cell B4 and it automatically advances the cell's contents ("Massachusetts") to cell C5.  The user sees this as a quick and easy way to fill out a bracket; in reality, its main purpose was to help ensure good data.

For users who don't/can't enable macros, the file also uses a combination of Data Validation, formulas, and Conditional Formatting to ensure clean data.  Having alternative checks is an important component to maintaining clean data.  Many thanks to my friend Tom Szarek for the clever design of these great VBA-free features.

Collecting the brackets

With everyone using the same bracket file, we always know what data is going to be in which cells - e.g., C5 will always have the winner of the upper-left region's 1-16 matchup.  This allows the Pool Manager file's VBA code to open a participant's bracket (previously saved off to the pool administrator's hard drive), store the picks in an array, and then write those picks at a row of data in the Pool Manager file.  This is automatically repeated for all participants, storing all pool participant data on the same worksheet.  At this point, the Bracket files are no longer of any use.

Evaluating the brackets

Using formulas, we compare the actual winners of the games (from the MasterBracket tab) with the participant's picks.  If 'actual winner' on MasterBracket = the 'pick' on the Picks tab, the participant earns the points from that game.

The participant score is computed instantly with formulas on the Leaders tab.  VBA then sorts the leaderboard in descending order so the highest scorer is on top.  The resorting could be done with some array formulas, similar to those used on the PartInfo tab, but VBA is easier and less resource intensive.

Enjoy March!

Any time you are doing the same task multiple times, you need to question how Excel and VBA can be used to reduce the workload.  With these files, pool administrators can handle a large number of participants with little additional effort.  Further, once the Pool Manager file has all data, the administrator can send the file to all pool participants -- this lets participants track scores on their own, generate scenarios, and see other pool participants' picks.  The less time spent on administration, the more time there is to enjoy the games and the taunting of friends in the pool.

----------------------------------------------------------------------------------------------------------

That was great David, very informative, especially the part about reducing the workload when working with repetitive tasks. I've found that to be very true in my engineering work experience. Thanks again for sharing with us. Don't forget to check out David's blog here.

We're always looking for innovative and unique features and spreadsheets utilizing Microsoft Excel so please don't hesitate to contact me with your ideas or if you are interested in guest blogging.  Thanks for reading.