汤姆使用很多地址列表。使他发疯的一件事是街道地址位于单个单元格中。汤姆在一个牢房中需要门牌号码,而在另一个牢房中需要街道。因此,如果地址为“ 1234 Maple Glen Ave.”,则他需要在一个单元格中输入“ 1234”,并需要“ Maple Glen Ave”。在另一个。他可以将门牌号复制到街道名称之前的一列中,但是重新输入数字然后将其从街道名称中删除是一个漫长的过程。汤姆想知道是否有一种更简单的方法可以从街道名称中“分割”门牌号码。

有两种方法可以完成此任务。有人可能会认为使用“文本转栏”工具(在功能区的“数据”选项卡上)

会给出预期的结果。不幸的是,这不是分离门牌号的最佳方法。原因很简单:如果通过指定分隔符来使用该工具,那么唯一有意义的就是空格。但是,如果这样做,您将得到“ 1234 Maple Glen Ave”。分布在四列而不是所需的两列中。然后,您需要想出一种将街道名称粘贴回去的方法。

可能使用“文本到列”工具的另一种方法是使用固定的列宽(而不是定界符)。仅当您的所有地址的门牌号中的位数相同时,此方法才有效。当然,在大多数数据集中情况并非如此-门牌号可以是几乎任何数字,甚至可以包含非数字字符(例如“ 1234A”,“ 1234-B”或“ 1234-36”)。

一种可行的方法是使用公式将原始地址分开。您的公式可以在地址的第一个空格中键入,从而将部分返回到该空间的左侧或将其返回到右侧。给定单元格A1中的地址,这是提取空格之前所有内容的方法:

=LEFT(A1,FIND(" ",A1)-1)

如果您完全确定地址将不包含任何非数字字符,则可以将公式包装在VALUE函数中,以便最终以门牌号作为数字值:

=VALUE(LEFT(A1,FIND(" ",A1)-1))

要获取第一个空格之后的地址部分,可以使用以下公式:

=MID(A1,FIND(" ",A1)+1,LEN(A1))

如果愿意,可以设计一个公式,该公式引用您用第一个公式提取的门牌号。例如,假设您的门牌号码公式在B列中;您可以在C列中放置以下内容:

=TRIM(SUBSTITUTE(A1,B1,))

将您的公式放在B和C列中(以及地址在A列中),您可以将公式向下复制,以获得所需的任何行。然后,您可以选择B:C范围,并使用“选择性粘贴”将值粘贴回这些单元格中。完成此操作后,您可以安全地删除A列中的原始地址。

如果您经常需要处理许多地址,则最好使用宏进行拆分。下面的示例宏可在您运行时选择的任何范围上运行。它将在所选内容的左侧插入一列空白单元格,并用门牌号填充这些单元格,然后调整地址,以便不再包括门牌号。

Sub SplitAddress()

Dim c As Range     Dim j As Integer     Dim n As String     Dim addr As String

Selection.Insert Shift:=xlToRight     Selection.Offset(0, 1).Select

For Each c In Selection         j = InStr(1, c, " ")

n = Left(c, j)

c.Offset(0, -1) = n         addr = Trim(Right(c, Len(c) - j))

c = addr     Next End Sub

如果愿意,可以创建一个仅返回门牌号的用户定义函数:

Function GrabHouseNumber(Raw As String) As Text     Dim x As Variant     Dim House As Variant

x = Split(Raw, " ")     'use space char to split elements into array     House = x(0)   'first element of array     If Left(House, 1) Like "#" Then         'First char is numeric digit         GrabHouseNumber = House  'set return value as house number     Else         GrabHouseNumber = ""  'First char is text, so not a house number     End If End Function

使用用户定义的函数的一个优点是它可以检查原始地址的第一部分是否实际上以数字开头。如果不是,则假定该地址不是以门牌号开头。 (整个门牌号不必是数字;只需要以数字开头。)

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(13350)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。