ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_62]多条件模糊求和问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-10-27 09:51 | 显示全部楼层

兰版主,据我对你们这些版主的了解,总是要求公式精益求精的,如果把你的公式改为

=SUMPRODUCT((CODE(LEFT(A3:A11,1))=CODE(B17))*ISNUMBER(FIND(C17,A3:A11,1)))

可能更通用些,gdliyy版主才会满意。不知道我说的对不。

Gdliyy注:   其实你想得太多了,虽然做到通用性是一个好想法,但目前这个题目来看,这种解法并不通用,与直接相比较效果一样,而且用了CODE函数反而产生了限制--只能是一个字符的条件,如果开头条件是多个字符,结果就不正确了。

[此贴子已经被gdliyy于2005-11-9 1:04:34编辑过]

TA的精华主题

TA的得分主题

发表于 2005-10-27 11:06 | 显示全部楼层

看来大家比较关注这个小题,昨天晚上整理得太匆忙,题目应该是这样的,请大家详见附件题目要求说明。

大家前面给了几个答案,很好。除了蓝版主理解有点误差以外,难道我的表达能力真的这么差吗?嘿嘿。。。Excel中的筛选“C开头”的条件书面描述都是“始于”的。[em06]

大家再看看,再多个条件又可以怎么处理?这个小问题也有考点的,猜猜看:)

另外:Toqlz110 兄:我们有时也没有这么高的要求的:)当然能够更多地考虑通用性,是一种好习惯,谢谢!

[此贴子已经被作者于2005-10-27 11:27:56编辑过]

TA的精华主题

TA的得分主题

发表于 2005-10-27 11:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

难度再升点,问题在22楼附件上更新:

按要求3来看,除了满足要求2外,D4和D10也是满足条件的,有兴趣的朋友也看看:)

TA的精华主题

TA的得分主题

发表于 2005-10-27 14:17 | 显示全部楼层

不知道這樣是否可以 D17 =SUMPRODUCT(ISNUMBER(FIND(B17,$A$3:$A$11))*ISNUMBER(FIND(C17,$A$3:$A$11)),$B$3:$B$11) E21 =SUMPRODUCT((CODE(LEFT($D$3:$D$11,1))=CODE(B21))*ISNUMBER(SEARCH(C21,$D$3:$D$11))*($E$3:$E$11=D21),$F$3:$F$11) E25 =SUMPRODUCT(ISNUMBER(FIND(B25,$D$3:$D$11))*ISNUMBER(FIND(C25,$D$3:$D$11))*($E$3:$E$11=D25),$F$3:$F$11)

GDliyy注: 嘿嘿。。。 第1解为何不用Sumif()来实现呢?你前面不是已经解过的:)而且目前的Find解法还不能保证B17在第1位。 第2解,按目前的要求结果正确,但还可以简化。 但第3解应该是不对的,因为你没法判断“如:打印机BOX”这样的数据,公式也会认为是正确的。

[此贴子已经被gdliyy于2005-11-10 22:09:36编辑过]

TA的精华主题

TA的得分主题

发表于 2005-10-27 15:22 | 显示全部楼层

题目并不复杂.主要是获得新思路.

第三个问题,思路1,左截取型号,以"机"为界,在截取后的字符串中,再找"X",if(ISERR(FIND(B25,LEFT(D3:D11,FIND(C25,D3:D11)))),,1),如果出错,为0,否则为1.

思路2,利用search可以使用通配符,直接找"X*机",同样,找到为1,否则为0.

其它不叙.

TA的精华主题

TA的得分主题

发表于 2005-10-27 15:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
以下是引用shuyee在2005-10-27 15:22:10的发言:

题目并不复杂.主要是获得新思路.

第三个问题,思路1,左截取型号,以"机"为界,在截取后的字符串中,再找"X",if(ISERR(FIND(B25,LEFT(D3:D11,FIND(C25,D3:D11)))),,1),如果出错,为0,否则为1.

思路2,利用search可以使用通配符,直接找"X*机",同样,找到为1,否则为0.

其它不叙.

不错!有人有思路了:) 不过思路1,对“*机*X*机”这种数据会漏,当然,如果有的话。

[此贴子已经被作者于2005-10-27 18:27:48编辑过]

TA的精华主题

TA的得分主题

发表于 2005-10-28 09:02 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
问题3=SUMPRODUCT((ISERROR(SEARCH(B$25&"*"&C$25,D3:D11))=FALSE)*(E3:E11=D25)*(F3:F11))

TA的精华主题

TA的得分主题

发表于 2005-10-28 12:59 | 显示全部楼层
以下是引用yeatol在2005-10-28 9:02:10的发言: 问题3=SUMPRODUCT((ISERROR(SEARCH(B$25&"*"&C$25,D3:D11))=FALSE)*(E3:E11=D25)*(F3:F11))

不错,直接用Isnumber()就可以了,公式会更短些。 =SUMPRODUCT(ISNumber(SEARCH(B$25&"*"&C$25,D3:D11))*(E3:E11=D25)*F3:F11)

这也正是利用了Search函数支持通配符的用法,正如问题1可以用Sumif()的通配符来解决一样,大家在以后遇到的问题中可以一试。 另外:问题2也同样可以用此法来解的,大家一试便知,稍后我再将我的解法帖上来让大家参考:)

答案补充: 问题1:=Sumif(A3:A11,B17&"*"&C17&"*",B3:B11)  Sumif()的通配符运用。 问题2:=Sumproduct(isnumber(1/(Search(B21&"*"&C21,D3:D11)=1))*(E3:E11=D25)*F3:F11) 此解利用了Search()函数的通配符查找用法,由于需要定位X开头,所以用结果=1来控制,最后通过1/search结果(1或错误值),最后得解。 问题3:=SUMPRODUCT(ISNumber(SEARCH(B25&"*"&C25,D3:D11))*(E3:E11=D25)*F3:F11) 与问题2相似,就不详解了。

这些小题,主要是让大家了解对通配符模糊查找的一些认识,希望大家理解再加以运用。谢谢!

[此贴子已经被作者于2005-11-10 22:07:24编辑过]

TA的精华主题

TA的得分主题

发表于 2005-10-28 20:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
又增長見識,謝謝 GDLIYY 版主 !!!

TA的精华主题

TA的得分主题

发表于 2005-11-9 16:03 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
确实会漏.多谢指正.
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-22 12:44 , Processed in 0.034641 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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