ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 请教高人关于Excel表考勤表公式统计的5个问题

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-27 22:17 | 显示全部楼层
mykitami 发表于 2024-10-27 21:56
=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$C$8,$A6,COL ...



高人你好,
不好意思老是打扰你啊,
小弟有句高人的公式不太清楚含义想请教高人指导请问可以吗?


问题10:
高人帮助写的统计考勤符号的公式:
考勤表F9=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$F$8,$B9,COLUMNS($A:A)),b,IF(LENB(LEFT(a))=1,"β"&MID(a,2,9),a),IF($B9="","",IFNA(VLOOKUP(b,HSTACK(VSTACK(数据源!$H$7:$H$34,j,"β"&j),VSTACK(数据源!$K$7:$K$34,EXPAND("PH",7,,"PH"),EXPAND("法休T",7,,"法休T"))),2,),"")))
里面的
排班表!$F$8,$B9,

IF($B9="",
的这2个
$B9
原来是对应关系,
是通过这个序号来匹配是否同一个人,
原来如此哦````


小弟现在在“序号”列后面插入几个新列之后,
后面的考勤符号统计的列就会被减少,
插入几列就减少几列,
小弟找不到是哪一个函数在控制这个统计范围,
看了一下
COLUMNS($A:A)
但是好像又不是的,
因为这个就是固定31列,
对应每月最大31天,
COLUMNS($A:AE)
请问插入新列就少一列的这个统计范围是哪一个函数在控制呢?
请问高人如何在插入新列的时候统计考勤符号的公式不会受到影响呢?


2024年10月27日 星期日




请教高人关于Excel表考勤表公式统计的5个问题 考勤表符号统计 2024-10-20.jpg
请教高人关于Excel表考勤表公式统计的5个问题 考勤表符号统计2 2024-10-20.jpg

请教高人关于Excel表考勤表公式统计的5个问题 考勤表符号统计 2024-10-20.rar

1.64 MB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2024-10-28 09:25 | 显示全部楼层
本帖最后由 mykitami 于 2024-10-28 10:55 编辑

就是这个COLUMNS($A:A)造成的
为解决这个问题,公式我重写一下吧
先跟你确定一个问题,现在把两个表的人一一对应起来,我是用的序号,序号相同,就是同一个人
你现在又插入一个连续号,是用来干什么用的?
要匹配是不是同一个公司的职工,不能靠姓名(除非保证没有重名的),因为大部分公司都会有重名的人员,所以一般的都会给每个职工分配一个工号,用工号来匹配就会方便了。
目前你这个表中的A列序号,我就是当成工号来对待的。

F9公式
=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$E$8,MATCH($A9,排班表!$A$8:$A$999,)-1,MATCH(F$7,排班表!$E$7:$AK$7,)-1),b,IF(LENB(LEFT(a))=1,"β"&MID(a,2,9),a),IF($A9="","",IFNA(VLOOKUP(b,HSTACK(VSTACK(数据源!$H$6:$H$34,j,"β"&j),VSTACK(数据源!$K$6:$K$34,EXPAND("PH",7,,"PH"),EXPAND("法休T",7,,"法休T"))),2,),"")))

F9公式--自动溢出到月底,不需要左右拖拉
=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$E$8,MATCH($A9,排班表!$A$8:$A$999,)-1,1,,DAY(EOMONTH(排班表!$AC$5&"-"&排班表!$AF$5,0))),b,IF(LENB(LEFT(a))=1,"β"&MID(a,2,9),a),IF($A9="","",IFNA(VLOOKUP(b,HSTACK(VSTACK(数据源!$H$6:$H$34,j,"β"&j),VSTACK(数据源!$K$6:$K$34,EXPAND("PH",7,,"PH"),EXPAND("法休T",7,,"法休T"))),2,),"")))

这些公式都是针对你左侧插入新列后的F9单元格而言的,以后再删除列或加入列都不受影响了。
建议你使用自动溢出的公式


TA的精华主题

