解析 url 中的字符串 excel

Parse url string in excel

我想从 Excel 中的 url 字符串中解析一个数字,然后使用公式将其粘贴到另一个单元格中。例如,我有 https://system.google.com/childrecords.nl?id=668&t=CustomField&rectype=-704&weakdeps=T。我想使用一个公式来提取“668”并将其放在相邻的单元格中。关于如何解决这个问题有什么想法吗?

=LEFT(MID(A1,SEARCH("id=",A1)+3,15),SEARCH("&",MID(A1,SEARCH("id=",A1)+3,15))-1)

如果您总是想要第一组数字并且两边总是有一个 = 符号和一个 & 那么这将起作用:

=MID(A1,SEARCH("=",A1)+1,SEARCH("&",A1)-SEARCH("=",A1)-1)

否则,这是一个可以工作的 UDF。您可以将其粘贴到 Visual Basic 编辑器 Alt+F11 的常规模块中,并像使用任何其他公式一样使用它:

Option Explicit

Public Function FindFirstSetOfNumbers(MyRange As Range) As String

Dim NumCounter As Integer
Dim Start As Integer

Start = Application.Evaluate("=MIN(FIND({0,1,2,3,4,5,6,7,8,9}," & MyRange.Address & "&""0123456789""))")

For NumCounter = Start To Len(MyRange)
    If IsNumeric(Mid(MyRange, NumCounter, 1)) Then
        FindFirstSetOfNumbers = FindFirstSetOfNumbers & Mid(MyRange, NumCounter, 1)
    Else
        Exit For
    End If
Next NumCounter

End Function

只需在任意单元格中键入 =FindFirstSetOfNumbers(YourRange),然后按 enter=VALUE(FindFirstSetOfNumbers(YourRange)) 即可将其转换为数字数据类型。

我使用以下公式:

=MID($A2,FIND(B&"=",$A2)+LEN(B)+1,FIND("&",$A2,FIND(B&"=",$A2)+LEN(B))-FIND(B&"=",$A2)-LEN(B)-1)

假设 URL 在 A 列上并且列标题是所需的参数。

$A2 = the URL string
B = parameter name

$ 位于正确的位置,允许将公式复制到多个列和所有行。

已知蛀牙:

  1. 如果名称是另一个参数名称的一部分,则必须在短参数名称前加上前缀 &。例如,在 ?popup_id=1&up_id=2 中,up_id 的列标题将不正确 1,但 &up_id 将按预期显示为 2
  2. 任何 non-plain-english 值都可能被编码,但没有原生的 excel 函数来解码它们。所以 a%20value 不会更改为 a value.

用法示例:https://docs.google.com/spreadsheets/d/1DuUa8PWdf07PnZzFNouGF-byGs-3ygH44DvJbvdR00Q/edit?usp=sharing