ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求当前月份(含)之前的统计值,跨年归零重新计算

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-3-5 10:23 | 显示全部楼层 |阅读模式
数据模型是每个产品各月都有不同销量,要求统计各个产品当前月之前的累计销量(含当月),遇到跨年时重新归零统计。具体数据见附件。
我现在用了比较笨拙的办法就是先统计第一个月的,然后第二个月的公式是统计第二个月的+上一个月的累计销量。

Book1.rar

7.25 KB, 下载次数: 44

TA的精华主题

TA的得分主题

发表于 2018-3-5 10:31 | 显示全部楼层
  1. B2公式=SUMPRODUCT((Sheet1!$B$2:$B$21=B$1)*(YEAR($A2)=YEAR(Sheet1!$A$2:$A$21))*(MONTH($A2)>=MONTH(Sheet1!$A$2:$A$21))*Sheet1!$C$2:$C$21)
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-5 13:02 | 显示全部楼层

非常感谢!我想把这个公式的应用范围拓展到sheet1的全部行,因为sheet1中的数据是会增加的。我修改了一下您的公式。
=SUMPRODUCT((Sheet1!B:B=B$1)*(YEAR($A2)=YEAR(Sheet1!A:A))*(MONTH($A2)>=MONTH(Sheet1!A:A))*Sheet1!C:C)
这样抱了#VALUE的错误,不知道哪一步出了问题

TA的精华主题

TA的得分主题

发表于 2018-3-5 13:54 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jackion 发表于 2018-3-5 13:02
非常感谢!我想把这个公式的应用范围拓展到sheet1的全部行,因为sheet1中的数据是会增加的。我修改了一下 ...

你要看看A列和C列是否有文本,有文本就会出错。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-3-5 15:07 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
梦幻小丑 发表于 2018-3-5 13:54
你要看看A列和C列是否有文本,有文本就会出错。

谢谢!我检查了一下。貌似是SUMPRODUCT不支持整列,我修改成诸如$A$65535就可以了。

再追问一下,现在发现我的有些公式比较长,而且有几列的公式有重叠的部分,能不能把重叠的部分命名成一个别名,然后具体使用的时候用这个别名代替?这样的话,如果需要修改重叠的部分,我只需要在一处地方修改,也不太容易出错。谢谢!

TA的精华主题

TA的得分主题

发表于 2018-3-5 15:15 | 显示全部楼层
jackion 发表于 2018-3-5 15:07
谢谢!我检查了一下。貌似是SUMPRODUCT不支持整列,我修改成诸如$A$65535就可以了。

再追问一下,现在 ...

可以的。你可以将某段公式定义成名称。

TA的精华主题

TA的得分主题

发表于 2018-3-5 15:57 | 显示全部楼层
梦幻小丑 发表于 2018-3-5 15:15
可以的。你可以将某段公式定义成名称。

记得以前有一个相似的求助贴。
  1. =SUMPRODUCT(SUMIFS(Sheet1!$C:$C,Sheet1!$A:$A,EDATE($A2,ROW(INDIRECT("1:"&MONTH($A2)))-MONTH($A2)),Sheet1!$B:$B,B$1))
复制代码
右拉下拉。

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-3-5 16:09 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-3-5 22:03 | 显示全部楼层
练练手
SHEET1表中A列分列为日期格式后可以这样
  1. =SUM(SUMIFS(Sheet1!$C:$C,Sheet1!$B:$B,B$1,Sheet1!$A:$A,">"&EOMONTH($A2,MONTH($A2)*{0,-1}))*{-1,1})
复制代码

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-3-6 08:48 | 显示全部楼层
七夕、 发表于 2018-3-5 22:03
练练手
SHEET1表中A列分列为日期格式后可以这样

我对这种题 直接飘过:
     日期 不是日期,数值不能对应项目,就是看不懂呀。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-27 19:12 , Processed in 0.040028 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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