Handle Volatile Functions like they are dynamite

Share

Facebook
Twitter
LinkedIn

Volatile functions in Excel are like dynamite. Handle them with care!

If you’re building large models, then you may want to use volatile functions – including OFFSET(), INDIRECT(), and TODAY() – with caution, because unless you know what you are doing, they *might* slow Excel down to the point that data entry is sluggish, if not downright tedious.

In fact, you *might* want to consider getting out of the habit of using these functions at all if there are  alternatives, and you might want to replace volatile functions in your existing models with non-volatile alternatives…I have reduced recalculation time in large models from minutes to milliseconds by doing just that!

So what the heck does volatile actually mean? And why should you care? Let’s find out, shall we?
 
 

How does Excel update all those cells?

Let’s take a look at how Excel ensures that each cell has the right number in it when you make a change somewhere. But first, a disclaimer: Note that this is an introductory article, and so is necessarily simplistic. If you want to know more about the specifics of this complicated subject, check out the links to Excel MVP Charles Williams’ excellent site at the bottom of this article. Okay, disclaimer ends…

A large Excel model might have several hundred thousand cells with formulas in it. Maybe even several million. Most of these formulas will reference other cells, and many of those cells will have formulas in them that reference other cells in turn, and so on. If a formula in a Cell A2 refers directly to Cell A1, then A2 said to be directly dependent on A1. Obviously if A1 changes, we need those changes to flow through to A2. And when recalculating the entire workbook, we need A2 to be recalculated AFTER A1 has been recalculated. That’s called a dependency chain.

Large models can have a number of very long dependency chains comprising of hundreds of thousands of cells that run across worksheets or even between workbooks. To keep track of how all these cells interrelate – and to ensure that a change in any specific cell’s value correctly flows through to any other cells that may depend on it – Excel builds and maintains what is known as a ‘dependency tree’. Think of this as a big flow-chart or circuit diagram showing how all the cells in one of these giant formulas interconnect. Excel maintains this dependency tree every time you make a change to a formula in a cell, by looking at the argument list of each separate function within that formula. And this dependency tree is saved along with the file itself.

Smart Recalculation

Thanks to this dependency tree, when you change the value in one cell, Excel can work out what other cells might be affected. And so Excel can smartly recalculate just those particular cells. Meaning it doesn’t have to blindly recalculate the whole workbook just because one fairly insignificant part of it might have changed.

So let’s say you change the value of a cell  somewhere that has only one other cell pointing at it (and no further cells depend on that other cell). Thanks to smart recalculation, Excel only recalculates the value of the cell you just changed, and the value of that ONE dependent cell. It doesn’t have to recalculate the entire workbook.

Likewise, if you change the value of a cell somewhere that has many, many cells downstream, then Excel of course has to recalculate all of the cells further down that particular chain. But it can safely ignore any cells further up that particular dependency chain. And it can ignore any cells elsewhere that aren’t in this particular dependency chain.

If a long-enough part of a dependency chain gets recalculated, then you might well see the word ‘calculating’ in the status bar while Excel works its way through all the relevant cells in that chain. But usually, this recalculation happens so fast that the word ‘calculating’ flicks on and off so quickly that you don’t notice it.

Not-so-smart recalculation thanks to volatility

Now here’s the important bit: a particular class of formulas called volatile formulas get automatically recalculated any time you enter data anywhere in any open workbook – even if the thing you just changed had nothing to do with those volatile functions. And then this triggers Excel to then recalculate all directly dependent cells downstream from those volatile formulas too. Yikes!

This mean that if you’ve opened a very large spreadsheet model with volatile functions in it – and if those volatile functions have a large number of formulas downstream (or a smaller amount of resource intensive formulas) – then if you are say trying to add items to a shopping list that you’ve started in another workbook it could take minutes for you to add each item to that shopping list, because every time you add an item, it triggers an avalanche of unnecessary and pointless recalculation in the large spreadsheet model.

The fact that each and every cell ‘downstream’ of any volatile formulas get recalculated is an important point to get your head around. Many people think that slow calculation times due to volatility is due to the time it takes to recalculate large amounts of volatile functions in a model. But often most of that delay is in fact due to the recalculation of all the cells ‘downstream’ from those volatile functions. In other words, even just one volatile formula with a very long calculation chain hanging off it could cause you grief. And if that calculation chain gets more and more complex, so does the effect of that one volatile formula.

Here’s how that looks visually:

In fact, it’s not just entering data that will trigger a volatile function to recalculate, but also these things (among others):

  • Deleting or inserting a row or column.
  • Performing certain Autofilter actions.
  • Double-clicking a row or column divider (in Automatic calculation mode).
  • Adding, editing, or deleting a defined name.
  • Renaming a worksheet.
  • Changing the position of a worksheet in relation to other worksheets.
  • Hiding or unhiding rows (but not columns)

So almost anything can set off that domino effect. Which reminds me of this:

(And what the heck…if you enjoyed that, then click this link too. But hurry back…this post is getting cold).

So which functions are Volatile?

