ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 如何根据参数表中整体要求和个人特殊要求生成原始表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2022-3-7 20:37 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
如何根据参数表中整体要求和个人特殊要求生成原始表.rar (3.36 KB, 下载次数: 16) 参数表:[整体要求]

日期起        2-17
日期止        3-6
要排日期        2-18,2-19
排除日期        2-21,2-23
要排星期        日、一、二、三、四
排除星期        五、六
星期起始        日

[个人要求]
序号        姓名        要排日期        排除日期        要排星期        排除星期
1        姓名1                2月18日        一、三、四        二、日
2        姓名2                2-20,2-24                一、三
3        姓名3                                
4        姓名4                                三、四

原始表:[整体要求]基础上,加上[个人要求],生成原始表。
规则:可根据日期起止,生成日期序列;人员匹配日期和星期,若某人员该日期无法排列,则先下一位排列该日期,排列后,接着该人员再排列,不行,再后移。比如1234,若1无法排,则2134,2314,2341。

TA的精华主题

TA的得分主题

发表于 2022-3-7 21:42 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
1,可根据日期起止,生成日期序列;

2,人员匹配日期和星期,若某人员该日期无法排列,

。。。

建议,理清每一步的中间结果。另外,日期,统一转换成星期进行匹配。

TA的精华主题

TA的得分主题

发表于 2022-3-10 20:44 来自手机 | 显示全部楼层
zpy2 发表于 2022-3-7 21:42
1,可根据日期起止,生成日期序列;

2,人员匹配日期和星期,若某人员该日期无法排列,

create temp table 值班日期 as with recursive aa (日期) as (select date('2022-02-17') day union select date(日期,'+1 day') 日期 from aa limit 20 ) select * from aa; create temp table 值班日期2 as select *,strftime('%w',日期) 星期 from 值班日期 where 星期 in ('0','1','2','3','4'); create temp table 要排除的日期 as select '2022-02-21' as 日期; insert into 要排除的日期 values('2022-02-23'); select * from 要排除的日期; create temp table 值班日期3 as select a.日期 日期,星期 from 值班日期2 a left join temp.要排除的日期 b using(日期) where b.日期 is null; create temp table 要排日期 (日期 unique); insert into 要排日期 (日期) values ('2022-02-18'),('2022-02-19'); insert into 值班日期3 (日期,星期) select 日期,strftime('%w',日期) 星期 from 要排日期; select * from 值班日期3; drop table if exists 值班人员; create table 值班人员 (姓名 unique); insert into 值班人员 values ('姓名1'),('姓名2'),('姓名3'),('姓名4'); select * from 值班人员; drop table if exists 值班日期表; create table 值班日期表 as select *,'' 值班人员姓名 from 值班日期3; select * from 值班日期表;
Screenshot_2022-03-10-20-27-37-727_com.chrome.dev.jpg
Screenshot_2022-03-10-20-44-36-943_com.chrome.dev.jpg

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-3-19 12:53 来自手机 | 显示全部楼层
zpy2 发表于 2022-3-10 20:44
create temp table 值班日期 as with recursive aa (日期) as (select date('2022-02-17') day union sel ...

谢谢大师关注,这么复杂,看得眼花,能用常规方法就好了

TA的精华主题

TA的得分主题

发表于 2022-3-19 12:59 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
yzyyyyyyy 发表于 2022-3-19 12:53
谢谢大师关注,这么复杂,看得眼花,能用常规方法就好了

1,可根据日期起止,生成日期序列;

这些都是第一步,不太明白你说的是哪个常规方法。

TA的精华主题

TA的得分主题

发表于 2022-3-19 13:31 来自手机 | 显示全部楼层
zpy2 发表于 2022-3-19 12:59
1,可根据日期起止,生成日期序列;

这些都是第一步,不太明白你说的是哪个常规方法。

表:[整体要求]

以上只是完成 整体,

后面的是通过勾选完成的

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-3-24 21:29 来自手机 | 显示全部楼层
zpy2 发表于 2022-3-19 13:31
表:[整体要求]

以上只是完成 整体,

有vba方法吗

TA的精华主题

TA的得分主题

发表于 2022-3-24 22:02 来自手机 | 显示全部楼层
yzyyyyyyy 发表于 2022-3-24 21:29
有vba方法吗



VBa什么办法?

现在好像没有。

TA的精华主题

TA的得分主题

 楼主| 发表于 2022-3-31 21:48 来自手机 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
zpy2 发表于 2022-3-24 22:02


VBa什么办法?

问题是不是太复杂了

TA的精华主题

TA的得分主题

发表于 2022-4-1 07:25 来自手机 | 显示全部楼层
yzyyyyyyy 发表于 2022-3-31 21:48
问题是不是太复杂了

特殊情况多,采用 饿了么 买团抢单 分布式的 输入 排班 比较好,一个人做得确比较复杂。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-19 05:37 , Processed in 0.037273 second(s), 15 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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