I'm a huge consumer of Data Validation in Excel. Techniques I use include:
Pro-active Data Validation:
- Excel's Data Validation toolset
- Form controls
- ActiveX controls
- PivotTable filters
Re-active Data Validation:
- Conditional formats
- Contextual formulas (IF)
So naturally, as I was trying to convert one of my web pages to use Microsoft WebApp off SkyDrive, I ran into issues. Unfortunately at this point in time, the majority of the techniques that we use for data validation in the client are not yet supported in WebApp. And yet, if we're trying to build a web application, sanitizing the data is really important to make sure it works correctly.
I decided to convert my "Automation Evaluation" worksheet, which was intended to display how much it cost someone to do repetitive tasks over time. The overall goal of this file was to convince someone that they should pay me to automate their work, back when I was still doing consulting projects. I don't do them any more, but I think the exercise is still worth having on the site.
In this file, it was really important to me to control the options people can select to work with for how many minutes/hours/days they spend on a task. I want the right data in there to drive my chart, yet my options are VERY limited in WebApp.
I tried the slicers, but they aren't really built for this scenario. Set horizontally or vertically they take up way too much space. You can set them to a single column then make your user scroll down, but if you only have one option on the screen (like a combo box) then it gets awkward to figure out which option(s) are selected, and involves extra clicks. And that doesn't even touch the "how do I return the clicked value from a slicer" issue. (I haven't figured out how to get a value from a non-PowerPivot slicer yet.)
So this time I reached to PivotTables. I ended up making some very small tables with the options I needed and created a PivotTable that uses only the Page Field. This give me the ability to get a drop-down with pre-defined options. It works, but it does have a couple of issues:
- In the client it defaults to a "Select one item" approach and you have to check a box to allow you to select multiple items. In WebApp, it allows you to select multiple items. So I had to add a contextual formula to feed back info to the users if this happens.
- There are actually hidden rows in the worksheet to allow the Page Field to be changed. Even though the options selected always end up in the page field line, it seems to need extra space to refresh the table.
At any rate, it's not perfect, but it seems to work. Here's a look at the file: