1234

ExcelHome技术论坛

用户名  找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 求助自动生成逐天调休方式

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-2-23 11:03 | 显示全部楼层 |阅读模式
本帖最后由 baoxuehero 于 2025-2-23 19:17 编辑

A至F列是录入的姓名、假别和调休时段,希望在H至K列,通过公式,自动生成A至F列对应的姓名、假别、调休日期和调休方式,逐天列出,文件H至K列是手动写的要实现的目标,请问有没有办法通过公式自动生成姓名、假别、调休日期和调休方式?
PS:后续还会增加录入,不同的人有可能同一天调休。
微信图片_20250223191318.png

自动生成逐天调休方式.zip

11.14 KB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2025-2-23 11:19 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
F、G列手动写的逻辑是什么?24跟26号都是下午 凭什么24是全天 26就是下午???23跟28都是上午 凭什么23是全天 28又是上午???公式也得有逻辑才能写,完全没有逻辑的这怎么写?

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-2-23 11:32 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
溺水鱼 发表于 2025-2-23 11:19
F、G列手动写的逻辑是什么?24跟26号都是下午 凭什么24是全天 26就是下午???23跟28都是上午 凭什么23是 ...

24号那个是从2月23日上午调休到2月24日下午,等于23日、24日全天调休;
26号那个是从2月26日下午调休到2月28日上午,等于26日下午、27日全天、28日上午调休。

TA的精华主题

TA的得分主题

发表于 2025-2-23 11:53 | 显示全部楼层
baoxuehero 发表于 2025-2-23 11:32
24号那个是从2月23日上午调休到2月24日下午,等于23日、24日全天调休;
26号那个是从2月26日下午调休到2 ...

26号那个是从2月26日下午调休到2月28日上午,等于26日下午、27日全天、28日上午调休。
按照这个逻辑,22号怎么不算了?

TA的精华主题

TA的得分主题

发表于 2025-2-23 13:40 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
  1. =LET(a,A2:B5,b,C2:D5,fx,LAMBDA(x,BYROW(x,CONCAT)),fy,LAMBDA(x,y,SEQUENCE(x-y+1,,y)),fz,LAMBDA(x,y,HSTACK(x,IF(x,y))),t,fy(MAX(TAKE(b,,1)),MIN(TAKE(a,,1))),c,SORT(VSTACK(fz(t,"上午"),fz(t,"下午"))),d,fx(c),e,DROP(REDUCE("",SEQUENCE(ROWS(a)),LAMBDA(m,n,VSTACK(m,CHOOSEROWS(c,fy(MATCH(CONCAT(INDEX(b,n,)),d,),MATCH(CONCAT(INDEX(a,n,)),d,)))))),1),DROP(REDUCE("",UNIQUE(TAKE(e,,1)),LAMBDA(s,k,VSTACK(s,IF(ROWS(FILTER(e,TAKE(e,,1)=k))>1,HSTACK(k,"全天"),FILTER(e,TAKE(e,,1)=k))))),1))
复制代码
前面理解错误,想了半天= =只能搞个笨办法

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-2-23 17:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
baoxuehero 发表于 2025-2-23 11:32
24号那个是从2月23日上午调休到2月24日下午,等于23日、24日全天调休;
26号那个是从2月26日下午调休到2 ...

举例的,22号不一定要调休

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-2-23 17:41 | 显示全部楼层
溺水鱼 发表于 2025-2-23 13:40
前面理解错误,想了半天= =只能搞个笨办法

感谢大神的耐心回复,公式能实现预定效果,不过后面还要继续录入,需要动态调整,请问公式要如何修改,我试了一下,“LET(a,A2:B5,b,C2:D5”定义的必须是已有数据的区域,后面新增数据得手动修改列数字。

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-2-23 17:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
溺水鱼 发表于 2025-2-23 13:40
前面理解错误,想了半天= =只能搞个笨办法
  1. =LET(end_row,MATCH(2,1/(A:A<>"")),a,A2:INDEX(B:B,end_row),b,C2:INDEX(D:D,end_row),fx,LAMBDA(x,BYROW(x,CONCAT)),fy,LAMBDA(x,y,SEQUENCE(x-y+1,,y)),fz,LAMBDA(x,y,HSTACK(x,IF(x,y))),t,fy(MAX(TAKE(b,,1)),MIN(TAKE(a,,1))),c,SORT(VSTACK(fz(t,"上午"),fz(t,"下午"))),d,fx(c),e,DROP(REDUCE("",SEQUENCE(ROWS(a)),LAMBDA(m,n,VSTACK(m,CHOOSEROWS(c,fy(MATCH(CONCAT(INDEX(b,n,)),d,),MATCH(CONCAT(INDEX(a,n,)),d,)))))),1),DROP(REDUCE("",UNIQUE(TAKE(e,,1)),LAMBDA(s,k,VSTACK(s,IF(ROWS(FILTER(e,TAKE(e,,1)=k))>1,HSTACK(k,"全天"),FILTER(e,TAKE(e,,1)=k))))),1))
复制代码

修改了一下,可以动态调整了,再次感谢大神的指导!希望还有其他大神提供简练一点的公式

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-2-23 18:04 | 显示全部楼层
本帖最后由 baoxuehero 于 2025-2-23 21:07 编辑
溺水鱼 发表于 2025-2-23 13:40
前面理解错误,想了半天= =只能搞个笨办法

大神,如果增加一列姓名列,一列假别,请问代码该如何完善,附件已更新
微信图片_20250223191318.png

TA的精华主题

TA的得分主题

发表于 2025-2-23 18:07 | 显示全部楼层
baoxuehero 发表于 2025-2-23 17:52
修改了一下,可以动态调整了,再次感谢大神的指导!希望还有其他大神提供简练一点的公式

如果是WPS新版,还可以:
a,trimrange(A2:B1000),b,trimrange(C2:D1000)
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

1234

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

GMT+8, 2025-4-1 13:34 , Processed in 0.037806 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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