These ones:

  • NOW()
  • TODAY()
  • RAND() and RANDBETWEEN()
  • OFFSET()
  • INDIRECT()
  • INFO() (depending on its arguments)
  • CELL() (depending on its arguments)

If you’re an intermediate Excel user, then chances are that you already use some of these regularly. For instance:

  • OFFSET() is usually the function of choice to anyone who wants to create dynamic ranges
  • Many large models make use of the INDIRECT() function to construct cell or range references “on the fly” in response to some choice that a user makes
  • Many large models make use of the TODAY() function to check if a date entered by a user occurs in the past, present, or future.

When does this matter?

Most of the spreadsheets you use these functions in are so small that you probably don’t even notice any extra volatility-related recalculation. So no harm done. However, if you’ve ever had that a large spreadsheet that seems particularly sluggish when you’re trying to enter new data – or that seems to impact the performance of other open workbooks – then chances are you know exactly what I mean.

I’ve seen frustrated-looking users waiting for as long as one to two minutes for particularly large models to recalculate after each and every change they make to it, even if those changes are relatively insignificant, such as changing the spelling of a column header.

Often spreadsheets like this get so sluggish that users switch Excel’s calculation setting to Manual, just so they can make changes in a timely fashion, and then switch it on again when they’re done in order to have the model calculate the correct answer. This is dangerous…I’d never set calculation to manual if I could help it. There’s just too much chance that someone someday will use output of such a model without remembering to set calculation to Auto. What’s worse, when you open two workbooks, one saved in manual mode and one saved in automatic mode, they will both have the calculation mode of the first workbook opened. I have seen many cases in my career where analysts have done just that…opened a workbook with calc set to manual, opened a whole bunch of others where calc was set to auto, and then done an entire day’s work without realizing that calculation was subsequently turned off for all of them. Doh!

Here’s a slide from my Excel Efficiency presentation that warns users not to do this:
Chandoo_Big Trouble in Little Spreadsheet_Slide

Previously you might have thought that you had no choice but to switch calculation to Manual, because you might have thought that this sluggishness is an unavoidable consequence of the size and complexity of your spreadsheet. But now you know that it *might* be caused by use of volatile functions, and that volatile functions might not be suitable for some occasions…particularly if you’re building large models that utilize these functions at key points within your model. Replace those Volatile functions with some non-Volatile alternatives, and you’ll likely find that your model stops being a slow dog, and starts being a much faster greyhound. To the point that you can switch calculation back to Automatic again.

What are the alternatives to Volatile functions?

While volatile functions like OFFSET() and INDIRECT() are incredibly useful, you can usually achieve the same thing by using other non-volatile formulas such as INDEX or CHOOSE, as well as through leveraging off the dynamic references that Excel Tables allow.

And instead of the TODAY() function, you can use VBA to populate today’s date as a hard-coded value in big models, as you’ll see in the download file below. Check out the Alternative Functions tab of that file to see some examples of common use of volatile functions, as well as some non-volatile alternatives.

If you’re struggling to find a non-volatile replacement for an existing volatile formula, then you can always post a question on the Chandoo Forum asking for some advice on non-volatile alternatives.

Am I being over-zealous here?

As we’ve seen, too much reliance on volatile functions *might* trigger large parts of a model to be recalculated needlessly. But it’s worth remembering that this is only going to be noticeable in particularly big spreadsheets. So perhaps I’m being a little overzealous here. So if you know what you’re doing, then maybe you don’t want to dismiss volatile functions outright. After all, you can always assess your options on a case by case basis: try them out, test, test, test, test again, and then make a balanced decision.

However, if you know of an alternative formula combination that does exactly the same thing as a volatile formula, then I’d suggest that you get into the habit of using that instead whenever you can. That way you won’t inadvertently have issues when it really matters. And I’d suggest that if you don’t have much experience of functions and performance, then perhaps it’s safest to simply err on the side of caution and steer clear of volatile functions altogether.

So not only do I see little down side to avoiding volatile formulas, but I see a significant upside: I’ve seen plenty of large models built by the likes of the big 4 accounting/consulting firms that make heavy use of volatile functions, and that consequently have recalculation times so long that they are effectively unusable. Stripping out the volatile formulas from these models has resulted in delays from data entry falling from upwards of two minutes to well under a second. Not to mention that users can now work on other files while these models are open, without fear of triggering an avalanche of unnecessary and pointless recalculation. Had these model builders known to avoid volatile functions, they would have saved users a lot of grief.

Excel MVP and Recalculation Expert Charles Williams says:

The better use you make of smart recalculation in Excel, the less processing has to be done every time that Excel recalculates, so avoid volatile functions like INDIRECT and OFFSET where you can, unless they are significantly more efficient than the alternatives. (Well-designed use of OFFSET is often fast.)

In fact, on Charles’ website he goes so far as to say avoid volatile functions wherever possible.

With all that in mind, I’ve made a personal choice to steer clear of volatile functions where I can. Your mileage may differ. Regardless, the subject of volatility is definitely something that intermediate users should be made aware of. What they do with that awareness is up to them. But forewarned is forearmed.

