前几天,我们接到一个客户的求助。客户这边的网管同事接到了一个任务:整理一份公司所有网络设备的IP地址清单,用于后续的网络规划。他花了一整天时间,把几百条IP地址一条条录入了Excel表格,满心欢喜地点击排序按钮,结果直接傻眼——10.1.1.10排到了10.1.1.2的前面,10.1.1.9排到了10.1.1.10后面,整个顺序乱成一团,根本没法交给领导。
**问题出在哪里?**
其实这是一个非常经典的问题。Excel在排序时,默认把IP地址当作普通字符串(文本)来处理。字符串排序的规则是逐字符比较,而不是按数字大小比较。所以当Excel比较"10.1.1.10"和"10.1.1.2"时,它会从左到右一个字符一个字符地比,比到最后一位时,"10"的第一个字符"1"比"2"的字符"2"小,于是"10.1.1.10"就被排到了前面。这和文件夹名称排序是一个道理。
**我们的解决方案**
我们给客户推荐了一个一行公式就能解决的方法。思路是把IP地址转换成可以进行数值比较的数字。具体操作如下:
假设IP地址在A列,在旁边的空白列第一行输入:
`=SUMPRODUCT(TEXTSPLIT(A1,".")*{16777216,65536,256,1})`
然后向下拖拽填充公式。这个公式的工作原理是:TEXTSPLIT函数将IP地址按"."拆分成四个数字,然后分别乘以16777216、65536、256、1这四个权重值。这四个权重实际上对应的是256的三次方、二次方、一次方和零次方,也就是把IP地址按照网络地址的标准编码方式转换成了一个唯一的32位整数。比如192.168.1.10经过计算就变成了3232235786,192.168.1.2变成3232235778,数值大小关系一目了然。最后对着这列数值排个序,IP地址就乖乖按从小到大的顺序排好了。
客户用完之后说这个公式帮他省了至少半天的手动调整时间。如果你在做网络管理的工作,这个技巧一定要收藏备用。
大家平时遇到IP地址排序的问题是怎么解决的?有没有其他更好的方法?欢迎在评论区分享你的经验,我们一起交流学习。
*诚鑫致达科技,专注企业IT服务。*
#Excel技巧 #IP地址管理 #IT运维 #办公效率