EXCEL增加自定义函数,实现对收件人信息解析并分离数据

一、实现后的效果如下

=PERSONAL.XLSB!jionlpadd(B1,"province")  #获取省份的数据
=PERSONAL.XLSB!jionlpadd(B1,"city")  #获取市的数据
=PERSONAL.XLSB!jionlpadd(B1,"county")  #获取行政区划的数据
=PERSONAL.XLSB!addparser(B1,"name")  #获取收件人的数据
 =PERSONAL.XLSB!addparser(B1,"mobile")  #获取收件人电话的数据
=PERSONAL.XLSB!addparser(B1,"fulladd") #获取补全后、含省市区的地址数据

上面用到了两个自定义函数,一个是jionlpadd,一个是addparser

 

二、实现方法

1.先用Python新建一个解析地址的API(直接在EXCEL的VB编辑器里面做没成功),Python的代码如下:

from flask import Flask, request, jsonify
import jionlp

app = Flask(__name__)

@app.route('/parse_address', methods=['GET'])
def parse_address():
    value = request.args.get('value')
    parts = request.args.get('part', 'province,city,full_location')

    if not value:
        return jsonify({"error": "缺少参数 'value'"}), 400

    # 使用 parse_location 解析地址
    result = jionlp.parse_location(value)

    # 解析部分地址
    parts = parts.split(',')
    response_list = []

    if 'province' in parts:
        response_list.append(result.get('province', ''))
    if 'city' in parts:
        response_list.append(result.get('city', ''))
    if 'county' in parts:
        response_list.append(result.get('county', ''))
    if 'full_location' in parts:
        response_list.append(result.get('full_location', ''))


    return ", ".join(response_list)
    
if __name__ == '__main__':
    app.run(debug=True, host='0.0.0.0', port=5001)

运行上面的代码后,可在浏览器中测试效果,如下图:

2.打开 Excel.点击视图——点击宏——录制宏。在弹出的窗口中,选择存储宏的位置选择个人宏工作簿。给宏取一个名字,然后点击确定。点击停止录制,这将创建一个宏并自动将其存储在个人宏工作簿中。

3.按 Alt + F11 打开 VBA 编辑器。在左侧的 项目资源管理器 中,查找名为 VBAProject (PERSONAL.XLSB) 的项目。这个项目就是你个人宏工作簿。

4.展开 VBAProject (PERSONAL.XLSB),右键点击 Module1,选择 查看代码,然后可以将你要添加的 jionlpadd 函数代码粘贴到这里,并点击保存。

Function jionlpadd(x As String, y As String) As String
    Dim url As String
    Dim http As Object
    Dim response As String
    Dim parsedValue As String
    
    ' 构建请求的 URL
    url = "http://127.0.0.1:5001/parse_address?value=" & WorksheetFunction.EncodeURL(x) & "&part=" & y
    
    ' 创建 HTTP 请求对象
    Set http = CreateObject("MSXML2.XMLHTTP")
    
    On Error GoTo ErrHandler ' 如果发生错误,跳到错误处理程序
    
    http.Open "GET", url, False
    http.Send
    
    ' 获取响应内容
    response = http.responseText
    
    ' 输出响应内容,用于调试
    Debug.Print "Response: " & response
    
    ' 检查返回的响应内容并处理
    If Len(response) > 0 Then
        ' 去除多余的空格或特殊字符
        response = Trim(response)
        
        ' 直接返回解析结果
        parsedValue = response
    Else
        parsedValue = "Error: Empty response"
    End If
    
    ' 返回解析后的结果
    jionlpadd = parsedValue
    Exit Function
    
ErrHandler:
    ' 错误处理
    jionlpadd = "Error: " & Err.Description
End Function

5.启用宏,在 Excel 中点击 文件 > 选项 > 信任中心 > 信任中心设置 > 宏设置。选择 启用所有宏 和 信任对 VBA 工程对象模型的访问

至此,就可以在所有的EXCEL表格,使用自定义的jionlpadd,对混合的收件地址数据进行解析和分离,得到自己想要的数据

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