ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[Excel 函数与公式] [开_27] 条件求和问题[已总结] ★★

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-5-25 19:24 | 显示全部楼层

一般公式:

J13=SUMIF(型号,"*"&J$12&"*",套数)

hWE0k0T7.rar (4.81 KB, 下载次数: 124)

型号的名称定义=OFFSET(问题!$B$3,XX1+1,,XX2)可简化为=OFFSET(问题!$B$3,XX1+1,)就行了,sumif的第三个参数只要对应区域的第一个单元格就行了。

不用名称来还原一下你的公式

=SUMIF(OFFSET($B$3,COUNTIF($C$4:$C$100,"<="&$F13-DAY($F13))+1,,COUNTIF($C$4:$C$100,"<="&$F13)-COUNTIF($C$4:$C$100,"<="&$F13-DAY($F13))),"*"&J$12&"*",OFFSET($D$3,COUNTIF($C$4:$C$100,"<="&$F13-DAY($F13))+1,))

——apolloh

[此贴子已经被apolloh于2005-6-1 16:15:29编辑过]

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-5-25 19:33 | 显示全部楼层
以下是引用wangtx218在2005-5-25 19:24:00的发言:

一般公式:

J13=SUMIF(型号,"*"&J$12&"*",套数)

思路靠近了!提示:用什么函数可以快速定位每个期间的数据记录段(首尾位置),而不用所有的数据参与多重的数组运算呢?

TA的精华主题

TA的得分主题

发表于 2005-5-25 19:44 | 显示全部楼层

已用offset定位了,没有数据参与多重的数组运算![em06]

想不出

jjxcYwRH.rar (5.65 KB, 下载次数: 91)

因为你用countif这个函数,就是调用所有数据参与计算了,match则不会。前者要对照完区域中每个单元格,才出结果,因为其统计区域内的指定条件单元格的个数。后者是找到第一满足条件的单元格就停止了,所以比较快。如何避免match的第一行值找不到出错,请参见wutong9988在26楼的解法。——apolloh

[此贴子已经被apolloh于2005-6-1 17:07:33编辑过]

TA的精华主题

TA的得分主题

发表于 2005-5-25 22:16 | 显示全部楼层

这个问题除了考虑计算公式以外(其实我在揣摩投一颗星的朋友的想法,只是单纯解题?),我们还应该着重考虑效率问题,因为象此类问题在工作中很容易遇到的!

另外:不用任何辅助列或单元格(因为工作中你可能没有这么多时间来设计辅助列),使用普通公式也是很容易解决的,我们不要忘记了楼主给我们提供了这么多的条件,关键是看大家的解题思路了!

[此贴子已经被作者于2005-5-25 23:50:24编辑过]

TA的精华主题

TA的得分主题

发表于 2005-5-26 09:03 | 显示全部楼层

按apolloh要求再改一下,投票四颗星!!支持阿波罗!!!

=SUMIF(OFFSET($B$3,start,,end-start+1,),"=*"&G$12&"*",OFFSET($D$3,start,,end-start+1,))

start=IF(ISERROR(MATCH(sheet1!$F12,日期)),1,MATCH(sheet1!$F12,日期)+1)

end=MATCH(sheet1!$F13,日期)

93oWF6Hp.rar (5.84 KB, 下载次数: 93)

公式可以简化一下

start=IF(ISNUMBER(MATCH($F12,日期)),MATCH($F12,日期))+1

end=MATCH($F13,日期)

=SUMIF(OFFSET($B$3,start,,end-start+1,),"=*"&G$12&"*",OFFSET($D$3,start,))

[此贴子已经被apolloh于2005-6-1 17:16:58编辑过]

TdLAF2OS.rar

5.81 KB, 下载次数: 73

bwoiULGs.rar

5.81 KB, 下载次数: 73

TA的精华主题

TA的得分主题

发表于 2005-5-26 09:27 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

看看我的

用数组做到的^_^

结果正确。6楼 huangws 朋友的思路和你的基本一致的,但你是用if多层判断,huangws的是用*来表示逻辑与的关系

照你的思路,可简化为

=SUM(IF(ISNUMBER(FIND(G$12,型号)),IF(YEAR(日期)=YEAR($F13),IF(MONTH(日期)=MONTH($F13),套数))))

:)——apolloh

[此贴子已经被apolloh于2005-6-1 17:28:39编辑过]

TA的精华主题

TA的得分主题

发表于 2005-5-26 12:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

H13=SUMIF(OFFSET($B$4,COUNTIF($C$4:$C$100,"<="&$G13-DAY($G13)),,MATCH($G13,$C$4:$C$100)-COUNTIF($C$4:$C$100,"<="&$G13-DAY($G13))),"*"&H$12&"*",OFFSET($D$4,COUNTIF($C$4:$C$100,"<="&$G13-DAY($G13)),))

H13=SUMIF(OFFSET($B$3,MATCH($G13-DAY($G13),$C$3:$C$100),,MATCH($G13,$C$3:$C$100)-MATCH($G13-DAY($G13),$C$3:$C$100)),"*"&H$12&"*",OFFSET($D$3,MATCH($G13-DAY($G13),$C$3:$C$100),))

pOGwMEF5.rar (5.25 KB, 下载次数: 93)

水平低,好好向大师学习!!!

第一个解法用countif虽然避免了match找不到第一日期的错误,但速度较慢。

第二个解法,很好,巧妙的运用了c3的自定义格式,实际存储了一个较小的日期值(这里可以用0),来避免match找不到第一日期的错误,比较完美!

[此贴子已经被apolloh于2005-6-3 17:35:38编辑过]

TA的精华主题

TA的得分主题

发表于 2005-5-26 12:38 | 显示全部楼层
以下是引用wangtx218在2005-5-26 12:29:00的发言: H13=SUMIF(OFFSET($B$4,COUNTIF($C$4:$C$100,"<="&$G13-DAY($G13)),,MATCH($G13,$C$4:$C$100)-COUNTIF($C$4:$C$100,"<="&$G13-DAY($G13))),"*"&H$12&"*",OFFSET($D$4,COUNTIF($C$4:$C$100,"<="&$G13-DAY($G13)),))

这么复杂,还用了3个Countif(),如果有10000行数据,那不慢死?你还选择两颗星?

一点提示:其实只用一个Countif()就可以了。

[此贴子已经被作者于2005-5-26 13:35:31编辑过]

TA的精华主题

TA的得分主题

发表于 2005-5-26 14:20 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

凑个热闹!

G13=SUMPRODUCT(NOT(ISERROR(FIND(G$12,型号)))*(TEXT(日期,"yy-mm")=TEXT($F13,"yy-mm")),套数)

S7PDMRn7.rar (4.28 KB, 下载次数: 93)

和13楼的第一解法基本相同——apolloh

[此贴子已经被apolloh于2005-6-3 17:38:33编辑过]

TA的精华主题

TA的得分主题

发表于 2005-5-26 21:03 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-28 13:25 , Processed in 0.046399 second(s), 17 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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