Fancy a demonstration?

Sometimes it’s most helpful to see something with your own eyes. So download this file, open it, and enable macros: Volatility-demo-using-TODAY-20140230
You’ll see it has a dropdown in it, where you can choose to either populate a cell with the volatile TODAY function or with a hard-coded date:
Chandoo_VolatileFormulas_Dropdown
Downstream of that drop-down output cell are 20,000 formulas spread across two columns:
Chandoo_VolatileFormulas_Formulas

If you choose the Use Volatile TODAY() Function option from the dropdown, then whenever you enter data in that 3rd ‘Completely independent cells’ column then you should notice a significant delay. Change that dropdown to ‘Use Hard-Coded Date’ and you should experience significantly less delay, if any.

You’ll also see a blue button you can click, that will time how long the delay is under each option:
On my system, there’s about a 1 second delay when using the TODAY() option, and almost no delay when using the hard-coded date. (Note that you have to click the blue button twice after you change that dropdown to get the ‘proper’ reading. The first reading will be artificially high.)
Chandoo_Volatility_Test

Why are some functions volatile?

The reason for some of these functions being volatile this is fairly obvious. For example:

  • NOW() should always return the time as at the last calculation, so needs to be refreshed any time new data is put into the workbook, in case one of your formulas does something specific based on the time of day.
  • TODAY() similarly must be refreshed to ensure than the day hasn’t changed since the last time something was entered into the workbook  (which will be the case, if someone works past midnight, or if they come in in the morning and make a change to a file that they had left open the previous night.)

But the reasons for others being volatile – such as OFFSET and INDIRECT, which are often used by modellers to create dynamic named ranges – are less clear. First, let’s look at what OFFSET and INDIRECT actually do:

  • Offset Returns a reference to a cell or a multi-cell range that is a given number of rows and columns from a given reference. So OFFSET($A$1,1,2,5,3) says “Go one cell down from $A$1 (which takes us to $A$2), then two cells across (which takes us to $C$2) and then return a block of cells 5 down from $C$2 and 3 across from $C$2 (which gives us the range $C$2:$D$6)
  • Indirect Returns the reference specified by a text string. References are immediately evaluated to display their contents. So Indirect(“$A1”) tells Excel “Go look in cell $A$1, and tell me what’s in it”.

So why would that mean they need to be volatile? Because Excel constructs dependency trees based on cell references.

  • INDIRECT() has an argument that is constructed out of text – e.g.  INDIRECT( “$A1”). This might look like a cell reference, but it is not. In fact, the argument of an INDIRECT function might equally look something like this:  INDIRECT(“$B”&$C$9-2).
  • OFFSET() takes numerical arguments, which point to a cell reference, but are still just numbers.
  • In order for these to form part of Excel’s dependency tree, the Excel dependency tree algorithm would have to first evaluate text like INDIRECT( “$A1”) or the numerical arguments like OFFSET($A$1,1,2,5,3) in order to determine what the associated cell reference actually is, before adding it to the dependency tree. Maybe the Excel obviously made the call that rather than introduce this extra step where these two functions are concerned, they may as well just make both functions fully volatile.

But given that you can set up INDEX() do much the same thing as OFFSET(), why doesn’t INDEX need to be volatile too? I imagine it’s because INDEX uses range arguments, whereas OFFSET uses numerical arguments. So Excel can extract these range arguments directly from an INDEX() function when building/amending the calculation dependency tree.

Note that INDEX() is what’s called semi-volatile, meaning it gets recalculated when the workbook opens.

And also note that any formulas used in conditional formatting effectively become what Charles Williams calls super-volatile: they are evaluated each time the cell that contains them is repainted on the screen (which happens say if you use the scroll bar to move the ‘view’ up/down or left/right), even in Manual calculation mode. But because no other formulas are ‘downstream’ from conditional formats, then only the conditional format formulas themselves get recalculated. So if you’ve got simple conditional formatting rules, you won’t notice any delay.

More info:

I’ll talk about alternatives to using volatile functions in a series of upcoming posts. But meanwhile…if you’re not feeling too sluggish…then check out these great links from Excel MVP Charles Williams.

Pretty much everything I’ve covered in this post came from Charles’ writings, so I’d like to acknowledge the work he has done in explaining this complex subject to countless Excel users over the years. Charles also sells a great add-in called FastExcel for profiling Excel calculation performance and memory useage – so be sure to check that out if you want to get serious about diagnosing volatility issues with your own Excel models.

You may also be interested in Jan Karel Pieterse’s RefTreeAnalyser utility, which among other things allows for easy Auditing of formula dependents and precedents, helps you trace errors, and will let you time your workbook calculation for each worksheet to find bottlenecks as well as check columns for formula inconsistencies. Jan Karel has a free demo version with limited functionality, if you’d like to take it for a spin.

Let me know your thoughts in the comments

This has been a particularly taxing post to write. So if you found this article helpful, please let me know below in the comments. If you’re not following something I said, or can think of a better way to say it, then let me know that too.

