【问题标题】:Convert a URL formatted content to plain text in microsoft EXCEL在 Microsoft EXCEL 中将 URL 格式的内容转换为纯文本
【发布时间】:2015-12-06 08:26:27
【问题描述】:

我有 URL 格式的内容,通常我只是手动翻译 1×1m 但这次有数千个条目,例如:-

%E5%B7%B2%E4%BB%8E%E5%B8%90%E6%88%B7zh*****%40outlook.com%E5%88%A0%E9%99%A48618650533*%E3%80%82%E4%B8%8D%E6%98%AF%E4%BD%A0%EF%BC%9F
%E7%AE%A1%E7%90%86%E9%A2%84%E8%AE%A2%0A
https%3A%2F%2Faccount.live.com%2Fa
OTO+GLOBAL+Certification+No%3A%5B6198%5D
Deluxe+Room+-1+%E9%97%B4%0A
Ihre+Agoda+Buchung+Nr.+77083713+ist+bes %C3%A4tigt%21+Verwalten+Sie+Ihre+B
%E6%82%A8%E7%9A%84Agoda%E8%AE%A2%E5%8D%95%2877083753%29%E5%B7%B2%E7%A%AE%E8%AE%A4%EF%BC%81+%E4%BD%BF%E7%94%A8%E6%88%91%E4%BB%AC%E7%9A%84%E5%85%8D%E8%B4%B9%E5%AE%A2%E6%88%B7%E7%AB%AFhttp%3A%2F%2Fapp-agoda.com%2FGetTheApp%EF%BC%8C%E8%BD%BB%E6%9D%BE

有没有办法在 Microsoft Excel 中将所有这些内容转换为纯英文文本?

问候

【问题讨论】:

  • Excel 似乎不具备处理此问题的本机能力。但是,似乎有一些add-ons 可用。

标签: excel url


【解决方案1】:

没有内置函数可以处理此问题,但可以使用自定义函数、安装第三方插件或使用替代命令:

使用自定义 VBA 函数

来源:http://www.freevbcode.com/ShowCode.asp?ID=1512

Public Function URLDecode(StringToDecode As String) As String

Dim TempAns As String
Dim CurChr As Integer

CurChr = 1

Do Until CurChr - 1 = Len(StringToDecode)
  Select Case Mid(StringToDecode, CurChr, 1)
    Case "+"
      TempAns = TempAns & " "
    Case "%"
      TempAns = TempAns & Chr(Val("&h" & _
         Mid(StringToDecode, CurChr + 1, 2)))
       CurChr = CurChr + 2
    Case Else
      TempAns = TempAns & Mid(StringToDecode, CurChr, 1)
  End Select

CurChr = CurChr + 1
Loop

URLDecode = TempAns
End Function

使用第三方插件

来源:SeoTools(需要安装)

=UrlDecode(your_string_here)

使用替代命令

来源:https://searchmarketingcorner.wordpress.com/2013/03/27/creating-an-excel-formula-to-encode-or-unencode-urls/

将下面的公式粘贴到单元格的右侧,以便对该单元格的内容进行 URL 解码

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(CELL_TO_BE_DECODED,"%3F","?"),"%20"," "),"%25", "%"),"%26","&"),"%3D","="),"%7B","{"),"%7D","}"),"%5B","["),"%5D","]")

或者为了使用 GUID,为破折号再添加一个 SUBSTITUTE。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(CELL_TO_BE_DECODED,"%3F","?"),"%20"," "),"%25", "%"),"%26","&"),"%3D","="),"%7B","{"),"%7D","}"),"%5B","["),"%5D","]"),"%2D","-")

为了完整起见,这里是 URL 编码的反向公式。这与 URL 编码公式相同,但 new_textold_text 的位置互换了。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(CELL_TO_BE_ENCODED,"?","%3F")," ","%20"),"%","%25"),"&","%26"),"=","%3D"),"{","%7B"),"}","%7D"),"[","%5B"),"]","%5D")

或者为了使用 GUID,为破折号再添加一个 SUBSTITUTE。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(CELL_TO_BE_ENCODED,"?","%3F")," ","%20"),"%","%25"),"&","%26"),"=","%3D"),"{","%7B"),"}","%7D"),"[","%5B"),"]","%5D"),"-","%2D")

【讨论】:

  • 喜欢你包含公式的事实。这个答案的一个很好的补充是解码的替代公式。无论如何:谢谢!
【解决方案2】:

这是一个实际工作的用户定义函数 (UDF)。

在标准代码模块中,放置这个例程:

Public Function URLDecode(url$) As String
    With CreateObject("ScriptControl")
        .Language = "JavaScript"
        URLDecode = .Eval("unescape(""" & url & """)")
    End With
End Function

现在您可以从工作表中调用它,就像内置 Excel 函数一样。

例如,如果您的编码 URL 文本在单元格 A1 中,您可以在单元格 B1 中输入以下公式:

=URLDecode(A1)

就是这样。完全解码的 URL 现在位于单元格 B1 中。

请注意,这是真正的交易。这不是试图替换几个字符。这通过 Microsoft Script Control 使用 JavaScript 的全部功能来完全解码 URL。

【讨论】:

    【解决方案3】:

    以下为 URL 中的逗号添加解码。只需为%2C 增加一个SUBSTITUTE。这只是添加到 Carlos 4 年前的帖子。

    =SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(CELL_TO_BE_DECODED,"%3F","?"),"%20"," "),"%25", "%"),"%26","&"),"%3D","="),"%7B","{"),"%7D","}"),"%5B","["),"%5D","]"),"%2D","-"),"%2C",",")
    

    【讨论】:

      【解决方案4】:

      您可以在不使用 VBA 的情况下使用数组公式来做到这一点。如果A1是要解码的单元格,输入这个公式,然后按Ctrl-Shift-Enter:

      =TEXTJOIN("", FALSE,
          MID(A1,
              FIND("*",
                  SUBSTITUTE("%DD"&A1,"%","*",  ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,"%",""))+1))   )
              ),
              FIND("*",
                  SUBSTITUTE(A1&"%","%","*",    ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,"%",""))+1))   )
              ) - FIND("*",
                  SUBSTITUTE("%EE"&A1,"%","*",  ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,"%",""))+1))   )
              )
          ) & IFERROR(CHAR(HEX2DEC(MID(A1,
              FIND("*",
                  SUBSTITUTE(A1&"%","%","*",    ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,"%",""))+1))   )
              )+1,
             2
          ))),"")
       )
      

      不按Ctrl-Shift-Enter就不行。

      【讨论】:

      • 只有在要解码的字符串中没有 * 时才有效。否则,请在公式中使用不同的字符。它不适用于给定的 URL,因为这是一个无效的编码 URL(其中包含 %A%)。它仅适用于有效的 URL 编码。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      • 2019-01-17
      • 1970-01-01
      • 2011-04-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多