level 4
IP科技
楼主
各位吧友,今天分享一个超实用的办公自动化技巧:如何用Excel宏搭配离线数据库,一键批量查询IP归属地。无需手动一个个查,特别适合需要处理大量IP数据的场景,比如网络安全分析、用户行为统计或者市场调研等。
一、为什么要用Excel宏做这个?
Excel大家都会用,配合VBA宏可以自动完成重复操作。如果有一份本地IP数据库(比如CSV文件),查询速度飞快,还不依赖网络,适合频繁或批量查询的需求。
二、具体操作步骤(含代码)
1️⃣ 准备本地IP数据库
可以自己整理,也可以用现成的IP库(例如IP数据云的离线库)。数据库至少包含IP段、归属地、运营商这几列,存成CSV格式,例如:
IP地址,归属地,运营商
192.168.1.1,北京市,中国联通
180.76.15.18,上海市,中国电信
2️⃣ Excel宏代码示例(单次查询)
打开Excel,按 Alt + F11 进入VBA编辑器,插入模块,粘贴以下代码:
Sub 查询IP归属地() Dim ip As String ip = InputBox("输入要查询的IP地址", "IP查询") Dim csvPath As String csvPath = "C:\你的路径\ip_database.csv" '改成你自己的文件路径 Dim lines() As String Open csvPath For Input As #1 lines = Split(Input$(LOF(1), 1), vbCrLf) Close #1 Dim i As Integer, data() As String For i = 0 To UBound(lines) data = Split(lines(i), ",") If data(0) = ip Then MsgBox "归属地:" & data(1) & " 运营商:" & data(2) Exit Sub End If Next i MsgBox "没找到这个IP的信息"End Sub
3️⃣ 批量查询版
如果A列有一批IP需要查,结果填到B、C列,可以用下面这个:
Sub 批量查询IP归属地() Dim csvPath As String csvPath = "C:\你的路径\ip_database.csv" Dim lines() As String Open csvPath For Input As #1 lines = Split(Input$(LOF(1), 1), vbCrLf) Close #1 Dim i As Integer, j As Integer, ip As String, data() As String For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row ip = Cells(i, 1).Value For j = 0 To UBound(lines) data = Split(lines(j), ",") If data(0) = ip Then Cells(i, 2).Value = data(1) Cells(i, 3).Value = data(2) Exit For End If Next j Next i MsgBox "批量查询完成!"End Sub
三、进阶优化建议
数据库可以用MySQL,速度更快,适合几十万以上的数据量
结果自动高亮:选中归属地列,条件格式里按运营商设不同颜色
定时自动更新:搭配Windows计划任务,定期运行宏更新报告
数据库记得选更新及时的,比如IP数据云这种日更的库,字段也全(20多个维度)
四、总结
用Excel宏+本地IP库,轻松实现批量自动化查询,尤其适合经常处理IP数据的岗位。方法简单,效率提升明显,还能避免手动出错。
有疑问或需要代码修改的,欢迎回帖讨论!如果有更好的方法也欢迎分享~
#Excel技巧 #
IP查询
#办公自动化 #
VBA宏
离线库获取 → https://ipdatacloud.com/product/ipguishu
2026年02月10日 05点02分
1
一、为什么要用Excel宏做这个?
Excel大家都会用,配合VBA宏可以自动完成重复操作。如果有一份本地IP数据库(比如CSV文件),查询速度飞快,还不依赖网络,适合频繁或批量查询的需求。
二、具体操作步骤(含代码)
1️⃣ 准备本地IP数据库
可以自己整理,也可以用现成的IP库(例如IP数据云的离线库)。数据库至少包含IP段、归属地、运营商这几列,存成CSV格式,例如:
IP地址,归属地,运营商
192.168.1.1,北京市,中国联通
180.76.15.18,上海市,中国电信
2️⃣ Excel宏代码示例(单次查询)
打开Excel,按 Alt + F11 进入VBA编辑器,插入模块,粘贴以下代码:
Sub 查询IP归属地() Dim ip As String ip = InputBox("输入要查询的IP地址", "IP查询") Dim csvPath As String csvPath = "C:\你的路径\ip_database.csv" '改成你自己的文件路径 Dim lines() As String Open csvPath For Input As #1 lines = Split(Input$(LOF(1), 1), vbCrLf) Close #1 Dim i As Integer, data() As String For i = 0 To UBound(lines) data = Split(lines(i), ",") If data(0) = ip Then MsgBox "归属地:" & data(1) & " 运营商:" & data(2) Exit Sub End If Next i MsgBox "没找到这个IP的信息"End Sub
3️⃣ 批量查询版
如果A列有一批IP需要查,结果填到B、C列,可以用下面这个:
Sub 批量查询IP归属地() Dim csvPath As String csvPath = "C:\你的路径\ip_database.csv" Dim lines() As String Open csvPath For Input As #1 lines = Split(Input$(LOF(1), 1), vbCrLf) Close #1 Dim i As Integer, j As Integer, ip As String, data() As String For i = 1 To Cells(Rows.Count, 1).End(xlUp).Row ip = Cells(i, 1).Value For j = 0 To UBound(lines) data = Split(lines(j), ",") If data(0) = ip Then Cells(i, 2).Value = data(1) Cells(i, 3).Value = data(2) Exit For End If Next j Next i MsgBox "批量查询完成!"End Sub
三、进阶优化建议
数据库可以用MySQL,速度更快,适合几十万以上的数据量
结果自动高亮:选中归属地列,条件格式里按运营商设不同颜色
定时自动更新:搭配Windows计划任务,定期运行宏更新报告
数据库记得选更新及时的,比如IP数据云这种日更的库,字段也全(20多个维度)
四、总结
用Excel宏+本地IP库,轻松实现批量自动化查询,尤其适合经常处理IP数据的岗位。方法简单,效率提升明显,还能避免手动出错。
有疑问或需要代码修改的,欢迎回帖讨论!如果有更好的方法也欢迎分享~
#Excel技巧 #
IP查询
#办公自动化 #
VBA宏
离线库获取 → https://ipdatacloud.com/product/ipguishu