从Excel文本单元格中提取URL

5
我有一个包含文本单元格(通常是小段落)的Excel文档中的一列。我想找到一种方法(最好是公式),按行提取这些单元格中的任何网址,并将它们添加到另一列。
我已经使用MID和FIND进行了一些尝试,通过搜索“http”很容易找到这些URL的开头,但我无法找到URL的长度,以便于提取。
真的很期待任何人能提供的帮助。它让我感到疯狂!
4个回答

4

为了考虑字符串末尾发生的URL,您需要添加一些错误处理。

这应该适用于字符串中间和字符串末尾:

=MID(C11,FIND("http",C11),IFERROR(FIND(" ",C11,FIND("http",C11))-1,LEN(C11))-FIND("http",C11)+1)

1
刚刚添加了一个小调整,在文本不包含任何“http”实例的情况下,将整个内容包装在IFERROR中。 - Chris Vasquez
好的呼叫 @ChrisVasquez! - guitarthrower

1

好的,我想我已经让它工作了。看看:

=MID(C11,FIND("http",C11),(FIND(" ",C11,FIND("http",C11))-FIND("http",C11))-4)

0

一旦您确定了URL的起始位置,请查找该位置之后的第一个空格,这应该是URL的结尾。


1
空间或字符串结束 - z̫͋
这是个好主意。假设我已经使用SEARCH或FIND找出字符串从第24个字符开始,那么从那里获取字符串长度的最佳方法是什么? - Chris Vasquez
好的,我觉得我已经做出一些东西了。让我知道你的想法。 - Chris Vasquez

-1

你最有可能的选择是确保你可以依赖于URL以相同的方式形成。比如,始终以“http”开头,以“/”或“.com”结尾。然后,你可以使用公式来查找索引开始、索引结束,并获取中间所有内容的MID。

它应该看起来像这样:

=FIND("http",D3)

返回第一部分的位置。

=FIND(".com",D3)

返回结束位置的位置

=MID(D3,D9,D10-D9+4)

返回从开始到结束+4(以允许这4个字符)提供的字符串


假设一个URL以.com结尾是完全错误的。它可能是域名的开头(例如somesubdomain.computer.net)。但更重要的是,因为除了.com之外还有很多TLD - z̫͋
这就是为什么我说“假设”。它同样也可能以“HTML”或“PHP”结尾。不过,概念验证无论如何都是正确的。 - durbnpoisn
不是这样的。我们假设域名以“.com”结尾。那么URL的其余部分呢?例如在“http://www.google.com/imghp?hl=en”中的“/imghp?hl=en”。 - z̫͋

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接