TA的得分主题

 楼主| 发表于 2024-10-28 13:12 | 显示全部楼层
mykitami 发表于 2024-10-28 09:25
就是这个COLUMNS($A:A)造成的
为解决这个问题,公式我重写一下吧
先跟你确定一个问题,现在把两个表的人 ...



非常感谢高人的再次公式帮助啊,
昨天晚上发了请教高人公式问题的留言之后,
又在研究高人的这个公式,
考勤表F9=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$F$8,$B9,COLUMNS($A:A)),b,IF(LENB(LEFT(a))=1,"β"&MID(a,2,9),a),IF($B9="","",IFNA(VLOOKUP(b,HSTACK(VSTACK(数据源!$H$7:$H$34,j,"β"&j),VSTACK(数据源!$K$7:$K$34,EXPAND("PH",7,,"PH"),EXPAND("法休T",7,,"法休T"))),2,),"")))
对比之前没有插入列的公式,
发现有个
OFFSET
函数不一样,
其他地方没什么变化,
然后在B站里面去学习是做什么用的,
原来是给单元格动态漂移用的,
又向高人学习了新知识了啊.


请问高人用序号来做匹配查找员工姓名的这个序号一定要是两个都要一模一样吗?
如果小弟新增了高人说的员工工号列的话,
是不是可以把用序号的单元格换成工号的单元格呢?
序号还是原来的序号.
小弟还没有试过,
等会儿去试试.
呵呵.


小弟新增的“连续号”的列是用来看实际行数人有多少的,
当有隐藏行时“序号”列就不知道有多少人,
“连续号”列就可以看到有多少人.


再次感谢高人的公式指教啊,
小弟先消化一下高人写的新公式.


2024年10月28日 星期一




TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-7 22:32 | 显示全部楼层
mykitami 发表于 2024-10-28 09:25
就是这个COLUMNS($A:A)造成的
为解决这个问题,公式我重写一下吧
先跟你确定一个问题,现在把两个表的人 ...





你好高人,
请问小弟还可以再请教你考勤表的问题吗?
由于排班表有一点小变化,
有2处地方的公式需要重新写一下,
不知道可不可以再麻烦一下高人帮帮忙?
高人比较了解小弟考勤表的情况.


排班表AL9=SUM(ISNUMBER(FIND(CHAR(ROW(INDIRECT("65:90"))),F9:AJ9))*1)-COUNT(FIND("半",F9:AJ9))*0.5


考勤表G9=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$E$8,MATCH($A9,排班表!$A$8:$A$999,)-1,1,,DAY(EOMONTH(排班表!$AC$5&"-"&排班表!$AF$5,0))),b,IF(LENB(LEFT(a))=1,"β"&MID(a,2,9),a),IF($A9="","",IFNA(VLOOKUP(b,HSTACK(VSTACK(数据源!$I$6:$I$34,j,"β"&j),VSTACK(数据源!$L$6:$L$34,EXPAND("PH",7,,"PH"),EXPAND("T法休",7,,"T法休"))),2,),"")))


小弟发了新帖子没有高人帮忙指教心里有点着急.


拜托高人了啊.


感激不尽.


2024年11月07日 星期四



请教高人关于Excel表考勤表公式统计的2个问题 统计出勤次数 01.jpg

请教高人关于Excel表考勤表公式统计的2个问题.rar

1.69 MB, 下载次数: 14

TA的精华主题

TA的得分主题

发表于 2024-11-7 23:06 | 显示全部楼层
idiocy 发表于 2024-11-7 22:32
你好高人,
请问小弟还可以再请教你考勤表的问题吗?
由于排班表有一点小变化,

