首页 > 计算机技术 > Excel url编码解码函数
2015
08-13

Excel url编码解码函数


今天想更精准的统计网站的访问来源,就把访问的链接的尾缀直接加多个相关的中文关键词,虽然链接是可以正常访问,但是统计工具是默认把它进行url编码的,就是类似%F4%45%S7%D1%C4这样的编码,不能直接看到这个是什么关键词,这个就要用到url的编码跟解码了,虽然网上很多这样的工具或批量工具,但想想,感觉这功能excel应该是可以实现的,而且平时统计也都是用到excel表格,要是用单独的批量工具,其实也很麻烦,excel能实现自然更好,然后百度一下,还真有,然后就整理如下面的函数和经验分享,希望对路过的小伙伴有用。

Excel url编码解码函数

url编码函数(中文编译成编码)

Function GetURL$(txt$, Optional LC = &H804)     

    Dim a() As Byte: a = StrConv(txt, vbFromUnicode, LC)

    For i = 0 To UBound(a)

        GetURL = GetURL & "%" & Right("0" & Hex(a(i)), 2)

    Next

End Function

url解码函数(乱码编译成中文)

Function URLDecode(ByVal strIn)

        URLDecode = ""

        Dim sl: sl = 1

        Dim tl: tl = 1

        Dim key: key = "%"

        Dim kl: kl = Len(key)

        sl = InStr(sl, strIn, key, 1)

        Do While sl > 0

            If (tl = 1 And sl <> 1) Or tl < sl Then

                URLDecode = URLDecode & Mid(strIn, tl, sl - tl)

            End If

            Dim hh, hi, hl

            Dim a

            Select Case UCase(Mid(strIn, sl + kl, 1))

                Case "U" 'Unicode URLEncode

                    a = Mid(strIn, sl + kl + 1, 4)

                    URLDecode = URLDecode & ChrW("&H" & a)

                    sl = sl + 6

                Case "E" 'UTF-8 URLEncode

                    hh = Mid(strIn, sl + kl, 2)

                    a = Int("&H" & hh) 'ascii码

                    If Abs(a) < 128 Then

                        sl = sl + 3

                        URLDecode = URLDecode & Chr(a)

                    Else

                        hi = Mid(strIn, sl + 3 + kl, 2)

                        hl = Mid(strIn, sl + 6 + kl, 2)

                        a = ("&H" & hh And &HF) * 2 ^ 12 Or ("&H" & hi And &H3F) * 2 ^ 6 Or ("&H" & hl And &H3F)

                        If a < 0 Then a = a + 65536

                        URLDecode = URLDecode & ChrW(a)

                        sl = sl + 9

                    End If

                Case Else 'Asc URLEncode

                    hh = Mid(strIn, sl + kl, 2) '高位

                    a = Int("&H" & hh) 'ascii码

                    If Abs(a) < 128 Then

                        sl = sl + 3

                    Else

                        hi = Mid(strIn, sl + 3 + kl, 2) '低位

                        a = Int("&H" & hh & hi) '非ascii码

                        sl = sl + 6

                    End If

                    URLDecode = URLDecode & Chr(a)

            End Select

            tl = sl

            sl = InStr(sl, strIn, key, 1)

        Loop

        URLDecode = URLDecode & Mid(strIn, tl)

    End Function

如何使用excel自定义函数

1.打开excel 

2.1ALT+F11,会打开VB窗口

3.找到“插入”,选择插入模块

4.把以上代码分别复制到不同模块,然后保存。

5.关掉VB窗口,直接在顶部的输入框输入函数名字即可。(跟使用其他默认函数的方法一样的)


效果预览

Excel url编码解码函数