12.6 使用关联表做区间关联

 

例 1:
有数据如下:

imagepng

imagepng

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

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

imagepng

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

imagepng

用 segp 函数查询 Quantity 的值位于 Sheet1 的 StartQuantity 构成的区间的哪个段号,再从 Sheet1 中取出对应段号的行的价格返回。选项 @r 表示形成左开右闭的区间,比如数量 50 应该算成是第 1 行所在的区间。

例 2:
有汽车充电数据如下:

imagepng

有充电时段对应的电价数据如下:

imagepng

计算 Sheet3 中 Price 列的价格,计算规则是用充电开始时间 Starttime 的小时数在 Sheet4 中查找所处时段的价格,在 E2 单元格中写入代码:

=spl("=a=E@b(?1),a(3).array().to(2,)(a(1).array().to(2,).pseg(?2))", Sheet4!A$1:F$3, HOUR(B2))

imagepng

把 E2 拖动复制到每一行:

imagepng

用 Sheet4 中第 1 行第 2 列开始的 StartHour 序列形成区间,在此区间查找 Sheet3 中 Starttime 中的小时所处的分段号,从 Sheet4 第 3 行的 Price 中取出对应分段号的价格返回。

帮你早下班 - esProc 桌面版与 Excel 数据处理
12.5 写在公式里的区间关联
12.7 使用二维关联表