12.6 使用关联表做区间关联
例 1:
有数据如下:
计算 Sheet2 中 Price 列的值,计算规则是用 Quantity 在 Sheet1 中查找,若数量大于 StartQuantity 且小于等于 EndQuantity,则返回此行的 Price,在 B2 中写入代码:
=spl("=E(?1).segp@r(StartQuantity,?2).Price",Sheet1!A$1:C$5,A2)
再把 B2 拖动复制到每一行:
用 segp 函数查询 Quantity 的值位于 Sheet1 的 StartQuantity 构成的区间的哪个段号,再从 Sheet1 中取出对应段号的行的价格返回。选项 @r 表示形成左开右闭的区间,比如数量 50 应该算成是第 1 行所在的区间。
例 2:
有汽车充电数据如下:
有充电时段对应的电价数据如下:
计算 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))
把 E2 拖动复制到每一行:
用 Sheet4 中第 1 行第 2 列开始的 StartHour 序列形成区间,在此区间查找 Sheet3 中 Starttime 中的小时所处的分段号,从 Sheet4 第 3 行的 Price 中取出对应分段号的价格返回。