【问题标题】:Extract URL's from a Cell of Text in Excel从 Excel 中的文本单元格中提取 URL
【发布时间】:2014-08-21 14:38:42
【问题描述】:

我有一个 Excel 文档,其中有一列包含文本单元格(通常是小段落)。我想找到一种方法(最好是公式)来逐行提取任何 url 的那些单元格并将它们添加到另一列。

我一直在搞乱 MID 和 FIND所以我可以抓住它。

真的很期待任何人都可以提供的任何帮助。快把我逼疯了!

【问题讨论】:

    标签: excel vba parsing excel-formula formula


    【解决方案1】:

    要考虑到出现在字符串末尾的 URL,您需要添加一些错误处理。

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

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

    【讨论】:

    • 只是添加了一个小调整,在文本不包含任何“http”实例的情况下将整个内容包装在一个 IFERROR 中。
    • 好电话@ChrisVasquez!
    【解决方案2】:

    好的,我想我已经成功了。看看吧:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

      • 空格或字符串结尾
      • 这是个好主意。假设我使用 SEARCH 或 FIND 来找出字符串从 char 24 开始,那么从那里获取字符串长度的最佳方法是什么?
      • 好的,我想我有一些工作要做。让我知道你的想法。
      【解决方案4】:

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

      应该是这样的:

      =FIND("http",D3)
      

      返回第一部分的位置。

      =FIND(".com",D3)
      

      返回结束的位置

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

      返回由 start 到 end+4 提供的字符串(以允许这 4 个字符)

      【讨论】:

      • 假设 URL 以 .com 结尾是完全错误的。它也可能是域名的开头(例如:somesubdomain.computer.net)。但更重要的是因为除了.com之外还有很多TLD
      • 这就是我说“假设”的原因。它可以很容易地以“HTML”或“PHP”结尾。尽管如此,概念证明是正确的。
      • 好吧,不。假设域以.com 结尾。其余的网址呢?比如/imghp?hl=enhttp://www.google.com/imghp?hl=en
      猜你喜欢
      • 2011-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-17
      • 2017-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多