ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 402|回复: 0

Excel 如何计算两个过滤后子集的交集

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-12-1 12:28 | 显示全部楼层 |阅读模式
现有Excel 数据,如下所示:
AB
116
256
313
4545
533
624
7223
832
922
10325
11423
12245
13412
14111
1553
1614
1763
1875
1985
2095
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:
AB
1if arg2==arg3>val=null
2else=arg1.select(~(1)==arg2).(~(2))
3=arg1.select(~(1)==arg3).(~(2))
4>val=(B2^B3).max()
5return 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 键后即可看到结果。

您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-23 15:56 , Processed in 0.033104 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表