现有Excel 数据,如下所示:
| A | B | |
| 1 | 1 | 6 |
| 2 | 5 | 6 |
| 3 | 1 | 3 |
| 4 | 5 | 45 |
| 5 | 3 | 3 |
| 6 | 2 | 4 |
| 7 | 2 | 23 |
| 8 | 3 | 2 |
| 9 | 2 | 2 |
| 10 | 3 | 25 |
| 11 | 4 | 23 |
| 12 | 2 | 45 |
| 13 | 4 | 12 |
| 14 | 1 | 11 |
| 15 | 5 | 3 |
| 16 | 1 | 4 |
| 17 | 6 | 3 |
| 18 | 7 | 5 |
| 19 | 8 | 5 |
| 20 | 9 | 5 |
A 列是 id,B 列是 value,现需计算所有 id 两两相交后,value 的最大值,例如:id 为 1 的 value 有 6、3、11、4,id 为 2 的 value 有 4、23、2,那么 id 为 1 和 id 为 2 相交后的结果中的最大值是 4。最终计算结果如下所示:

实现步骤:
1. 运行集算器(可以到润乾官网下载,用职场版,首次运行时会提示加载授权,下载个免费的就够了)
2. 打开 Excel,加载插件(Excel 的 Option 的 add-ins 对话框,下面有个 Go…按钮)ExcelRaq.xll,需要到 [esProc 的安装目录 \bin] 下找到这个插件文件。不太熟悉的读者可以再参考 Excel 的资料以了解具体加载方法。
3. 在集算器中编写脚本 book1.dfx:
| A | B | |
| 1 | if arg2==arg3 | >val=null |
| 2 | else | =arg1.select(~(1)==arg2).(~(2)) |
| 3 | =arg1.select(~(1)==arg3).(~(2)) | |
| 4 | >val=(B2^B3).max() | |
| 5 | return val |
A1:B1 若两个 ID 相同,则结果为空
A2:B4 若两个 ID 不同,则分别找出所有符合两个 ID 的值,求交集后找最大值
参数arg1 是从 Excel 传入的第一个参数,对应区域 A1:B20,是一个二维数组;arg2 是从 Excel 传入的第二个参数,是其中一个 ID;arg3 是从 Excel 传入的第三个参数,是另一个 ID,集算器中定义参数的方法如下(菜单:Program->Parameter):

4. 如上文图中所示,Excel 中,选中 H4,编写表达式:=esproc("book1",A1:B20,H2,D4),按 Enter 键后即可看到结果。
本文介绍如何使用ExcelRaq插件和集算器脚本,通过计算Excel数据中ID的交集,获取每个组合的最大value。步骤包括设置参数、编写脚本和使用EsProc函数求解。
686

被折叠的 条评论
为什么被折叠?



