SPL XLL 实践:Excel 区间关联

工作中有时会遇到需要根据不同的区间挡位,填取不同值。比如学生评价系统中不同分数段优或良的评价,运费和不同重量区间之间的价格等等。在 Excel 里一般需要用多重 IF 嵌套或是查找函数来实现,写起来很麻烦而且容易出错。这里教大家一个简单易用的方法,可以使用 Excel 插件 SPL XLL 来解决。SPL XLL 里有丰富的数据操作函数,可以解决很多复杂的 Excel 问题。在区间关联中,通常可用 pseg()函数,返回要查找的数据在区间中的位置序号。

例如:

1. 直接写公式区间关联

有数据如下:

..

根据 A 列的购买数量计算 B 列的价格值,计算规则是不同的数量区间对应不同的价格,如下表所示:

..

对于区间数不多的情况,可以直接写入公式关联

在 B2 单元格写入代码:

=spl("=[15,13.75,13,12.5]([30,50,100,300,500].pseg@r(?1))",A2)

如图:

..

?1 表示要传入的数据参数,这里指 A2,也就是 221

先用 pseg 函数算出 A2 位于区间 [30,50,100,300,500] 的哪个段号,再从价格 [15,13.75,13,12.5] 中取出对应段号的价格返回。如 221 位于第 3 个区间段 100-300,psge() 函数会返回 3,然后从价格列中取出第 3 个就是 13。

@r 表示分段区间前开后闭

返回结果:

..

再把 B2 拖动复制到每一格:

..

2. 使用关联表做区间关联

使用 segp() 函数可以用表格参数做关联。

例如有数据:

..

..

计算 Sheet2 中 Price 列的值,计算规则是用 Quantity 在 Sheet1 中查找,若数量大于 StartQuantity 且小于等于 EndQuantity,则返回此行的 Price,在 B2 中写入代码:

=spl("=E(?1).segp@r(StartQuantity,?2).Price",Sheet1!A$1:C$5,A2)

同样?1 和?2 表示要传入的数据参数,这里分别指 Sheet1!A$1:C$5 和 A2

整句代码表示从 Sheet1 中查找 A2 位于 StartQuantity 列构成区间的哪个段号,然后再取出对应段号的行的价格返回。

结果如图:

..

同样 B2 拖动复制到每一行:

..

使用 SPL XLL 做区间关联,可以避免绞尽脑汁的多重 IF 语句,代码直观,容易理解,非常好用。

当然 SPL XLL 的还有很多好用的功能,例如集合操作,分组计算,批量处理等等,用它来辅助 Excel 工作,工作效率秒翻倍。

SPL XLL 下载地址:» esProc Desktop Download

安装方法:SPL XLL 安装与配置

更多参考案例:esProc 桌面版与 Excel 处理