ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何求取2个日期间的数据之和

[复制链接]

TA的精华主题

TA的得分主题

发表于 2024-11-15 22:19 | 显示全部楼层 |阅读模式
image.png

比如我要求4月付了多少钱,也就是500000+20+250000
我的思路是先在第一行中查找"*日期*”,然后将其对应的日期组成新的数组,然后再用match函数找到符合条件的第一个日期和最后一个日期的列号,再利用offset函数确定区域,最后用sumif函数求“*支付*”条件对应的和。
但是我卡在了第一步,我本来打算用index+small+if+iserror组数组,但这个好像用通配符就会报错,求各路大神指正,或有别的思路或方法也请告知,谢谢。

test.zip

8.08 KB, 下载次数: 20

TA的精华主题

TA的得分主题

发表于 2024-11-15 22:47 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 edwin11891 于 2024-11-15 22:49 编辑

跑个火车,需要新版WPS或M365:
  1. =LET(Sa,SCAN(0,A1:Z1,LAMBDA(x,y,IF(y="付款日期",0,1))),Sb,DROP(REDUCE("",A1:Z1,LAMBDA(x,y,HSTACK(x,IF(y="付款日期",MONTH(OFFSET(y,1,)),TAKE(x,,-1))))),,1),Sc,VSTACK(A2:Z2,Sa),Sd,BYCOL(FILTER(Sc,Sb=4),PRODUCT),SUM(Sd))
复制代码

TA的精华主题

TA的得分主题

发表于 2024-11-15 23:35 | 显示全部楼层
=LET(d,A2:L2,c,A1:L1,a,CONCAT(c&IF(c=A1,MONTH(d),d)),b,TEXTSPLIT(a,,A1,1),SUM(FILTER(MAP(b,LAMBDA(x,SUM(1*REGEXP(x,"支付\K\d+\.?\d*")))),REGEXP(b,"^\d+")="4")))

红色的改月份

image.png

TA的精华主题

TA的得分主题

发表于 2024-11-15 23:35 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
edwin11891 发表于 2024-11-15 02:47
跑个火车,需要新版WPS或M365:

好像空格算了1
image.png

TA的精华主题

TA的得分主题

发表于 2024-11-16 09:01 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. =LET(T,SCAN(0,A1:L1,LAMBDA(X,Y,IF(Y="付款日期",X+1,X))),_T,UNIQUE(T,TRUE),_M,DROP(REDUCE("",_T,LAMBDA(_X,_Y,IFNA(VSTACK(_X,FILTER(A2:L2,_Y=T)),""))),1),SUM(FILTER(DROP(_M,,1),MONTH(TAKE(_M,,1)*1)=4)))
复制代码

TA的精华主题

TA的得分主题

发表于 2024-11-16 09:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=SUM((MONTH(LOOKUP(COLUMN(A:O),IF(A1:O1="付款日期",COLUMN(A:O)),A2:O2))=4)*A2:O2*(A1:O1<>"付款日期"))

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2024-11-16 10:07 | 显示全部楼层
本帖最后由 mykitami 于 2024-11-16 10:09 编辑


建议:这样组织数据不是一个好的选择,设置为纵列较好,一列是日期,一列是付款方,另一列是金额
这样写公式也方便,也容易维护

=LET(s,REDUCE({"付款日期","付款方","支付金额"},A1:L1,LAMBDA(x,y,IF(y="付款日期",LET(a,OFFSET(y,,1,2,IFNA(MATCH(y,OFFSET(y,,1,,9999),)-1,99)),b,OFFSET(y,1,),VSTACK(x,IFNA(HSTACK(b,TRANSPOSE(a)),b))),x))),t,FILTER(s,ISTEXT(INDEX(s,,2))),GROUPBY(TEXT(TAKE(t,,1),"e年mm月"),TAKE(t,,-1),SUM,3,0,))

image.png

TA的精华主题

TA的得分主题

发表于 2024-11-16 12:25 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=SUM(IF(ISNUMBER(IF(MONTH(INDEX(IFNA(VSTACK(A1:C2,D1:F2,G1:J2,K1:L2),""),,1))=P1,ROW($1:$10),"")),TAKE(IFNA(VSTACK(A1:C2,D1:F2,G1:J2,K1:L2),""),,-3)))

TA的精华主题

TA的得分主题

发表于 2024-11-16 13:31 | 显示全部楼层
尤其那么复杂 还不如原始表格设置成一维表格 后期怎么处理都好搞 这叫自讨苦吃

TA的精华主题

TA的得分主题

发表于 2024-11-16 21:49 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
=SUM((MONTH(SCAN(0,IF(MAP(A2:L2,LAMBDA(X,CELL("format",X)))="D1",A2:L2,""),LAMBDA(X,Y,IF(Y<>"",Y,X))))=4)*(A2:L2)*(A1:L1<>"付款日期"))
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-12-4 01:16 , Processed in 0.037941 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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