About the Author.

Jeff Weir – a local of Galactic North up there in Windy Wellington, New Zealand – is more volatile than INDIRECT and more random than RAND. In fact, his state of mind can be pretty much summed up by this:

=NOT(EVEN(PROPER(OR(RIGHT(TODAY())))))

That’s right, pure #VALUE!

Find out more at http://www.heavydutydecisions.co.nz

Facebook
Twitter
LinkedIn

Share this tip with your colleagues

Excel and Power BI tips - Chandoo.org Newsletter

Get FREE Excel + Power BI Tips

Simple, fun and useful emails, once per week.

Learn & be awesome.

Welcome to Chandoo.org

Thank you so much for visiting. My aim is to make you awesome in Excel & Power BI. I do this by sharing videos, tips, examples and downloads on this website. There are more than 1,000 pages with all things Excel, Power BI, Dashboards & VBA here. Go ahead and spend few minutes to be AWESOME.

Read my storyFREE Excel tips book

Overall I learned a lot and I thought you did a great job of explaining how to do things. This will definitely elevate my reporting in the future.
Rebekah S
Reporting Analyst
Excel formula list - 100+ examples and howto guide for you

From simple to complex, there is a formula for every occasion. Check out the list now.

Calendars, invoices, trackers and much more. All free, fun and fantastic.

Advanced Pivot Table tricks

Power Query, Data model, DAX, Filters, Slicers, Conditional formats and beautiful charts. It's all here.

Still on fence about Power BI? In this getting started guide, learn what is Power BI, how to get it and how to create your first report from scratch.

