ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: muou8

[求助] 与非或逻辑组合匹配

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-18 14:25 | 显示全部楼层
micch 发表于 2019-1-18 13:43
比如A&B|C  代表    可以选AC   可以选 BC  ,可以选 ABC

就是三种情况存在一种就算满足??那这应该 ...

老师 ,如果是  A&B/C   意思就是   选AB同时存在   或者  C存在的情况了

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-18 14:26 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
qingc0221 发表于 2019-1-18 14:20
感觉很简单啊,自定义一个函数就行了

老师 ,能帮忙设计一下吗?或者讲讲思路,我是一筹莫展。

TA的精华主题

TA的得分主题

发表于 2019-1-18 14:29 | 显示全部楼层
本帖最后由 duquancai 于 2019-1-18 14:34 编辑
muou8 发表于 2019-1-18 13:00
X  代表   比如第一行      张三使用   A,B,C
结果中的数字   是第一张表中的  1,2,3,4,5,6

逻辑混乱!!!!!不用检查别的,
选存在的A 为1

选 存在A 或者B 为2 (这里也可以是为1  也可以为 2   ,那就不知道到底是为1还是为2)     

TA的精华主题

TA的得分主题

发表于 2019-1-18 14:52 | 显示全部楼层
duquancai 发表于 2019-1-18 12:21
X 是什么意思?结果中的 那些“数字”从何而来?

就是逐个判断组合下的条件是否成立,如果成立则str=str &条件左边的序号,最后返回str

只是他举例给的结果有错

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-18 14:55 | 显示全部楼层
duquancai 发表于 2019-1-18 14:29
逻辑混乱!!!!!不用检查别的,
选存在的A 为1

老师 ,您理解错了。其实这个表的目的就是统计表二中的姓名的选项,是否满足表一中的逻辑组合,然后形成以姓名为主的数组或者集合。
比如   表二中    姓名张三,选项有 A,B,C都符合,然后找表一,  序号1 对应的 组合为A ,这样,选项中只要包含A都能满足姓名,这样就可以吧 序号1 加入姓名张三集合。
再往下,序号2对应的组合为 A/B  ,这个意思就是     只要包含A或者B 就可以加入姓名张三集合。
再往下,序号3对应 的组合为-A/B,这个意思就是      只要不包含A, 或者包含B也可以加入姓名张三集合。
依次类推,所有的序号都 排查完毕, 张三集合统计完毕。
然后在按照上面的方法,把所有的姓名集合统计完毕。

TA的精华主题

TA的得分主题

发表于 2019-1-18 14:56 | 显示全部楼层
muou8 发表于 2019-1-18 10:16
老师您好
&代表   比如A&B&C  代表  只有A B C 同时选的 时候 ,才选这个选项
|代表    比如A&B|C  代 ...

比如A&B|C  代表    可以选AC   可以选 BC  ,可以选 ABC

那应该= (A/B)&C 这样的关系式。

何须发明一个不伦不类的【|】这个逻辑关系好无意义。

如果是与关系,那就是 &  And
如果是或关系,那就是 /  Or
如果是并列关系,那就是()

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-18 14:59 | 显示全部楼层
qingc0221 发表于 2019-1-18 14:52
就是逐个判断组合下的条件是否成立,如果成立则str=str &条件左边的序号,最后返回str

只是他举例给的结 ...

是的,老师 ,您的逻辑是正确的,
但现在最困惑的就是 这种组合逻辑的,怎么满足姓名选项?怎么设计这个算法

TA的精华主题

TA的得分主题

 楼主| 发表于 2019-1-18 15:00 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
香川群子 发表于 2019-1-18 14:56
比如A&B|C  代表    可以选AC   可以选 BC  ,可以选 ABC

那应该= (A/B)&C 这样的关系式。

嗯,谢谢老师提醒

TA的精华主题

TA的得分主题

发表于 2019-1-18 15:05 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
muou8 发表于 2019-1-18 14:26
老师 ,能帮忙设计一下吗?或者讲讲思路,我是一筹莫展。

你的描述的确很混乱
比如2 和3,只要B为True,返回的结果应该都有2和3
还有4和5,只要A B C同时为True则返回4,否则只要A B C有1或2个位True返回值就应该包含5
但是你举的例子就没有

TA的精华主题

TA的得分主题

发表于 2019-1-18 15:46 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
'逻辑没法看,按中文逻辑你的示例也有问题,,,

Option Explicit

Sub test()
  Dim arr, i, s
  arr = [e2:i7]
  For i = 2 To UBound(arr, 1)
    s = vbNullString
    If arr(i, 2) = "X" Then s = s & "," & "1" '选存在的A
    If arr(i, 2) = "X" Or arr(i, 3) = "X" Then s = s & "," & "2" '选 存在A 或者B
    If arr(i, 2) <> "X" Or arr(i, 3) = "X" Then s = s & "," & "3" '选 不是A 的 或者 存在 B的
    If arr(i, 2) = "X" And arr(i, 3) = "X" And arr(i, 4) = "X" Then s = s & "," & "4" '选 A和 B 和C 同时存在的
    If Not (arr(i, 2) = "X" And arr(i, 3) = "X" And arr(i, 4) = "X") Then s = s & "," & "5" '选不是(A和B 和C )同时存在的
    If arr(i, 2) = "X" And arr(i, 3) = "X" Or arr(i, 5) = "X" Then s = s & "," & "6" '选(A和B)同时存在 或者 存在D的
    If arr(i, 2) = "X" And arr(i, 3) = "X" And arr(i, 4) = "X" And arr(i, 5) = "X" Then s = s & "," & "7" '选 A,B,C,D 同时存在的
    Debug.Print arr(i, 1) & ":{" & Mid(s, 2) & "}"
  Next
End Sub

评分

1

查看全部评分

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

本版积分规则

关闭

最新热点上一条 /1 下一条

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

GMT+8, 2024-4-26 00:48 , Processed in 0.035091 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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