【发布时间】:2014-08-21 14:38:42
【问题描述】:
我有一个 Excel 文档,其中有一列包含文本单元格(通常是小段落)。我想找到一种方法(最好是公式)来逐行提取任何 url 的那些单元格并将它们添加到另一列。
我一直在搞乱 MID 和 FIND所以我可以抓住它。
真的很期待任何人都可以提供的任何帮助。快把我逼疯了!
【问题讨论】:
标签: excel vba parsing excel-formula formula
我有一个 Excel 文档,其中有一列包含文本单元格(通常是小段落)。我想找到一种方法(最好是公式)来逐行提取任何 url 的那些单元格并将它们添加到另一列。
我一直在搞乱 MID 和 FIND所以我可以抓住它。
真的很期待任何人都可以提供的任何帮助。快把我逼疯了!
【问题讨论】:
标签: excel vba parsing excel-formula formula
要考虑到出现在字符串末尾的 URL,您需要添加一些错误处理。
这应该适用于中间字符串和字符串结尾:
=MID(C11,FIND("http",C11),IFERROR(FIND(" ",C11,FIND("http",C11))-1,LEN(C11))-FIND("http",C11)+1)
【讨论】:
好的,我想我已经成功了。看看吧:
=MID(C11,FIND("http",C11),(FIND(" ",C11,FIND("http",C11))-FIND("http",C11))-4)
【讨论】:
一旦您确定了 URL 的起始位置,查找之后的第一个空格,应该是 URL 的结尾。
【讨论】:
您最可能的选择是确保您可以依赖以相同方式形成的 URL。比如,总是以“http”开头,总是以“/”或“.com”结尾。然后,您可以使用公式来查找索引开始、索引结束,并获取中间所有内容的 MID。
应该是这样的:
=FIND("http",D3)
返回第一部分的位置。
=FIND(".com",D3)
返回结束的位置
=MID(D3,D9,D10-D9+4)
返回由 start 到 end+4 提供的字符串(以允许这 4 个字符)
【讨论】:
.com 结尾是完全错误的。它也可能是域名的开头(例如:somesubdomain.computer.net)。但更重要的是因为除了.com之外还有很多TLD
.com 结尾。其余的网址呢?比如/imghp?hl=enhttp://www.google.com/imghp?hl=en