约旦需要将URL分解为各个组成部分。如果完整的URL(http://www.xyz.com/business)在A列中,则他希望有一种方法在B列中拥有主域(xyz或xyz.com),而在该列中具有路径(企业) C.

您可以采用多种方法来解决此问题。如果只需要执行一两次,则使用功能区“数据”选项卡上的“文本到列”工具可能最简单。当您指定希望工具如何将字符串分开时,请指示您希望它使用斜杠(/)作为分隔符。根据原始URL的组合方式,可能需要一些“清理”

工具完成后,它又快速又容易。

如果您更频繁地执行此操作,则可能会受益于使用公式来操作URL。第一个任务是从URL中拉出域,但这比听起来有些棘手。例如,URL可以以任意数量的协议说明符(例如http://,https://,ftp://等)开头,也可以根本不以协议说明符开头。另外,您可能要删除“ www”。

术语,因为有些人认为它是无关紧要的。要弄清楚“真实”域的起始位置,可以在B列中使用以下公式:

=IFERROR(FIND("www.",$A1)+4,IFERROR(FIND("://",$A1,1)+3,1))

返回“ www。”之后第一个字符的位置(如果可用)的操作。如果不存在,则返回“://”之后的第一个字符的位置(如果存在)。如果不存在,则返回数字1,因为URL不包含任何协议前缀或www。

使用B列中的值,您就可以开始实际拉出所需的零件了。如前所述,放在C列中的以下内容将返回域。实际上,它返回从B列中的字符位置到下一个斜杠(/)的所有内容。

=MID(A1,B1,IFERROR(FIND("/",A1,B1)-B1,LEN(A1))

如果原始URL包含“ www.xyz.com”,则公式将返回“ xyz.com”。如果包含除“ www”以外的其他子域

(例如“ research.xyz.com”),则返回包含子域的完整域。如果域名后没有斜杠(/),则包括IFERROR函数。 (如果FIND函数找不到所需的项目,则返回#VALUE错误。)

要选择域之后的路径,可以在D列中使用以下公式:

=IFERROR(MID(A1,FIND("/",A1,B1)+1,LEN(A1)),"")

该公式将返回域名后的第一个斜杠(/)之后的所有内容。如果域名后没有斜杠,则不返回任何内容。 (这再次归功于IFERROR函数的使用。)

同样,使用上述公式的关键是B列中的helper列。如果您想消除对B列的需要,则需要在其他两个公式中将B1的所有实例替换为该公式(无等号)属于B1。当然,这会使其他两个公式特别长,尤其是针对C列的公式。

如果需要,您可以创建一个宏,该宏实际上执行相同的操作,而无需帮助器列。下面的示例希望您进行选择,然后将URL的各个部分从单元格中拉出并将它们放入选择项右侧的两列中。

Sub GetURLParts()

Dim c As Range     Dim sRaw As String     Dim J As Integer          For Each c In Selection         sRaw = c.Text         J = InStr(sRaw, "://")

If J > 0 Then sRaw = Mid(sRaw, J + 3)

If LCase(Left(sRaw, 4)) = "www." Then             sRaw = Mid(sRaw, 5)

End If         J = InStr(sRaw, "/")

If J > 0 Then             c.Offset(0, 1) = Left(sRaw, J - 1)

c.Offset(0, 2) = Mid(sRaw, J + 1)

Else             c.Offset(0, 1) = sRaw             c.Offset(0, 2) = ""

End If     Next c End Sub

注意:

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

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

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

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