This article provides some advice on how to avoid compatibility issues. An overview is also given of a number of important differences between the various Excel versions. This does not concern differences in ease of use or operation, but in particular differences that can lead to compatibility problems.
Dealing with compatibility issues
Many different versions of Excel have already been released. When a new version is released, an attempt is made to ensure that it is "backward compatible" as much as possible, which means that it is possible to read older versions and edit them in the newer version. This is generally quite good, only with macros / VBA this can sometimes cause problems. If applications are developed that must also be suitable for older versions, then here are a few points to consider:
- New functionality will obviously not work in older versions. This also applies to VBA code based on this new functionality. A next section provides an overview of new functionality per version.
- If in Excel 2007 or higher the file is saved in an Excel 97-2003 format by means of Save If, an automatic check for compatibility problems follows. Macros / VBA are not checked. This compatibility check can also be started via File → Info → Check for Issues → Check Compatibility.
- With Application.Version the Excel version used can be read with VBA. If desired, specific VBA code can be created per version.
- Make use of late binding in VBA. This makes used libraries independent of the version number of this library and prevents them from not being loaded in older versions.
- Try to make VBA code version independent as much as possible. For example, use Rows.Count instead of "hard" coding the last row of a worksheet (65536 for Excel 2003 and 1048576 for Excel 2007 and higher).
32-bits versus 64-bits version
From Excel version 2010, a 32-bit and a 64-bit version of Excel is available. The 64-bit version does not offer any additional functionality over the 32-bit version, but the 64-bit version is able to address larger memory ranges and can run faster. In the vast majority of cases, the 32-bit version is fine. The main drawback of using the 64-bit version is that it can cause compatibility issues with previous versions. This only applies if VBA/macro's are used. For example, not all (ActiveX) controls of the 32-bit version are supported in the 64-bit version (e.g. the TreeView, ListView, ImageList, Slider etc.). In addition, adjustments will have to be made to the VBA code in case so-called API calls are used.
Overview of differences in functionalities between Excel versions
In this and the next section, a number of important differences in functionalities between the various Excel versions are mentioned. Excel version 2003 is used as the basis for the comparison. An indication is given of what has changed in the 2007, 2010, 2013, 2016, 2019 and 365 version compared to the 2003 version. This does not include the 64-bit versions and the versions for the Mac, tablets and phones are also disregarded. The differences between the different service packs of the versions are also not discussed. The overview is not complete and it is not the intention to present a complete overview. That is almost impossible. The list would then become very long and very detailed. This only concerns a number of important differences.
Subject | 2007 | 2010 | 2013 | 2016 | 2019 | 2021 | 365¹) |
---|---|---|---|---|---|---|---|
General | |||||||
1,048,576 rows instead of 65,536 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
16,384 column instead of 256 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
menu operation by means of ribbon | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
file extension xlsx/xlsm/xlsb instead of xls | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
single document interface (SDI instead of MDI) | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
sort data on more than 3 levels | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
table instead of list | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
table slicers | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
sparklines | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
flashfill | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
dynamic array formulas | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ |
Formatting | |||||||
16 million colors instead of 256 | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
themes and styles | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Conditional formatting | |||||||
more than 3 conditions | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
can refer directly to other worksheets | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Pivot tables | |||||||
slicers | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
timeline slicer | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
count unique values (distinct count) | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
repeat item labels or field labels | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
Graphs | |||||||
box- & whisker | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ |
histogram | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ |
chartgraph | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ |
pareto | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ |
funnelgraph | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ |
waterfall | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ |
VBA²) | |||||||
datatype LongPtr | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
property CountLarge | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
property DisplayFormat | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
event Workbook_AfterSave | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
command Application.FileSearch | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ |
¹) Whether or not something is available in Excel for Office 365 depends on the type of subscription
²) All functionalities newly introduced in a version also have consequences for VBA, of course, but that will not be considered here.
Overview of which function is available in which version
Function | 2007 | 2010 | 2013 | 2016 | 2019 | 2021 | 365¹) |
---|---|---|---|---|---|---|---|
AGGREGATE | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
ARRAYTOTEXT | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
AVERAGEIF | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
AVERAGEIFS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
BASE | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
BITAND | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
BITOR | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
BITXOR | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
BYCOL | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
BYROW | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
COUNTIFS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
DAYS | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
DECIMAL | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
FIELDVALUE | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
IFERROR | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
IFNA | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
IFS | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ |
ISOMITTED | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
FILTER | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ |
FILTERXML | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
FORMULATEXT | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
ISFORMULA | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
ISOWEEKNUM | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
LAMBDA | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
LET | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ |
MAKEARRAY | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
MAP | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
MAXIFS | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ |
MINIFS | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ |
MODE.SNGL | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
MODE.MULT | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
NETWORKDAYS.INTL | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
RANDARRAY | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ |
RANK.AVG | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
RANK.EQ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
REDUCE | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
SCAN | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
SEQUENCE | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ |
SHEET | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
SHEETS | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
SORT | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ |
SORTBY | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ |
STOCKHISTORY | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
SUMIFS | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
SWITCH | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ |
TEXTJOIN | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ | ✓ |
UNIQUE | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ |
VALUETOTEXT | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ |
WEBSERVICE | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
WERKDAY.INTL | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ | ✓ |
XLOOKUP | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ |
XMATCH | ✕ | ✕ | ✕ | ✕ | ✕ | ✓ | ✓ |
XOR | ✕ | ✕ | ✓ | ✓ | ✓ | ✓ | ✓ |
¹) Whether or not something is available in Excel for Office 365 depends on the type of subscription
Questions / suggestions
Hopefully this article has helped to better understand the compatibility between Excel versions. If you have any questions about this topic or suggestions for improvement, please post a comment below.