如何做行列两个方向的关联查找

例题描述和简单分析

有 Excel 文件 book1.xlsx,如下所示:

现在要按左侧的分数标准填充右侧的分数列,结果如下:

解法及简要说明

在集算器中编写脚本 score.dfx,如下所示:


A

1

=file("score.xlsx").xlsopen()

2

=A1.xlscell("A1":"D5").import@t()

3

=A2.pivot@r(#1:score;age,num)

4

=A3.new(age.split("-").(int(left(~,2))):age,num,score)

5

=A4.select(~.age(1)<=arg1 && ~.age(2)>=arg1   && num<=arg2)(1).score

简要说明:

A1、A2  读取 Excel 文件的 A1:D5 区域,@t 表示第一行为表头

A3  交叉表,列转行

A4  将年龄字段拆分为年龄区间的两个端点值

A5  从 A4 中找到符合年龄、成绩的分数

 

Excel中加载插件 ExcelRaq.xll 后。

在 I2 格输入公式:=esproc("score",G2,H2),并以扩展方式填充后续分数列,即可算出结果。