Please Note: This article is written for users of the following Microsoft Excel versions: 2007, 2010, 2013, 2016, 2019, and Excel in Microsoft 365. If you are using an earlier version (Excel 2003 or earlier), this tip may not work for you. For a version of this tip written specifically for earlier versions of Excel, click here: Shortening ZIP Codes.
Written by Allen Wyatt (last updated December 2, 2024)
This tip applies to Excel 2007, 2010, 2013, 2016, 2019, and Excel in Microsoft 365
In the United States, ZIP Codes come in two formats: five-digit and nine-digit. (Actually, the five-digit ZIP Code is a subset of the nine-digit ZIP Code.) If you are in an Excel worksheet that contains address information, you may want to convert nine-digit ZIP Codes to their five-digit equivalent.
This is a rather easy task to accomplish, since all you need to do is strip everything after the fifth digit in the ZIP Code. Follow these steps:
=Left(G3, 5)
Figure 1. The Paste Special dialog box.
If you have an empty column to the right of your ZIP Codes, you can also use Excel's Text to Columns feature:
Figure 2. The first step of the Convert Text to Columns Wizard.
At this point you have the first five digits of the ZIP Code in the original column and the last four digits (if any) in the previously empty column to the right. You can delete the column containing the four digits, if desired.
If you need to truncate ZIP Codes quite often, you may be more interested in a macro-based approach. The following macro will do the trick:
Sub ZIPShorter() For Each cell In Selection cell.Value = Left(cell.Value, 5) Next End Sub
All you need to do is select the cells containing the ZIP Codes, and then run the macro.
Note:
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (10768) applies to Microsoft Excel 2007, 2010, 2013, 2016, 2019, and Excel in Microsoft 365. You can find a version of this tip for the older menu interface of Excel here: Shortening ZIP Codes.
Excel Smarts for Beginners! Featuring the friendly and trusted For Dummies style, this popular guide shows beginners how to get up and running with Excel while also helping more experienced users get comfortable with the newest features. Check out Excel 2013 For Dummies today!
Excel allows you to easily create names for different ranges in your workbook. If you ever want to clean up the list of ...
Discover MoreThe filtering capabilities of Excel are excellent, providing you with great control over which records in a worksheet are ...
Discover MoreSumming data is a common need in Excel. Summing lots of data based on a condition that needs to be met can be a bit more ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2024-12-07 05:23:21
JMJ
@J Woolley: thank you also !
2024-12-06 04:33:58
Kiwerry
@J Woolley: thank you for the additional information and the explanation of the curly brackets.
2024-12-05 17:10:02
J. Woolley
@Kiwerry and JMJ
It has come to my attention that the ZIPShorter macro in my first comment below might not work as intended:
1. If the selected ZIP codes are text formatted as Text, the macro's result is text (as expected).
2. If the selected ZIP codes are text formatted as General, the macro's result is numeric (not text).
3. If the selected ZIP codes are numeric formatted as Special Zip Code + 4, the macro's result is numeric with 4 leading zeros (like 00001-2345).
Willy Vanhaelen's ZIPShorter macro produces the same results.
Here's a version of my macro that prepends an apostrophe to always return text for the 3 cases listed above; it probably requires support for dynamic arrays (Excel 2021 or later) when the Selection is more than one cell:
Sub ZIPShorter()
Selection = Evaluate(" ""'"" & LEFT(" & Selection.Address & ", 5)" )
End Sub
Here's the equivalent version of Willy Vanhaelen's macro:
Sub ZIPShorter()
Selection = Evaluate(" ""'"" & IF({1}, LEFT(" & Selection.Address & ", 5)) ")
End Sub
Notice IF(1,...) is the same as IF(TRUE,...). With surrounding braces, {1} becomes an array constant with a single element. I believe Willy added braces like IF({1},...) to coerce the Application.Evaluate method to return an array result when the Selection is more than one cell. In this case the result is probably similar to a CSE (Ctrl+Shift+Enter) array.
2024-12-02 06:14:58
JMJ
@Willy Vanhaelen:
I'd be glad too to understand what is the purpose of the "...If{1}..." part in your formula...
Thank you
2024-12-02 05:58:25
Kiwerry
@Willy Vanhaelen and J. Woolley
Thank you for your interesting contributions on processing all of the cells in a selection.
@Willy Vanhaelen: If you have time, a brief hint on the use of the "...If{1}..." in your Evaluate statement would be appreciated.
2023-10-02 12:12:37
Surey Rios
This worked like a charm! Thanks!
2021-08-08 12:21:12
Willy Vanhaelen
@J. Woolley
I just found out that your version works in Excel 2019 but not in 2007. My version works in both.
2020-01-27 10:28:40
J. Woolley
@Willy Vanhaelen
Here's a simpler version of your one-liner:
Sub ZIPShorter()
Selection = Evaluate("LEFT(" & Selection.Address & ",5)")
End Sub
2020-01-25 12:07:53
Willy Vanhaelen
You can replace this macro with a one-liner:
Sub ZIPShorter()
Selection = Evaluate("IF({1},LEFT(" & Selection.Address & ",5))")
End Sub
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 © 2025 Sharon Parq Associates, Inc.
Comments