没有关系,有问题尽管问
你这个考勤表很复杂,其实我并不太明白你里面的系统逻辑关系,也不知道这些名称的具体含义,所以不能很系统的去分析这张考勤表。
但是,为了尽早解决新出现的问题
我提点建议:
将问题说的详细、全面。
在那里要写个什么公式、解决什么问题,数据来源于那里,计算逻辑讲清楚,是否有特殊要注意的等等
特别是数据来源于那里,计算逻辑最为重要。

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-8 09:18 | 显示全部楼层
mykitami 发表于 2024-11-7 23:06
没有关系,有问题尽管问
你这个考勤表很复杂,其实我并不太明白你里面的系统逻辑关系,也不知道这些名称 ...



高人你好,
终于等来高人的回复消息了,
小弟很是激动.
小弟以为高人会看到小弟昨天新发的帖子<请教高人关于Excel表考勤表公式统计的2个问题>,
所以就没有赘述问题了.
小弟直接复制一下新帖子内容啊,
大概意思高人应该能够理解的,
只是小弟写的文字比较多可能看的累.




首先小弟需要诚心的道歉,
对不起!
因为小弟之前在“mykitami”高人的帮助下做好的考勤表由于排班上有一点儿小变化,
有2处地方需要重新写一下公式,
想要实现的效果结果是一样的,
只是公式的求值方式因为排班有变化所以公式也有变化,
一直都是“mykitami”高人帮助小弟小弟非常非常的感谢他.




问题01:
这是“mykitami”高人帮忙写的公式:
排班表AL9=SUM(ISNUMBER(FIND(CHAR(ROW(INDIRECT("65:90"))),F9:AJ9))*1)-COUNT(FIND("半",F9:AJ9))*0.5


求值需求:
每人每月统计求和从“数据源”表的整个G列查找匹对有重复值的纯英文字母或英文字母中文组合的项的出现次数.
英文字母半公休
英文字母半补休
英文字母半班
这种出勤上班半天又休息半天的
需要除以2,
也就是乘以0.5,
因为是上半天班,
只能算是0.5的出勤,
2个英文字母半公休,
2个英文字母半补休,
2个英文字母半班,
这种情况的才能算是1个完整的出勤.


还需要每人每月统计求和从“数据源”表的整个I列查找匹对有重复值的项的出现次数.
但是有种情况就是英文字母+I列写的中文的组合,
“mykitami”高人的思路是用出勤“β”来全部替代英文字母,
因为英文字母就是出勤,
+后面的中文只是一个备注说明.


“mykitami”高人指导隐藏零值的公式:
=IFERROR(1/(原来的公式)^-1,"")


因为“数据源”表的整个G列是用“苏小亓”高人帮忙指导用公式组合显示出来的,
数据源G6=CHAR(64+MOD(E6-1,26)+1)&IF(E6>26,OFFSET(F$4,ROW(A26)/26,),"")
小弟需要这样子的显示结果,
匹对的时候不知道能不能用公式显示出来,
因为直接使用搜索功能搜不到,
譬如搜索
Q行
弹出对话框显示:
无法找到您所查找的内容。单击“选项”了解更多搜索方式。
但实际上是存在的.


因为“数据源”表的列可能前面还会插入新列,
希望新写的公式不会因为前面插入的新列而失效.


请教高人如何重写改变以上这样求值需求的公式呢?
会不会给高人添加麻烦呢?
真的非常抱歉了啊.










问题02:
这是“mykitami”高人帮忙写的公式:
考勤表G9=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$E$8,MATCH($A9,排班表!$A$8:$A$999,)-1,1,,DAY(EOMONTH(排班表!$AC$5&"-"&排班表!$AF$5,0))),b,IF(LENB(LEFT(a))=1,"β"&MID(a,2,9),a),IF($A9="","",IFNA(VLOOKUP(b,HSTACK(VSTACK(数据源!$I$6:$I$34,j,"β"&j),VSTACK(数据源!$L$6:$L$34,EXPAND("PH",7,,"PH"),EXPAND("T法休",7,,"T法休"))),2,),"")))


这个公式是横排溢出公式,
只需要下拉充填公式用就可以了,
不需要右拉充填公式,
非常好用,
但是因为前面的排班表英文字母中文组合这些有变化了,
所以就不能显示出来了,
小弟改不来这么优秀的公式,
请高人帮帮忙再重新指教一下可以吗?


