数学研发论坛

 找回密码
 欢迎注册
查看: 170|回复: 4

[提问] excel怎么取两个正整数集的交集和并集

[复制链接]
发表于 2020-12-24 00:59:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?欢迎注册

x
集合A是不小于a且不大于b的正整数集。
集合B是不小于c且不大于d的正整数集。
abcd已知,如何用excel取A并B、A交B呢?
我一开始是用countif做的,数据一大就有点麻烦。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
 楼主| 发表于 2020-12-24 00:59:53 | 显示全部楼层
主要是求A交B、A并B的元素个数。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-12-24 03:29:41 | 显示全部楼层
用VBA来做,沥遍A中的所有元素,看它是否在B中。
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-12-24 10:22:40 | 显示全部楼层
ShuXueZhenMiHu 发表于 2020-12-24 03:29
用VBA来做,沥遍A中的所有元素,看它是否在B中。

python试试看,先从Excel读取数据,处理后,再返回Excel
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
发表于 2020-12-24 11:43:35 | 显示全部楼层
Index=0, 交集
Index=1,并集
  1. Function AB(a&, b&, c&, d&, index&)
  2. Dim r As Range
  3. If index = 0 Then Set r = Intersect(Range(Rows(a), Rows(b)), Range(Rows(c), Rows(d)))
  4. If index = 1 Then Set r = Union(Range(Rows(a), Rows(b)), Range(Rows(c), Rows(d)))
  5. If Not r Is Nothing Then
  6. AB = "{" & Replace(r.Address, "$", "") & "}"
  7. Else
  8. AB = "{}"
  9. End If
  10. End Function

  11. Sub Test()
  12. Debug.Print AB(3, 20, 17, 28, 0)
  13. Debug.Print AB(3, 20, 17, 28, 1)
  14. End Sub

复制代码
毋因群疑而阻独见  毋任己意而废人言
毋私小惠而伤大体  毋借公论以快私情
您需要登录后才可以回帖 登录 | 欢迎注册

本版积分规则

小黑屋|手机版|数学研发网 ( 苏ICP备07505100号 )

GMT+8, 2021-1-28 04:14 , Processed in 0.058924 second(s), 16 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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