如何在Excel中find基于IP地址的位置

我有一个与IP相关的大约5000个用户事件的电子表格,我正在尝试使用IP来确定使用Excel公式的位置。 我的日志中的IP被组织为“虚线四边形” (十进制符号)。

我想VLOOKUP是这里的一种方式,所以我下载了WEBNET77的IPV4 IpToCountry数据库 ,这个数据库看起来像是一个全面的,最新的资源(这里有更好的资源吗?)。 该数据库包含大约140K行的IP范围,其结构如下:

IP地址查找

Colum标签A-G分别是:IP FROM,IP TO,REGISTRY,ASSIGNED,CTRY,CNTRY,COUNTRY。

请注意,一个问题:列A到B代表一个IP范围,但它们是“长格式”(我起初没有意识到这一点)。 所以,在使用这些值作为参考之前,我必须转换我的虚线四边形。 然后,我想在我的日志中为每个IP返回国家(G列)。

任何帮助吗?

如果您认为在Excel中查找IP> Country(可能使用网页http://api.hostip.info/flag.php?ip=xxx.xxx.xxx.xxx )有更好的方法,请让我知道。

您可以使用此function将您的四路IP转换为数字

 Function GetNumericIP(quadIP As String) As Long Dim sections On Error Resume Next sections = Split(quadIP, ".") GetNumericIP = sections(3) * 256 ^ 0 + sections(2) * 256 ^ 1 + sections(1) * 256 ^ 2 + sections(0) * 256 ^ 3 End Function 

你可以使用MATCH / INDEX来获取你的位置。 诀窍是让您的IP TO列按升序sorting。 Match函数将返回在给定值范围内的最后一个值的行索引。

 57.182.90.111 your input 968252015 =GetNumericIP(A1) France =INDEX(Country,MATCH(J6,IPTO,1)+1) (Or alternatively) =INDEX(Country,MATCH(J6,IPFROM,1)) 

注意我必须导入CSV(不仅仅是引用它),而且我将列转换为命名范围( CountryIPTO )。 对于其他的信息,问题中链接的CSV列名为:

  • IP FROM
  • IP TO
  • REGISTRY
  • ASSIGNED
  • CTRY
  • CNTRY
  • 国家

或者,您可以使用公式将虚线四方IP转换为其组成部分,尽pipe这有点麻烦。 这里是前两部分(我的IP是在I5

 =LEFT(I5,FIND(".",I5)-1) =LEFT(RIGHT(I5,LEN(I5)-I10),SEARCH(".",RIGHT(I5,LEN(I5)-I10))-1) 

你可以看到…有种痛苦。 更简单:使用上面解释的VBA方法,或者使用Text to Columns (在function区上:Data> Data Tools> Text To Columns> Delimited> Next> Other:“。”> Next> Finish)。 然后编写一个公式,将您的分裂四分体IP转换为参考数据库中的IP格式。 这个公式起作用:

=sumproduct(J5:M5, 256^{3,2,1,0})

请记得在上面的J5:M5列范围内。 然后针对新值运行MATCH / INDEX。