求值需求:
需要把用英文字母和英文字母中文结合的“排班表”表用“数据源”表里面的“考勤符号”列里面的定义符号壹壹对应转换一下显示出来.
简易的理解意思就是把英文字母的和英文中文组合的这些全部壹壹对应用指定的考勤符号替换掉显示出来.


不知道小弟是否有表达清楚意思,
已经上传附件图片,
可以参考小弟手动一个一个转换的“考勤表”表.




万分感谢啊```




2024年11月07日 星期四 笔



TA的精华主题

TA的得分主题

发表于 2024-11-8 13:59 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
idiocy 发表于 2024-11-8 09:18
高人你好,
终于等来高人的回复消息了,
小弟很是激动.

排班表AL9
=IFERROR(1/(SUM(N(LENB(LEFT(F10:AJ10))=1))-COUNT(FIND("半",F10:AJ10))*0.5)^-1,"")

思路:首字符是英文的数量 -(含有“半”字的数量*0.5)

考勤表G9
=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$E$8,MATCH($A9,排班表!$A$8:$A$973,)-1,1,,DAY(EOMONTH(排班表!$AC$5&"-"&排班表!$AF$5,0))),b,IF(LENB(a)=2,"β",IF(LENB(LEFT(a))=1,"β"&MID(a,2,9),a)),IF($A9="","",IFNA(VLOOKUP(b,HSTACK(VSTACK(数据源!$I$6:$I$34,j,"β"&j),VSTACK(数据源!$L$6:$L$34,EXPAND("PH",7,,"PH"),EXPAND("T法休",7,,"T法休"))),2,),"")))

是不是比以前多出了一些有两个英文字母的考勤,比如  AA  BI之类的,你也没有说这样的对应什么符号,我是直接对应到“V”了,不知道对不对?

改完了,请测试一下

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-8 16:07 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
mykitami 发表于 2024-11-8 13:59
排班表AL9
=IFERROR(1/(SUM(N(LENB(LEFT(F10:AJ10))=1))-COUNT(FIND("半",F10:AJ10))*0.5)^-1,"")



非常感谢高人的再次公式帮助啊,
还得是高人啊,
对小弟的考勤表很熟悉情况.


弱弱地请问一下,
排班表AL9=IFERROR(1/(SUM(N(LENB(LEFT(F9:AJ9))=1))-COUNT(FIND("半",F9:AJ9))*0.5)^-1,"")
这句公式是不是不需要用到“数据源”表的整个G列去查找匹对也能实现小弟的这种排班统计次数效果?
因为高人的解题思路是正确的,
排班的特征就是纯英文字母,
或者是首字符就是英文字母后面再加中文的这种,
还有纯中文备注说明的这种.




“数据源”表的整个G列的特征就是
前面一定是26个英文字母,
及后面再加上备注说明文字,
所以有中文或者是英文,
就出现了高人所说的有重复的两个英文字母,
但是特征还是前面的英文字母是26个英文字母,
所以高人的猜测是正确的,
这种也是出勤一天的意思,
也就是考勤符号的出勤“V”.


考勤表G9=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$E$8,MATCH($A9,排班表!$A$8:$A$973,)-1,1,,DAY(EOMONTH(排班表!$AC$5&"-"&排班表!$AF$5,0))),b,IF(LENB(a)=2,"β",IF(LENB(LEFT(a))=1,"β"&MID(a,2,9),a)),IF($A9="","",IFNA(VLOOKUP(b,HSTACK(VSTACK(数据源!$I$6:$I$34,j,"β"&j),VSTACK(数据源!$L$6:$L$34,EXPAND("PH",7,,"PH"),EXPAND("T法休",7,,"T法休"))),2,),"")))
高人的这句公式可以显示出“排班表”里面的
双英文字母的排班,
纯英文字母的排班,
但是英文字母带中文的排班没有显示出来,
小弟不知道是不是因为没有去从“数据源”表的整个G列去查找匹对的关系呢?
还是因为“数据源”表的整个G列是公式显示出来的不能再用公式去识别出来呢?
请高人再指教.


2024年11月08日 星期五




请教高人关于Excel表考勤表公式统计的2个问题 统计考勤符号没有英文带中文的 01.jpg

TA的精华主题

TA的得分主题

发表于 2024-11-8 22:48 | 显示全部楼层
idiocy 发表于 2024-11-8 16:07
非常感谢高人的再次公式帮助啊,
还得是高人啊,
对小弟的考勤表很熟悉情况.

=IFERROR(1/(SUM(N(LENB(LEFT(F9:AJ9))=1))-COUNT(FIND("半",F9:AJ9))*0.5)^-1,"")

=COUNT(MATCH(F9:AJ9,TOCOL(数据源!$G$6:$G$1999,1),))
第二个公式是直接在数据源G列中查找统计,与第一个公式有差别,因为数据源G列中,并不全,它没有类似Q中秋节、Q行中秋节字样的东西。

=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$E$8,MATCH($A9,排班表!$A$8:$A$973,)-1,1,,DAY(EOMONTH(排班表!$AC$5&"-"&排班表!$AF$5,0))),b,IF(LENB(LEFT(a))=1,IF(LEN(a)<=2,"β","β"&MID(a,2,9)),a),IF($A9="","",IFNA(VLOOKUP(b,HSTACK(VSTACK(数据源!$I$6:$I$34,j,"β"&j),VSTACK(数据源!$L$6:$L$34,EXPAND("PH",7,,"PH"),EXPAND("T法休",7,,"T法休"))),2,),"")))

你再测试一下

TA的精华主题

TA的得分主题

 楼主| 发表于 2024-11-9 08:53 | 显示全部楼层
mykitami 发表于 2024-11-8 22:48
=IFERROR(1/(SUM(N(LENB(LEFT(F9:AJ9))=1))-COUNT(FIND("半",F9:AJ9))*0.5)^-1,"")

=COUNT(MATCH(F9:A ...



早上好高人,
非常感谢高人的公式修改啊,
看来这种
Q行中秋节
Q中秋节
确实有点棘手,
好像是没有规律可寻,
小弟愚钝的以为用个组合公式就能实现的呢,
譬如“数据源”表的整个G列与I列组合起来,
再加上关键节假日,
去计数出勤或显示出出勤,
但是这样好像不行,
这样子的思路应该不正确.


因受这种影响,
高人的公式
考勤表G9=LET(j,{"元旦节";"春节";"清明节";"劳动节";"端午节";"中秋节";"国庆节"},a,OFFSET(排班表!$E$8,MATCH($A9,排班表!$A$8:$A$973,)-1,1,,DAY(EOMONTH(排班表!$AC$5&"-"&排班表!$AF$5,0))),b,IF(LENB(LEFT(a))=1,IF(LEN(a)<=2,"β","β"&MID(a,2,9)),a),IF($A9="","",IFNA(VLOOKUP(b,HSTACK(VSTACK(数据源!$I$6:$I$34,j,"β"&j),VSTACK(数据源!$L$6:$L$34,EXPAND("PH",7,,"PH"),EXPAND("T法休",7,,"T法休"))),2,),"")))
也是就差这种情况的排班没有显示出考勤符号的出勤“V”出来,
但是其他的
双英文字母的排班,
纯英文字母的排班,
英文字母后面带中英文备注说明的排班,
纯中文备注说明的排班,
都是可以正确对应显示出考勤符号的,
这个已经非常非常厉害了.


能从高人的公式中完成小弟想要实现效果的考勤表,
小弟感到非常非常的荣幸,
沾了很多高人的高光,
没有高人的公式帮助小弟的这份考勤表是做不出来的,
所以再次的感谢高人,
谢谢你啊.


2024年11月09日 星期六




您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-23 16:01 , Processed in 0.045811 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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