例1 Excel文件book1.xlsx中,部分数据如下所示: 另一个文件book2.xlsx中有数量区间与价格的对应关系表,如下图所示: 现在要计算book1.xlsx中B列的价格值,计算规则是用数量Quantity在book2.xlsx中查找,若数量大于Quantity1且小于等于Quantity2,则返回此行的价格。 编写SPL脚本: | A | 1 | =T("e:/work/book1.xlsx") | 2 | =T("e:/work/book2.xlsx") | 3 | =A1.run(Price=A2.segp@r(Quantity1,A1.Quantity).Price) | 4 | =T("e:/work/book1.xlsx",A1) |
A1 读出book1.xlsx数据 A2 读出book2.xlsx数据 A3 循环A1每条记录,用segp函数查询Quantity的值位于A2的Quantity1构成的区间的哪个段号,再从A2中取出对应号的记录的价格赋给Price。选项@r表示形成左开右闭的区间,比如数量50应该算成是第1行所在的区间。 A4 把A1中的结果保存到文件book1.xlsx 例2Excel文件book1.xlsx中有汽车充电数据,部分数据如下所示: 另一个文件book2.xlsx中有充电时段对应的电价,如下图所示: 现在要计算book1.xlsx中Price列的价格,计算规则是用充电开始时间Starttime的小时数在book2.xlsx中查找所处时段的价格。 编写SPL脚本: | A | 1 | =T("e:/work/book1.xlsx") | 2 | =file("e:/work/book2.xlsx").xlsimport@w() | 3 | =A1.run(Price=A2(3).to(2,)(A2(1).to(2,).pseg(hour(A1.Starttime)))) | 4 | =T("e:/work/book1.xlsx",A1) |
A1 读出book1.xlsx数据 A2 读出book2.xlsx数据,选项@w表示读成序列的序列 A3 循环A1每条记录,用A2中第1行第2列开始的Starthour序列形成区间,在此区间查找A1.Starttime中的小时所处的分段号,从A2第3行的Price中取出对应分段号的价格赋给Price。 A4 把A1中的结果保存到文件book1.xlsx
|