Kyle has a workbook that is quite calculation intensive, so much that it can take close to a minute for Excel to recalculate. He needs to determine which formulas are causing the slowdown, so he wonders if there are ways he can pinpoint the most calculation-intensive formulas or ranges.
To do any meaningful performance analysis of your workbooks, you are going to have to rely on macros. You could create your own macros to do this, but then you need to question whether such an approach is worthwhile. There are already macro-based tools (add-ins) that are available that can help you track down issues.
If you are using enterprise or Professional Plus version of Microsoft 365, you can use the Inquire add-in to analyze your workbooks. This can be a great help in identifying places your workbook can be improved. You can find out more about the add-in here:
https://support.microsoft.com/en-us/excel/analyze-a-workbook-with-spreadsheet-inquire
If you are a mere mortal who doesn't have access to enterprise or professional versions of Excel, then you need to turn to other tools. Perhaps the best all-around tool is FastExcel, which was developed by Charles Williams of Decision Models. You can find information on it here:
https://www.decisionmodels.com/FastExcelV4.htm
FastExcel is not free but, honestly, neither is Microsoft's Inquire add-in. (It costs additional money to upgrade your version of Excel to the point that you can get the Inquire add-in for free. The cost of the add-in is hidden in the increased cost of the Excel version.) FastExcel runs just over $200, but that isn't that bad of a price if you really want to figure out how to improve the performance of your complex workbooks.
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (14005) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, 2021, 2024, and Excel in Microsoft 365.
Solve Real Business Problems Master business modeling and analysis techniques with Excel and transform data into bottom-line results. This hands-on, scenario-focused guide shows you how to use the latest Excel tools to integrate data from multiple tables. Check out Microsoft Excel Data Analysis and Business Modeling today!
When you open a workbook, Excel examines that workbook to make sure it can understand the data it contains. This can lead ...
Discover MoreDoes your data require that you perform calculations using circular references? If so, then you'll want to be aware of ...
Discover MoreIt makes sense that when Excel creates a blank workbook, it must figure out which font to use for that workbook. ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2026-09-20 15:00:44
J. Woolley
Here's a function that returns the time to calculate a Target range of cells. The result is in milliseconds with microsecond resolution. Optional parameter NumToAverage permits averaging to reduce operating system vagaries (which persist anyway); default is 1 to skip averaging. If optional parameter UpdateScreen is TRUE, the screen will update while Target is calculated; default is FALSE to prevent screen updating. This VBA should be located at the beginning of a standard module.
Option Explicit
'NOTE: LongLong applies only to 64-bit Excel.
'Change ALL LongLong to Currency for 32-bit Excel.
'Currency can also be used with 64-bit Excel.
Private Declare PtrSafe Function QueryPerformanceCounter _
Lib "kernel32" (lpPerformanceCount As LongLong) As Long
Private Declare PtrSafe Function QueryPerformanceFrequency _
Lib "kernel32" (lpFrequency As LongLong) As Long
Private Function MsecToCalculate(Target As Range, _
Optional NumToAverage As Integer = 1, _
Optional UpdateScreen As Boolean = False) As Double
Dim bUpda As Boolean, nCalc As Integer, n As Integer
Dim tBeg As LongLong, tEnd As LongLong, tSum As LongLong
Static tFreq As LongLong
If tFreq = 0 Then QueryPerformanceFrequency tFreq
With Application
bUpda = .ScreenUpdating
.ScreenUpdating = UpdateScreen
nCalc = .Calculation
.Calculation = xlCalculationAutomatic
For n = 1 To NumToAverage
QueryPerformanceCounter tBeg
Target.Dirty 'forces recalc when mode is automatic
QueryPerformanceCounter tEnd
tSum = tSum + tEnd - tBeg
Next n
.ScreenUpdating = bUpda
.Calculation = nCalc
End With
MsecToCalculate = Round(1000 * tSum / tFreq / NumToAverage, 3)
End Function
Here are some example macros that determine the time to calculate the current selection, the active worksheet, or all worksheets in the active workbook. Results appear in the VB Editor's immediate window. This VBA must be in the same module as the previous VBA.
Sub BenchmarkSelection()
Debug.Print MsecToCalculate(Selection)
End Sub
Sub BenchmarkActiveSheet()
Debug.Print MsecToCalculate(ActiveSheet.UsedRange)
End Sub
Sub BenchmarkWorkbook()
Dim ws As Worksheet, msec As Double, sum As Double
For Each ws In Worksheets
msec = MsecToCalculate(ws.UsedRange)
sum = sum + msec
Debug.Print ws.Name, msec, sum
Next ws
End Sub
2026-09-19 07:42:35
Miguel Antonio Suárez
Hi Allen, glad to read your notes you're fine in your new warm corner of the world. And, speaking of good news, I would like tu suggest you include MS Excel Latest News and MS Word Latest News, even MS Windows Latest News in your set of week tools. It would be great bonus of information about MS software latest improvements. Thanks for your attention.
2026-09-19 07:26:16
Elliot Penna
Or you could simply ask Gemini (or other A.I. tool) to identify the bottlenecks.
Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2026 Sharon Parq Associates, Inc.
Comments