104 Responses to “Form Controls – Adding Interactivity to Your Worksheets”

  1. kyrel says:

    how to change the font and font size in list box or combo box?

  2. Hui... says:

    @Kyrel
    You cannot change the font size/type in a List or Combo Box Form Control
    The Active X versions do give you that functionaility.

  3. kyrel says:

    tq so much...

  4. Luke M says:

    Just curious, has anyone been able to get a valid cell link from a list box when multiple selections are made? With both the combo and list boxes, I can get them to work okay when selecting 1 entry, but as soon as I try to get multiple selections, the list box seems to simply stop working.
    FYI, I'm using XL 2003.

  5. dan l says:

    Great post.

  6. Hui... says:

    @Luke
    You can only access the Multi Select options through VBA programming and is beyond the scope of the post.

  7. Luke M says:

    @Hui
    Thanks for the response. I was thinking that was the case, but figured it didn't hurt to hope this was somehow available. Great post on explaining all the different forms.

  8. Robert says:

    Luke,

    I discussed different techniques of implementing a multi-select input feature in Excel. A combobox / listbox and some other. As Hui already pointed out, there is some VBA needed. However it is not too complicated and the post provides all example workbooks for free download:

    http://www.clearlyandsimply.com/clearly_and_simply/2009/01/approach-with-caution.html

  9. Fred says:

    Great Post. I use form control whenever I can. The only thing I don't quite understand when to use form control or active x control. Most often I'd do a trial and error and see which fits my needs. If one doesn't then most often than not it's the other control that I'll need.

    I like form control very much as it makes things cleaner to look at, and limit how others interract with my spreadsheet.

  10. Fred says:

    question on list box: what if I pick "Multi" under control on List box format control? I have never use that one. How would chosen 1st, 4th and 7th and 9th on the list would make an impact on follow up formula/equation??

  11. bill says:

    @Fred -VBA code need to be used to untangle choices with a box that allows multi selection. i have not found any example code.

  12. Roji says:

    Why not have just one (Form Controls or ActiveX Controls) and make it work on all platforms? Wouldn't it be a lot simpler?

    Also, it would have been good if we're able to format Form controls.

    Something for Microsoft to think about.

  13. Hui... says:

    @Roji
    Form Controls have been around for a long time in Excel.
    Active X is the relatively new boy in town.

    Microsoft has always tried to maintain backward compatibility with file formats and I would suggest that is why it is maintained.

  14. Ken M says:

    A general observation - if you put too many of these controls on any one sheet ie Checkboxes then that sheet takes for ever to take focus so I am reluctant to overdo it

  15. MarkyB says:

    Chandoo - Just downloaded your excellent "Excel 2007+ Examples" file. Most useful !

    What I can't quite figure out is on the Check Box tab how the TRUE/FALSE indicators show or hide the data line / chart element ? A brief explanation would be gratefully received.

    Many Thanks

  16. Pedro Wave says:

    I just design an example of how to add interactivity to worksheets.

    I've been playing with the pictures of shapes to create a solitaire where cards are generated in VBA from scratch. You can view and download from my blog.

  17. Chandoo says:

    @MarkyB: Thank you so much for your purchase. See http://chandoo.org/wp/2010/08/31/dynamic-chart-with-check-boxes/ for an example on what you are asking.

  18. Hui... says:

    @MarkyB
    The Check Boxes and other Form Controls don't show or hide the data line.
    That is they don't control the chart.
    .
    They can be used to control the data that feeds the chart
    I don't plot the data directly but via an intermediate range where I can use formulas to control the data
    .
    There are 2 techniques I use to do this
    .
    When a Check box is ticked a linked cell will be true
    a) So use a formula for your data to make it say 200 when the Y Axis is set to a Maximum of 100
    eg: =if(b1=TRUE,a10,200)
    or
    b) set the cells value to na()
    eg: =if(b1=TRUE,a10,na())
    .
    Either way the point wont be plotted on your chart.
    .
    An Example of This is on the Check Box page of the example file above
    http://rapidshare.com/files/455058939/Form_Controls.xlsm

  19. Gregory says:

    I didn't realize ActiveX controls didn't work in Excel for Mac so I tested it out and you're absolutely correct. In fact, any VBA code that references an ActiveX control will fail when run by the compiler.

  20. RichG says:

    With form controls you can really look like a spreadsheet master. It also make it really easy for other users to enter data and ensure the integrity of the formats. Great information, thanks!

  21. pibfer says:

    Hi there,
    I have a question, It's very simple for you, I guess!!!
    How can I get a vertical scroll bar (I get it yet) and an horizontal scroll bar (the challenge) in the same table?
    The main idea is to show a 10x10 table, wich contains more than 100 rows and 100 columns?
    I appreciate your advise a lot!!!
    Kind regards,

    pibfer

  22. Hui... says:

    @Pibfer
    You can use scroll bars linked to a cell and then use an Offset in your table to do what you want
    Refer an example at: https://rapidshare.com/files/4271493887/Table_Scroll.xlsx

  23. bkourtni says:

    Is there a way to wrap text in a form control list box? I do not want to increase the horizontal size of my box to fit my list choices. Thanks!

  24. Pooja says:

    How do we get the vale of a dropdown box in excel ?

  25. Hui... says:

    @Pooja
    Right click on the Drop Down box and Look at the Cell Link cell Reference
    That cell has a number which can be used to lookup using Vlookup or Index the value from the source range
    Lets say your source Range was AA1:AA10 and cell link was AB1
    You can put =INDEX(AA1:AA10,AB1,1)
    anywhere to return the value displayed in the DropDown

  26. JR says:

    Verging on off-topic, but an important consideration! The Selected property of the listbox on the Mac appears to be broken, so it seems useless cross platform. If you looking to iterate through to work out which items are selected using (for example):

    For i = 1 To .ListCount - 1
    If .Selected(i) Then
    Action here
    End If
    Next i

    The method works on Excel 2010 but seems not be supported in Excel 2011.

    Anyone got a work around?

  27. Eric says:

    I'd like to use the radio-select buttons on one sheet, for multiple things. Example... Question 1... Select Yes or No. "Yes" performs a function, "No" performs another. Works great on the first question. However, when I get to question 2.... My Yes / No button's cell reference defaults to the cell references in question 1. If I change it, question 1 defaults to question 2. Can you only use these form controls once-per sheet? ugh!

  28. Hui... says:

    @Eric
    Insert 2 radio buttons
    Set their properties, cell links, text
    Then add a group box
    Group the 3 items
    .
    Repeat

  29. Tim M says:

    Is there a way to completely lock an option button or check box so when it is selected and you have protected the workbook/sheet, no one else can change it. Currently anyone can click on a checkbox and remove the check.

  30. Carrie says:

    Is there a way to lock the checkbox so it can not be unchecked by the user? I would like the checkbox to "default" to checked and not let the user change it.

    • Kevin says:

      My suggestion would be to right click the check box, click form control, then under control and then value, click checked then ok. Then protect the worksheet.

  31. Phil says:

    Anyone know if there's a way around the fact that the Extend option for Forms listboxes no longer works?
    In 2003, if you checked Extend in a listbox, you could select multiple entries by keeping the CTRL button pressed while clicking each entry. In 2010, when you press the CTRL button and click on an entry in the listbox, the whole listbox gets selected.
    I'd prefer not to use the Mutli option.
    Thanks!

  32. infinitedrifter says:

    Is there a way to make the vertical scroll bar on an active x drop down list wider? The one I'm working with is super tiny & I haven't found in the properties how to change it.

  33. Hui... says:

    @Infinitedrifter
    Not that I am aware of

  34. clif says:

    hi there! tanks for the post. 🙂 im starting familiarizing those control.. i want to have an idea of making an option form as reference to any formula..and how it works when it is included in the equation.. Tnx..

  35. MES says:

    is this possible to assign a value to each button and it will appear to the linked cell?

  36. Kaloyan says:

    Hi! Thanks for the tips! All I need are scroll bars to increase/decrease cell values, for which I use excel mixer pro (convexdna.com, I think). It makes amazing charts, on top of providing sliders. Has anyone tried it on excel 2011 for Mac? Do you know of any other similar tool?

  37. AB says:

    Hi!

    I am trying to add insert tick box. I have thousands of documents that i am recieving and would like to tick the box when i have recieved this information so i need to have alot of tick boxes over a wide cell range, how can i insert tick boxes over a wide range without individually adding them? I also would like to lock this box once i have selected it so that i cant mistakenly click it, is this possible?

    Thanks!

  38. silva says:

    hello,

    i wonder if there is a way to ajuste a range size controling a spinbutton.
    ex:

    when spinbottun says 1, the range became (a10:a10)
    when spinbottun says 2, the range became (a10:a12)
    when spinbottun says 3, the range became (a10:a13)
    and so on
    ....

    and i wonder if ther is a way to establice a range size with a formula inspired in this thing: =(a1:a"(=COUNTA(b1:b10000)")

    thanks

    • Hui... says:

      @Silva
      Q1- Maybe
      Do you mean like
      =OFFSET(A10,,,Spinbuttonlink,)
      or
      =Sum(OFFSET(A10,,,Spinbuttonlink,))
      .
      Q2 - Yes, Use Indirect
      =INDIRECT("A1:A"&COUNTA(A:A))
      or as a range
      =SUM(INDIRECT("A1:A"&COUNTA(A:A)))

  39. Mozzy says:

    is there a way that you can show like an order form with check boxes on a facebook page then once submitted it will be compiled in another workbook or page where it cannot be accesed by visitors or viewers anymore? I am trying to prevent pranksters from vandalizing clients orders on an order form I am trying to create using excel. thanks.

  40. Ashwin says:

    I have spread sheet with Name of player in Row and his career highlights in column. I wanted to fetch particular details of player in one click so I created the combo box from form control. Combo box will give list of player and respective position in input range. Using if statement the data will be fetched to show particular details of player. I got what I wanted using simple "if" statement.

    In my actual spread sheet the column and rows are more than 15. Is there any better alternate formula or neat formula for this?

  41. raymond says:

    how to use button (form control) to function like spin button, to increase value to an existing cell?

    eg. value 10 in cell A1, and with a click of the button, it increases to 11

    thanks

  42. Chad says:

    I saw a question here earlier and wondering if anyone knows the answer. Tim asked above in September. I think I have same question. I'm working on a form where we complete some data and customer completes the rest - we use the protect sheet featuer. I have used the locked cell option to lock down cells from customer changes. It doesn't seem to work for drop down lists though. If I click format control on the drop down list and select "locked" on the protection tab it doesn't work. When I protect the sheet, the user can still change the value slected in the drop down. Looking to lock that down. Thanks in advance for any help.

    • Ken M says:

      If you are working within a sheet using data validation it is possible to enter a 'new' value if there is a blank cell within the drop down list range and 'Ignore blank' is checked - may be a clue to your data entry form problem - Good luck

  43. Ryan says:

    Check Box

    ? Under Format Object, move and size with cells is grayed out, why is this not available?

    I want to format the checked box to a specific cell.

    Thanks. 

  44. Abdul wahed says:

    Namaste chandoo garu,

    I am abdul wahed. How are you ?

    I have a small query regarding ms excel .
    In the institute I am working that is NIIT,THANE 1 of mumbai. I have accidently deleted one excel sheet tab called poonam tab and saved the file.That tab conatined data of 6 years students details.The cashier si screaming at me and crying like anything .
    I said that She should have put the backup of file ? Big problem has happened here ?
    Now how can I recover the lost data ?
    How to create an excel backup file ?
    Help me.
    Waiting eagerly for your reply
    bye

    Regards,
    Abdul wahed

    • Hui... says:

      @Abdul wahed

      1. Look for backups!, Official Backups, Has anybody taken a copy or emailed it recently etc

      2. Using Windows Explorer Look in the directory where the file was, are there any odd named files? If so copy them and put them aside somewhere. On the copies rename them to *.xlsx and then try and open them in excel

      3. Start typing!

  45. [...] Check boxes – to mark each activity as done (or not done) [...]

  46. Brett says:

    Spin Button Challenge
     
    I successfully linked a spin button form control to a cell, and have the spin button update the value shown in the cell. Great!
    Now I want to take this further. I want to have the spin button cell link to a formula such as indirect or offset so that I might update another cell, which in turn easily changes the cell to which a particular Cell Link, the spin button refers. The Cell Link doesn't seem to be able to accept a formula such as OFFSET or INDIRECT. Can anyone help me with this please?
    Ultimately what I want to achieve is to set up a template with spin buttons that update a summary page value which in turn change the displayed value on the template.
    I want to have many templates, so I need many rows on summary page, and I want to have a cell on each template such as  1, 2, 3 etc. that is used to refer to the row number offset, which in turn is used in the spin button Cell Link to update the correct row in the summary worksheet based on the template number.
    I would appreciate any help, even to solving this problem via a completely different method.
    Many thanks in advance

    • Hui... says:

      @Brett
      Hi from West Perth

      You cannot link controls to formulas as you are suggesting
      As you have already done, you link a control to a Cell
      You can then use that cell in a Offset or Indirect formula as you have suggested

      The Spin control changes the cell link cell
      The cell link value is then used in the Offset/Indirect to adjust the range/sheet that is being sought

      If that doesn't help you can email me, click on Hui... above, email address at bottom of the page

  47. Brett says:

    Thanks Hui
    Happy Greetings to another Perthian.
    Your help is much appreciated.
    I need to digest what you have said. I can use offset or indirect functions but I can't see how I can get them to work in this instance. I will likely write to you.
    Take care,
    Brett

  48. [...] Specify input range as lstChartTypes and cell link as a blank cell in your output sheet (or data sheet). [Related: Detailed tutorial on Excel Combo box & other form controls] [...]

  49. Aniket Reddy says:

    How to add list name in Combo-box ??

  50. Jacques Deseure says:

    How do you refer to a worksheet form control (e.g. button) in VBA code?
    Something like:
    Dim btnHelp As Shape
    Set btnHelp = ActiveSheet.Shapes("button 1793")
    Is this correct? Or should one do it differently?

    • Hui... says:

      @Jacques

      It really depends on what you want to do with the buttons with VBA?

      As most controls have a cell link, it is generally easier to reference that address to collect the status/value of the button

  51. Chelsea says:

    Hi,

    Is it possible to have a Check Box (Form Control) appear/disappear in a cell by selecting a value from a dropdown menu? For example: I have my dropdown menu in cell b2. Based on certain dropdown values, I would like different Check Boxes to appear in B4-B6.

    Meaning, if B2="Apple", I need B4 to have a check box to enable "Granny Smith", B5 to have a check box to enable "Pink Lady", and B6 to have a check box to enable "Fuji". But if B2="Grape", I need B4 to have a check box to enable "Green" and B5 to have a check box to enable "Purple".

    I am open to using other types of form controls or coding to make this happen--it's just that my knowledge in that area is slim.

    Appreciate the assistance!

  52. Zachary Bass says:

    How do you change change the index value of form control spin button with vba? The spin butoon contains two items. Something like Worksheets("Sheet2").Shapes("ListBox_TASKS").

    Thanks...

  53. Zachary Bass says:

    Thanks very much!

  54. […] you know, there is a form control in Excel that behaves like on/off switch. It is called check box. Although they are easy to use, check boxes are not very slick. So I though, why not make an on/off […]

  55. JC says:

    I like this template. I may modify how the checkboxes work though for a couple reasons:

    1) It's a pain to add more rows. If I want to add 10 more rows, it appears that I have to re-point each new object to the appropriate link-cell. Otherwise, they all point back to the copied row - checking one causes all of them to check.

    2) I can't group and collapse rows in the checklist without all the objects stacking together and remaining visible in the lowest non-collapsed row. With a simple "x", this would be ok.

    One solution would be to have a simple "x" instead of a checkbox object. I could just use an "x" to mark complete, and make the TRUE/FALSE based on an If formula (If "x" then TRUE; otherwise FALSE).

  56. You actually make it seem so easy with your presentation but I find this matter to be actually something that I think I
    would never understand. It seems too complicated and
    very broad for me. I am looking forward for your next post, I'll try to get the hang
    of it!

  57. Chris Vyhnal says:

    So I've got a spreadsheet with some scrollbars, and when I quit the sheet, it doesn't save my format controls for the page change. Minimum and maximum values and incremental change are stored, but my page change is not--upon opening it always defaults to 0 page change.

    What the heck? Suggestions?

    C

    • Hui... says:

      @Chris
      I've never seen Excel do that

      A few ideas:

      1. Are you using Form Controls or Active X Controls?
      Changing to Active X Controls has fixed up a few odd things for me in the past

      2. Try resetting the internal links in the file
      Close Excel if open
      .
      Start Excel
      Open your File
      Ctrl+Alt+Shift+F9
      Save your file
      Close Excel
      .
      Start Excel
      Open Your file

  58. Paul says:

    "They also have much better ties to VBA in terms of programmability and have a number of events that can be accessed programmatically."

    I don't understand how you can say this if you can't even acess them programatically in any reasonable way. Sorry to come off so negatively but, I wasted days on trying to find a solution that should be as fundamental as incrementing a counter.

    And BTW, Google searches for an answer that doesn't exist is great at producing thousands of dead ends.

    You cannot put them in an array such as ShapeRange, you cannot identify the control name in an expression and requires some kind of awkward workaround like finding a unique property I guess?

    Only solution seems to be hard coding the control name So if I have a 25x25 array of buttons, to change one I need to select from 625 cases? And once I give up I need to completely change my strategy and now 2 weeks work is trash.

    But to work with a shape it's just a matter of:
    ShapeName = "SomeName" & i
    Shape(ShapeName).someproperty

    Or create a ShapeRange array and reset a large group with a single statement

    Am I offbase here? I really hope I'm wrong but I can't seem to find the answer other than one trick that required a new class but that treats all controls like they are clones which might work for some unique cases.

    If you think this in just non constructive criticism, I wish I'd found one statement like this in my searches weeks ago.

  59. Sasi Rekha says:

    Hi.. I am using combobox for one report. My need is i want to link 3 to 4 combo boxes to show the report understandably. Eg. If i am selecting "Zone 1" from combobox1, the combobox2 should show all the "Regions" under region 1 and combobox3 should all the "Branches". ie-Combobox1 for "Zone", Combobox2 for "Region" and Combobox3 for "Branch".. Please help me out sir... Thanks...

  60. Sasi Rekha says:

    Hi.. I am using combobox for one report. My need is i want to link 3 to 4 combo boxes to show the report understandably. Eg. If i am selecting “Zone 1? from combobox1, the combobox2 should show all the “Regions” under Zone 1 and combobox3 should all the “Branches”under region 1. ie-Combobox1 for “Zone”, Combobox2 for “Region” and Combobox3 for “Branch”.. Please help me out sir… Thanks…

  61. Chris says:

    Not sure this is still monitored, but hoping you can help. I've created a worksheet that is sortable by checkboxes. This is probably outside the scope of this page, but . . . The macro code is as follows:
    Sub Front_Door_click()
    '
    ' Front_Door_click Macro
    ' When clicked, opens all FR DR options
    '

    '

    If Check_Box_28 = True Then
    Check_Box_30.Value = False
    Check_Box_32.Value = False
    Check_Box_34.Value = False
    End If

    If Sheets("Master List").CheckBoxes("Check Box 28").Value = 1 Then
    Range("C193").Select
    ActiveSheet.Range("$A$8:$X$206").AutoFilter Field:=3, Criteria1:=Array( _
    "FR-LH", "FR-RH", "FR-RH FR-LH", "FR-RH FR-LH RR-RH RR-LH", _
    "FR-RH FR-LH RR-RH RR-LH SD-RH SD-LH", "FR-RH FR-LH SD-RD SD-LH"), Operator:= _
    xlFilterValues

    Else
    Range("C193").Select
    ActiveSheet.Range("$A$8:$X$206").AutoFilter Field:=3, Criteria1:=Array( _
    "FR-LH", "FR-RH", "FR-RH FR-LH", "RR-LH", "RR-RH", "RR-RH RR-LH", "SD-RH", "SD-LH", "SD-RH SD-LH", "FR-RH FR-LH RR-RH RR-LH", _
    "FR-RH FR-LH RR-RH RR-LH SD-RH SD-LH", "FR-RH FR-LH SD-RD SD-LH", "RR-RH RR-LH SD-RD SD-LH"), Operator:= _
    xlFilterValues
    End If
    End Sub

    That's the code for one button, the other buttons list Rear Door options or Sideliners. The code works perfectly, but when a checkbox is chosen it jumps you down the page, sometimes below the list completely. How can I force it to stay at the top of the page?

  62. Adil says:

    hi Chandu,

    I am facing problem in adding ALL option in combo box and then sum upon selection.

    Like Sales of Region
    A
    b
    c
    d
    All region
    Can you help me ? How Can I do that?

  63. Prajakta says:

    Hi,

    I have created a dashboard using "Option/ Radio Button" and received a lot of appreciation.

    Thank you for that!!!

    Moving ahead, I have a query in the same.
    Now I want to put those option button/check boxes in a way that whenever I'll select both of them, there will be two charts appearing at the same time so that I can compare.

    I hope you got it what I am trying to say.

    Awaiting your reply.

    Regards,
    Prajakta

  64. amir says:

    hi
    i am iranian
    i like to leaning excel industrial

  65. Mahantesh says:

    Hello,

    I want to learn sumproduct() function.. can anyone discuss with proper example as i found it very tough to understand.

    Where it is used and how?

    Regards,
    Mahantesh

  66. irul says:

    its very interactive form in excel.. how to create form by calling value from one column..? How to create pop up entry data form in excel, by clicking a member

  67. Ramesh says:

    Hi Chandoo,

    Is there any chance to select multiple radio buttons at a time in excel 2013.
    please help me on this.

    Regards,
    Ramesh

    • Hui... says:

      @Ramesh
      If your talking about Form Control Option Buttons
      No, They are either on or off and when grouped only a single one can be active

      If you want to select multiple items use a Check Box Form Control instead

      You can use separate Radio Control Buttons
      Each must belong to its own group
      Each group will have different cell links
      Then you will need to apply the logic to control them yourself

  68. Andrew says:

    I have added the SEP date control to a spreadsheet to provide a date picker.

    Does anyone know if it is possible to link the output (the picked date) to a text box or cell elsewhere in a workbook?

    I have a form where I'd like to be able to pick the date, and then show this date on an output worksheet somewhere else.

    Thanks

    Andrew

  69. donna dennis says:

    Hi,
    Regarding the cell link in the Form Control. Can the cell link value be dragged from cell to cell vertically without having to input individually as a time saver? I would like to have c3, c4, c5, c6, etc. but when I try dragging it just populates c3 all the way down.

  70. Sandeep Kothari says:

    Comprehensive guide on excel form controls.

  71. Sandeep Kothari says:

    What are problems with using Active X controls?

Leave a Reply