下面讲解一个案例,这个案例呢是一个考勤打卡的一个时间统计的案例,我们看一下基本需求, 这张表打卡时间,这张表呢是系统内导出的一张表啊,也就这样的格式是固定的,就是按照日期一天天的往后排,然后每一天呢打卡时间是从早到晚这么一个排列。 我们的需求呢,就是将每个人每一天的打卡时间取他最早打卡时间和最晚打卡时间, 然后呢分别填到这里面去,他的最早打卡时间呢就为他的上班时间,最晚打卡时间呢就为他的下班时间。而这张表格呢,第五行往下都是需要我们代码添加的,添加的格式呢就是我们现在看到的 这一个是姓名占两行啊,上面这个对应的上班时间,就刚才说的最早的打卡时间,然后下班呢就是最晚的打卡时间。另外注意一下,如果他全天 最晚就是打卡,最晚的就是下班这个时间和上班时间,如果他时间差小于九小时,你就要把它设置个底色,证明这人今天出勤是有问题。另外如果当天没有任何一次打卡,就认为他是休息, 然后上班和下班位置都添上对应休息的字样,这就是我们的基本需求。我们看一下代码, 好,代码呢,我们使用这里面,我们使用成格表 答式,看一下像打卡时间,也就是说后面这张表格,系统导出这张表格。已用区域啊,这是 used range 已用区域复制给 a r 数组,然后 r 等于五, 这 r 等于五呢,是在这个统计表里往下写入数据对应的 这个我们屏幕刷新属性呢,我们设置一放,下面设置一处,因为我们刚才看到这张表格里面存在呢,我们要频繁的写数据,而且存在着和平单元格,所以我们要把这属性设置一下,下面呢将统计表啊将统计表,也就是我们刚才提取结果这张表 我们要 select, 要把它选中,因为原来说过你有多张表的时候,你设置代码的时候,像这种前面 不加表面,它针对的是 x u c 的,所以说避免这张表没没选中,而别的表选中运行代码会产生问题,所以说我们要把它选中,要加 select, 选中,选中之后呢,我们要把它这上面这块第四行往上的是我们留下的内容, 所以说我们已用去下移四行下面的整行删除,整行删除会把它格式什么都删除掉啊,待会执行代码,我们设置断点可以看一下, 这个地方,我们就使用位置语句,这个位置语句呢对应的是正则表达,是后期绑定, 这里面格鲁把属性我们设置为处啊,最近正在正在表达时,我们讲多一点,也就是将每一个反复规啊,符合要求的结果都匹配出来, 然后匹配模式呢,就是撇递加,撇冒号递加这种呢就是对应的,实际上就这种对应的时间格式,他这时间格式还挺规范的,大家看到了啊,注意看一下,他都是前面都是冒号,前面两位, 后面两位四位,中间呢,他有换行这种的,所以说我们用这种方式把所有的时间耽搁,就所有的时间我们统计出来,这个模式比较简单, 当然大家可以说单元格里面我用 sb 的拆分,你用 sb 的拆分也是可以的,但是其中注意一下,它包含外勤这样的汉字描述,你要做一下进步的处理啊。 好了,这就正则表达式,我们直接把时间提取出来,下面呢对第四行,对第四行也就 a r 数组,就这里面的第四行 往下便利,因为每一行对应一个人。好,第四行往下便利,然后呢,我们判断第一列你这个姓名是不是有内容啊?没有内容就是不是我们要处理的,就把它 pass 掉,如果有内容的话,我们就要把这行数据对应的添加到统计表的这里面。 好,这个对应关系呢,就是如果大于零,那么我们再点 r, 我们刚才说 r 是控制写入这里面数据,第一个 r 一呢, 大家注意 resize 一行三列,也就是说在这里面这是和平单元格了,待会执行的话,我们注意可以看一下,就是在这三列直接写上,而减一对应的序号, 这是姓名,然后上面上半,这是三行,然后呢 r 加一他下一行,在这个位置,第三列写上下半啊,最后这就是和平单元格啊,这两个合并了, 下面呢,第七列到他的最后一列打卡时间,第七列就是对应的这一部分写入就是每一天的数据了, 那就读每一天的数据,然后我们就做判断,如果这个单元格里面没有没有东西是空的话,那么刚才说了,这里面上班下班里面都添加添加休息这两个字样啊,都添上休息, 然后这个是两表之间的列的对应关系啊,那边第七列要写入这里面的第四列,所以是 a 减三,大家可以对应看一下就知道。下面呢,如果它里面有内容的话,那我们将 正在表达时匹配的结果复制给 m。 那么刚才说了一个什么事情呢?这里面的时间是打卡时间,是最早从早到晚这么列的,所以说第一个 个就是最早的时间,最后一个就是最晚的时间,所以这里面呢,我们也很简单,取零就是对应的最早时间,然后呢这是 m cont, 因为它的技术是从零开始的,所以它减一就是它最晚时间分别填到上下, 比如这里面,这里面好了,这是我们获取的时间。那么刚才还说了另外一个问题,就是说他如果当天 打卡最晚打卡最早打打卡的时间差,如果不够九个小时,那么将对对应的单元格底色设置为红色,那么就是用 c data 注意一下,用一下 say dat, 将这下面的时间减去上面的时间,大家注意一下,乘以二十四啊,这地方为什么要乘以二十四?对时间来讲,它减完之后是日是几天,一天就是二十四,所以我们乘以二十四小时,然后它小于九, 那么这个时候呢,这个单元格大家注意一下 r 行 resit, 因为上下两个单元格,我们把它底侧都设置为红色啊,这就是我们的需求。好了,这样处理完之后, r 等 r 加二,因为 r 对应的每一个姓名对应的是两行,所以的 r 等 r 加二。 这样循环完之后,我们最后再添加一个边框而已啊,这不是添完就添加这种边线, 然后设置一下就 ok 了,这就是我们的需求,也比较简单,代码也比较简单,那么刚才说的这个时间处理也比较简单,可能有人说你这时间处理,可能中间的休息时间,你休息长了短,这大家根据需求你可以进一步对时间进行处理, 这个代码我们就执行看一下啊,好到这没什么东西,我们设置一下,到这大家注意一下, 都清空了啊,带着格式什么东西都没有了。下面呢,这个地方就往里添加数据,我们可以在这地方逐一设置一下啊,大家可以看一下 啊,这地方添加上这几个,他现在是单元格的,单独的啊,他没有合并,也没有边框,我们听一下下边好了,然后这个时候他就开始合并, 看到这个地方他就和平单元格了。好,上面因为第一天是休息,他就这样了, 下面呢下一天他不休息,那我们就找出他对应的时间就添加上了,最早最晚因为这个就执行完,我们断点就不再设置了啊,大家有兴趣可以自己设置看一下,也不复杂, 或者分布执行,或者设置断点好,这样就执行完的结果我们刚才描述的时间不够角时,就出现了这样的红色底色啊,这样是一个对应关系,总体上还不复杂的。
粉丝1.2万获赞9.8万

今天给大家带来的是把从考证机里面拷贝出来的文件,一键把它汇总成,方便我们去核查的样子。像这样子的一个文件的话,我们去核查的话会很不方便, 我们通过 vba 代码一键汇总成,方便我们核查的样子。好,我们先点击这一个按钮,然后选择我们从考勤器里面拷贝出来的文件, 然后一键就可以把它汇总了。像这样子这个地方的话,就是 考勤期里面的这个打卡时间,像这样子的话,我们的一个考勤数据就很清晰明了了。嗯,然后其他的话,我们就可以直接在这上面 进行核对啊,比如说这个地方啊,如果是属于正常出行的话,我们就从下拉框里面选中勾就可以了啊。这一天我们可以跟员工进行核对, 是休息就休息,如果不是休息的话,我们看什么情况。三角形这边的话是上半天班,我们就把它标记成三角形, 其他的像这种休息啊,出差啊、假呀,都可以根据实际情况进行来核查。 如果说,嗯,像这种,如果有迟到的,嗯,我们就在扣款这一栏 来做标题,比如说扣二十,我们就是扣二十。像如果是有加班的,我们就可以把它填到这个加班这里来,比如说像十五 啊,星期六这边是算他加班的话,我们就是八点八七个小时,就算他加班,如果像这里不算他加班的话,我们就把这个去掉,像这样的一个情况的话,我们全部把它合成好之后,那么这个就 ok 了。 这里还有另外两个按钮,一个是隐藏行,像这样子看的话,其实还是比较凌乱,我们点击这个隐藏行, 嗯,就可以变成像一位员工,然后一条状态的样子,这样子的话就会,嗯,更方便核对一点。 呃,如果当我们合唱完的话,想看细则也可以点显示行都全部都显示出来了,嗯,像这样的一个情况的话,我们,嗯也可以通过 vba 代码生 到这边来,就会有出勤率啊,然后周六加班的加班呢,扣款的合计啊,加班的一个合计啊,都会出现在这里,点击获取数据,就可以一键获取最新的数据。 嗯,如果大家用的上这样一个表格的话呢,可以点赞加关注,在评论区留言私信我获取这样的一个表格。

如何根据考勤机中导出的刷卡记录统计每个员工的工时?像这种刷卡记录是比较特殊的,每天的打卡记录都在同一个单元格中, 用常规方法很难计算出工时。现在让我们看看如何用 vba 实现一键计算。点击开始统计按钮,我们看到每个员工的工时已经统计完成。 你在弹唱。

下面讲解一个考勤的案例,嗯,这是多个考勤表的数据呢,进行汇总,所以多考勤表就是这样,每个月他会有一张考勤表,这里面也可以生多个考勤的表。考勤表之后呢,我们要将这些数据做一下汇总,其实汇总呢,就是汇总他的这些部分, 也就是说非正常出勤的部分,我们要做内容汇总,汇总完结果是这样啊,这是汇总完的,这列是姓名后面就对应的这一部分,这一部分 是跟表格当中的这部分是对应的,而这一部分呢,对应的这个表格是三十三到四十例啊,这是加的,加上为了说明对比,说明加了,就是需要把这部分的内容啊,已经还有这部分姓名对应的提取到这张表里面对应位置,其实上就是这样。这种 案例呢,之前我们讲过就是一个字典的汇总吗?简单来讲就是一个字典的汇总,那么我们看一下代码,首先呢我们定一个字典,这个字典是做你这张表后面次数的汇总,而这个呢, 我们是用来存储姓名的啊,这边我用两个字典,当然您可以不用两个字典, 你可以用一个字典都是可以的啊,啊,包括之前我们讲过好多字典情况都可以的,这里面我们定义两个字典, 这个屏幕刷新,因为设计到后面我们写数据,我们就直接做了一个屏幕刷新的属性设置。 fox 下面对应设置处,下面就是对每张表进行便利,那便利的过程中我们要注意一下表格的特征呢,就是表明这个表明带月份呢,是需要我们提取数据的对应表格就 三月和四月是两个,所以说我们用这个 n s t r 对下,判断一下是否包含月,如果包含的话就一日是我们要处理的,所以我们将这张表已用去复制给 a r user range 这个我们之前单独讲过啊,大家可以查一下之前的视频。那么 对 a r 呢?下面就是对 a r 内容进行便利。那么 a r。 我们看一下这三三月和四月。这张表都是从第七行开始的,写入就是 人员相关的出行情况,是从第七行往下写的啊,然后这地方是刚才说了这部分都是三十三到四十,你看一下四月,他中间空了一 空的一列啊,都是三三到四十,这是 a a 几到 a n, 所以这个地方呢,我们就开始对这个 a r 数据机每行进行便利,便利的时候注意我们要判断一下 什么,就是这个姓名有的单元格是不是空的啊,避免是有空的,所以说这个地方我们加了个衣服判断,判断用 land 函数怎么样长度判断这个单元格的数据是不是长度大于零,长于大于零我们就认为是有效的姓名,那么这个时候我们要把对应的姓名放在 点 d n m 里面,好了,这点我们稍后再说,下面再对三十三到四十,也就刚才说的这部分, 就是你请假各种情况做一个统计,然后进行便利,然后将姓名和后面的第五行爱列,这第五行爱列呢,对应的就是这个啊,具体矿工什么名称,将他俩组合到一起 作为兼职,后面也是这样组合到一起作为字典兼职进行理加,进行数据的理加啊,你避免这地方有 问题,你加个 vl, 但是这里面不会有什么问题,这边是用公式啊,已经是数值了,所以说你就不用再加 vl, 如果其他担心有文本导出的数据的话,那你这里面加个 vl, 让他转换成,转换成数值好了,这样主表便利完之后,就把所有的人 对应的初期情况,每个月初期情况做了一下,累加会走。那么刚才说了,大家注意下这个地方,这个地方为什么要加这个字典?哈,我们说这个地方,大家注意一下,这个地方是我们将除了标题之外的内容清空, 这表格是除了上面这一部分内容要清空,也就意味着 a 列的姓名也同步要清空,所以说这张表 这是我们运行完的结果,大家看到了有姓名是没有运行的话,这张表里面这地方是没有姓名的,或者说你有姓名也是上一次提取的,跟你现在可能有出入,就这样,所以说我们把这个清空,然后这个将他提取 对应姓名呢,转制放在 a 五及以下部分啊,就是从这往下放,把相关的姓名添加到这,然后呢我们再将这个已用去读了给 ar 数组啊。汇总表已用去读了给 ar 数组。然后呢,对第五行往下进行变利, 然后呢,对第二列就是这部分,往后也是进行便利啊,现在是逐行进行便利。 对应的值怎么填写?就是用字典用人的姓名就第一列对应的姓名,第三行这个就是对应的这一部分,而这一部分呢,刚才已经说了,是跟他上面是对应的,所以他放入字典兼职,这样逐一对经就复制给 ar 数组, 最后将 ar 数组附有值为表格区域,就实现了数据的提取。那么刚才说了,因为这个地方说了加了这个,一个是因为你要删除姓名啊, 要补充第一列数据。还有另外一个,其实大家每个月的人员可能是到公司要变动,那变动意味着我们在添加表,可能三月里面有的人民可能四月没有了,或者说或者说四月没有新增加人员了,所以说我们要用字典将名称汇总完之后 去重处理完,添加到这里面。那另外一种有,有一种概率就是姓名有,有可能重名,那有可能重名呢?那大家在考勤的过程中肯定你姓名上要加标识了啊, 所以说这地方做一下提醒,所以这地方用了这么一个字典,实际上这个表格说是考勤,只不过拿着考勤数据来做一下汇总。去除啊,应该是 去除重复做一下数据的汇总而已。嗯,我们执行代码看一下,我们先到这吧, 因为上面都在用数组,直接在内存里面执行好了,下面这一行就是清空汇通表内容,应该是保留标题啊,下面部分清空,这个 我们看一下。 ok, 标题留了,下面就字典将第一列还有往下进行添加好,添加上来了,就是这样,这个用字典便利是从这张表名称是从这张表,从上到下,也是这张表从上到下,从左往右 啊,驱虫之后按照先后竖进出来,这个没什么东西了,读取答案之后,最后一个复式就 ok 了啊,这样就循环完,汇总完啊,相关文档呢?会发在 b 站对应视频评论区的链接里面啊,大家可以点击链接进行下载。

xl 考勤统计表制作,考勤机导出的考勤表制作成 xl 加班统计表。大家好,欢迎观看本期视频,本期呢我来讲解这样一个案例啊,就是我们实际工作中遇到的一个问题, 就说哈我们如何把我们的考勤机导出的这个考勤表呢啊,去制造成一个自动会懂的一个 a 四二的一个加班统计表啊,他的场景需求是这样的啊,就是员工的话每天就会那个按照我们的考勤机上去打卡,然后呢 他呢每天的话这个十六点十就是下午六点之后哈,就算加班啊,加班的话如果说比如六点之后对吧,应该是从六点半开始啊,六点半开始了啊, 就是超过半小时的时候呢,可以才有加班费啊,就说六点到六点半之间是没有的是吧,比如说半小时之内是没有加班费的啊,就是超超过六点半之后 啊,工作半小时之后啊,算加班,加班的话呢是一个小时,工作日的话是一小时是十七块钱,然后的话周六周日的话是二十三块钱啊,就这样一个长腿需求啊,好,那么平时呢哈,我们应该口型集中哈,导出的这个口型表是这个样子是吧,这样一个记录表, 他呢哈,呃,格式的话你看是横向的,而且哈每个单一格有好几种好几个好几组数据非常不好统计啊,那怎么办呢?所以说我们必须要对这个表做一个新的整理啊。好,我们先来看一下怎么做啊,我把这一行数据的哈,先给他点击右键复制, 复制之后呢哈去到我们这个统计表当中来啊,这里哈,我们就已经已经做好了哈,比如说哈,我们这个是张三的啊,员工张三的一个数据是吧?然后呢,我们可以这样啊,把原有的数据先给它清空掉,然后再点击这个 地方,我们选了什么啊?先选啊,先记着哈,选择这个单元格啊,点击右键选那个。哎啊,没有复制上方,我们再重新复制一次啊, 这地方再复制一次。复制啊,在这个地方的话,点击右键选择性粘贴,我们选择什么呢?转制啊,内容转制啊,就是把它调成竖向,这是第一步要做的事情, 转至之后接着哈。第二步是怎样选择数据,然后选择这个分裂啊,这里我们可以选择智能分裂或直接分裂都行啊,我们点开智能分裂吧,智能分裂这里我们选择一个手动分裂啊, 这个地方怎么分裂呢?因为他呢有一个特点啊,就这个时间的话是吧,他宽度都是什么?哎,正好是一二三四五是吧?五个宽度他都是固定的啊,那格式。所以说呢,我们就按宽度啊,都给他分隔开啊,把他顶住就行了。每四个对吧?每四个给他分隔开啊,这个地方要注意 啊,然后要注意哈,我们要干什么?要依据最长的那条时间对吧?因为他这一天的话可能打卡好几次,你看最多的时候有五六次哈,这是我妈最长的那个。好,这样给他画领好这个界限之后呢点完成, ok, 好,此时可以看到啊,哎,张三的所有的这个数据的啊,给他分隔开了啊,然后后面的啊,全部啊,全部什么?自动统计出来加班多少小时,然后每天加班多少小时?然后每天加班工资是多少啊?然后 下面统计数的是什么?是总的一个加班小时数啊,这后面还有一点啊,是修正公式,就说哈,我们这个实际的统计当中啊,可能是这个小时数啊,可能是有所加减是吧,可能统计的不一定对哈,所以说呢,你如果说你需要那个按照实际情况的时候做修正的时候,你可以这边去改,是吧?不改 之前的话是多少小时?十三小时,但实际上呢哈按我们统计的话是十二个小时,对吧?那么说我们就改成十二,改成十二之后呢,这个地方呢哈小时数呢哈会自动跟随他去变化。好,这样就统计出来,然后这个月加班的总工资也算出来啊,是不是非常方便呢? ok, 至于啊,这是十大张三了,通了道理,我们可以把李四的是吧,这个这是李四的哈,李四这个员工呢也给他放进去啊,然后包括其他其他员工的是吧,李四王五都可以给他统计进去哈,然后最终呢哈就形成了我们这个统计表,每个员工的 我们这边哈还有一个总的表,这边的哈,通过切换不同员工的哈,可以看到什么不同员工的一个考勤数据看啊,也方便查询。 ok 啊,正常就是我们今天要讲的这样一个工资自动统计表,一个使用的一个场景啊,那么下一节开始我们看一下如何把它制作出来。好,感谢大家观看本节视频,下期再见啊,可以多关注和点赞我们的视频。

下面讲解一个考勤相关案例,是考勤表数据的一个转化,这是考勤表的原始数据,统计出来了,这相当于这是部门,这是一个员工的工号,这是姓名,这是时间,大家注意下时间,这是每一个员工, 它是一天啊,安一天一行。那么这里面我们要统计一个什么东西呢?我们统计它的公式就是 n 和 o 两列, 就是正常的公式是八,可能存在加班公式,我们要把他俩求出来,然后呢最后这个格式要转制成这个格式, 就是说这一行把这个员工的信息呢只在一行体现出来,是转换成这样。那么这张表我们需要添加的数据呢?是这两黄色部分,这两行 一个是你添加上,根据这个月份年月啊,添加上这个从一号到当月最后一天的数据,然后这个添上对应的是周几,周几啊, 这个将每一个员工的信息填在这里面,这个统计完之后,这个地方是统计对应的公式,就是我们刚才说的,比如说他二号,这一天他工程十一,就正常公式在加班,比如说他这个是三号,他也有十一,他这个五号他就变成了八, 就这样五号他就变成了八,就这样统计出来。那么我们看一下代码, 代码我们用了两个字典,两个字典对向后期绑定,这屏幕刷新属性,设置为 false, 设置为处,因为我们在这张表里面,我们要直接在表内进行数据写入。 好了,这个将考勤明细汇总表的 user 问题用去,我们讲过整个他有数据区域都复制给 ar 数组, x 等于四呢,是用来控制他在这张表写入数据的位置。 先我们对 a r 数组进行便利,我们先判断 a r 接三,大家注意一下,接三,接三呢,就是对应这个 c 列,就是它因为有 a 列,我们有一部分数据隐藏了啊, a 列我们有数据隐藏了,所以说这里面的接三对应的就是它 公号。大家可能有人感觉我是不是可以用姓名来处理这个啊?这个地方你如果不存在重名的话,你可以用姓名,怕重名的话用公号或身份证信息这种唯一的来处理, 这样去判断你这个员工信息是否出现过,如果没有出现过,认为他首次出现的啊。对,在对于在这张表里添加信息,他首次出现的话,那么 y x 等于 x 加一,也就这个行号往下加一,加完这一行写入数据, 就是它的一二三四分别对应的 a、 r 数组的它的一,大家看一下,它一是公号就对应它的三 啊,这名什么姓名对应它的四,就这样对应关系就 ok 了,对应过来,然后它的第四列 对应的是公式,这样添加进去就 ok 了。那么最后你添加完之后,你要这样,这个信息复制给字典,证明他已经存在过了,所以所以限制复制给字典。然后下面他要干嘛?他要将这 条的信息以他的工号和日期组合到一起作为见值,然后将他的公式进行统计。十四十五呢,就是刚才我们看到的 对应行是四十五,这两单元个相加,就所以把它的工时添加进去,复制一个字典啊,这个字典就保存这个信息,每个员工每一天的 他主要出现的日期当中的公式。好了,下面这部分是统计完了,下面呢我们就要添加这里面的日期,添加这日期,因为你这地方月份修改了,那下面对应的日期要修改,这周期要修改,所以呢添加这一部分,并把这公式对应添加上。 我们取的当月是第一天,我们就取年 e 二单元格吗?取年然后 月,然后杠一,用 cat 的 c date 函数处理一下,他就变成当月的第一天,然后 y 呢,我们取这个月份的 mas, 也就月值,因为我们之前前昨天还是之前我们讲过一个月最大三十天,那么我们就将第一天往后 逐渐增大加天数啊,如果他月份变了,那意味就不是当前月了啊,这个就是用的这么样一个用法,然后呢我们接等于零到三十, 我们呢这个 first 可以嫁接,就是第一天的零吗?就是第一天。好了,我们这里面就用 y 进行判断,如果这个一二对应的月份和你这个新加的日期月份是一样的话,那就是同一个月。那么这个时候呢,我们第三行接加五,第三行就这 接加五,因为他是五开始,接是从零开始的,就等于第一天等于 dt, 那么第四行也是接加五,就等于周几。用仿 mat 这个处理一下,四个 a, 我们之前也讲过,四个 a 就是星期几啊,这三个 a 就是周几就变成这样了。好了,这两行数据呢,就根据这个加放循环往前 循环就进行添加了,那么添加同时我们要保证下面这些数据一并添加上,所以就是下面这个循环从第五行往下, 因为我们刚才添加完数据了,第五行往下这个是第二列有数据的最大行号,第二列有数据的最大行号,我们取他实际上就从第五行往下有员工信息的这一部分, 然后将员工信息的第一列就是他的工号,还有 这个时间啊, d、 t 对应这个时间组合到一起,跟这个是对应的啊,如果这个字典里面存在它,那么就意味着我们有对应的公式,然后就添到第 i 行, 接加五列对应的公式,比如是他,那你在这,那就添加到这了,因为这个加他和他作为关键字啊呀添他了。然后这样每循环一个日期,从下把所有的员工信息便利一遍进行添加,最后循环完了,就把这部分信息添加完了。 好了,我们先把数据手动清空啊,这段代码有一个问题,就是里面没有清空数据这个操作,所以说我们先手动把它清空,我们执行代码看一下好了, ok, 这样就提取出来了啊,这面是对应的,我们就不去验证了。那么我们说一下这个代 代码虽然提取出来,但是这个代码呢?嗯,我感觉不是太好啊,这之前写的,之前写的,实际上这个刚才想了一下这个代码要怎么操作,相对好一点,我们不用两个字典, 我们用一个字典也是 ok 的,就是说我们先把日期写进去, 先写日期,把这本先写进去啊,就是下面这一部分,我们可以先把日期先写进去,然后我们奔便利 a r 数组,也就在便利它的信息,便利它的信息过程中呢, 我们就逐行来添加,根据他里面对应的日期实际就定位他的列号,将对应的公式往里添加就 ok 了,对吧?这样效率要比现在代码要高一些,而且还是 整个字典啊。这个方法大家可以自己试一下,就是平时写代码的时候你回头再看,有的时候虽然解决了问题,但是感觉代码的 效率或者各方面还是有欠缺的。嗯,这个就说这么多,然后如果要下载资料的话,可以去 b 站相关评论区,然后有链接可以进行下载。

下面我们讲的案例是统计考勤打卡时间,这张表是统计结果,就是五列以下的部分都需要我们通过代码去提取的,那么原始数据的来源呢?就是打卡时间这张表, 第一列是姓名,然后从第七列往后是具体的时间,如果这单元格是空的,因为当天休息我们都要添加填的些休息,如果是这种的,我们要取一个最早的时间作为上午上班时间,最晚的时间作为一个下班时间, 后面也是一样的,这是最早的上班时间,最晚的下班时间,这样都是一样的。 那我们这刚才说提取结果,这上半时间,下半时间,这种休息分别一个姓名要提两行数据,就刚才这种上班下半, 然后这个日期呢?就刚才说的从第七列往后,他们是一一对应的,这个没什么好说,一一往后对应提取就 ok 了,这样是一个提取结果,我们先把这个结果删除, 我们下面来看我们的代码。 第一个是将 ctr, 也就是打卡时间这张表,原始书记这张表读到 a r 里,然后 r 等于五呢,是控制在当前这张表的行号 下面呢,这关闭屏幕刷新,我待会要频繁的往里面写入数据,这个地方用这个表达是用来提取打卡时间, 这个是多个打卡时间都要提取,这个就很简单,匹配模式数字,冒号数字就匹配那个时间格式, 这个是第四行开始的,因为我们打卡时间的表格数据是用第四行开始的,然后注意一下我们, 然后这时候我们要判断姓名,如果姓名有的话,意味着增加一个新姓名,所以说我们在 cel 就是当前这个统计表格里面第一个添加序号,因为是从五行第五行开始的,他序号是一是二减五,第二个什么第二?听姓名 呀?揭皮。这个地方是我们做单元格合并的啊, 我们要合并干嘛?就是序号这两天,我们刚才直接看结果,要合并,要姓名,要合并两行啊,序号和姓名分别要合并两行, 然后第三列上面单元格填上班,下面那个单元格填下班,然后下面呢就是对打卡时间列进行判断,从第七列到最后,如果这个单元格里面 等于零的话,如果单个没有东西的话,因为当天休息,这直接对应单个里面添加休息 ok 了。这二减三,为什么?因为在我们那个打卡时间里面是第七列开始的,而在我们的结果列呢, 是从第四列开始的,所以要 i 减三,这个利号要减三。这个地方如果他的时间存在的话,有单元格不是空的话,也存在数据的话,那么我们就使用正的表达式,将结果读 就组合读 m。 然后第一个就是我们刚才看了数据规范,第一个肯定是最早打卡时间,最后一个就是最晚打卡时间,也就是下班时间,第一个最早就是 上半世界,我们看一下这个数据格式啊,就这种,第一个就是上半世界,最后的就认为他是下半世界, 然后这个当天打卡时间读完,然后 r 加二,就是我们要写入下一个姓名,为什么加二?因为这地方用了将两行组合到一起了啊,然后最后写完之后,我们这面就是对刚才添加数据的区域加了一个边框, 我们执行代码看一下。现在呢?我刚才说了,这里面同级别人的数据都已经删除了,我们隐形一下,这是就是我们生存的结果, 也是相对比较简单。这个之前讲过一个打卡,可能之前打卡表格跟着有出入,所以这一次单独针对这个石油重新讲一遍。

下面讲解一个案例,这个案例呢是我们之前已经讲过的,因为有人说他没有太懂,没有太懂,后来跟他做了下沟通,就是他表格跟他的结构是有出入的,所以说呢,我们把这个案例呢再重新过一遍,然后有一些地方做一下针对的说明 啊。这个考勤数据是这样的,这是我们最终要提取的结果,这张表是结果表,这张表是所谓的打卡系统呢导出的表。那么这两个表你首先观察一下,其实上面都是相对应的,也就每一天他都是对应的,只不过他对应的列有点稍微有点出入啊, 这个是从这一列开始对应的,这种无所谓,我们之前讲了好多案例,你自己对应就 ok 了,这个所谓的序号,那很简单,我们直接往下填就 ok 了,无非就是这个人, 对这个人他要占两行类。添加序号是占两行,我们做单元格合并,姓名占两行,用单元格合并。然后他有一个上班和下班时间,要分别统计他的上班和下班时间, 而这里面呢,这个人他只占一行,但是这个单元格里面我们要统计的上班下班时间是这样, 如果是当天这种的没有添加时间的,我们就认为他都是休息的,所以填上边下边都是休息。如果这边有时间,上边是取这个时间的最早的,下边取最晚的,而且这种带时间的,我大家观察一下,这种考勤表里面, 时间都是由早由早到晚,从上到下排的,也就是说我们这里面处理的话是使用正则表达式啊,你可以使用正则,也可以不使用正则,而我们这个案例是使用正则表达式的,正则表达式 根据这种时间的结构统计出来,我们取最早的一个和最晚,最最前面和最后面一个就完成了上班和下班时间的提取, 因为这里面数据是比较规矩的,实际上可能打卡时间要比这个要复杂,比如有打一次卡啦,或者怎么样,这种我们是不管的。如果是有时间里面,我们就认为 取最早和最晚,如果你有一个时间,那你上班和下班时间都是一样的啊,如果没有时间的话,那就认为是休息,就是这样,这个需求是比较简单的啊, 没有那么多再多的要求啊,就是这样,每个人的数据占一行,姓名在这个位置,第七列往后的是对应的日期,打卡时间中间的部分,说部门什么东西,我做隐藏了这面每个员工最后 提取的椰果结果啊,每个员工占两行,所以这是表格格式上还有对应的数据的一些要求。那么处理的原则,我们刚才简单题就使用正字表示吗?我们看一下这个数据, 然后我们先看一下代码啊,代码呢?我们打卡时间这张表, 打卡时间 user range。 之前我们讲过,移动区域我们都复制给 a r 数组,而等于五,这个五对应的是统计表,从第五行开始往下计数,对的是这张表对应的行号, 下面呢?屏幕刷新,因为我们在这张表里面频繁的写入数据,是直接往里写的,我没有用数组啊,因为数据单元格合并是直接往表格里面写数据的,所以用屏幕刷新,我们设置 false, 下面设置 一处,关于属性,我们讲过好多次了,这个对应的设置下面使用正规表示位置语句啊,是一个后期绑定,这个你就固定用就 ok 了,如果你不了解,你可以固定用,如果想了解的话,你找一下专业资料看一下,看一下他几种,也就是说几个属性,你设置一下,可能最麻烦就是这个属性 匹配的支付串这部分啊,支付串这部分是最麻烦的,然后其他的几种方法和属性你看一下基本就明白了。 那么这个简单说一下,这个是因为时间涉及到多个,所以说我们 group 属性就要去把所有符合要求的时间都提取出来,而这个我们就针对这个做了一个时间匹配时间的字步串啊,就这样这个撇地就是数字,数字加时, 实际上有的人看啊,你都是时间,他都是两个数,两个两位数字啊,两位数字,所以你实际上可以,也可以后面变成大括号,二加可以改成大括号,这个大括号也是可以的,因为在这里面我们数据是改很清楚的,他是每一行啊, 大家看到这个数据是每一行存放的,所以说我们这样用也没毛病。如果是时间数据是连在一块的,两位两位两位往后连,那你这个地方就变成二大块加二,也就是两位两位往外取,保证他数数据的一致性啊,那这个就匹配我们当前 这个单元格的时间,下面就是对 a r 数组进行便利,它是数据是从第四行往下存具体的打卡时间,所以说我们 从第四行开始,到它结束,判断姓名这一列是否大于零,也就是否有有效的姓名 a 列啊。 第一单个是不,如果你是大于零的话,证明我们这个这行数据是有效的,至少你这有个姓名能对应上。下面要做的就是对这张表 进行处理代码,大家注意一下,这个按钮是在这张表里啊,所以说点击这按钮,同时这张表是激活状态,所以下面就没加表名,直接用的 sales 啊。我们第一个是复值,是将 一二三列对应的数据进行复制,涉及到序号 a r, 接一就是姓名上班,这个放在数据里一次性进行复制啊, 复直是这三列,下面呢,二加一,也就是下一行的第三列,我们写的是下班,就是这个位置,写的是下班填入数据,下班。然后对第一列单元格两个单元格进行合并,两行啊,进行合并,这是两行进行合并, 这没什么说的,就是修改单元格格式啊。下面呢,我们在对这名员工对应呢这张表的时间成第七列,往后每天的打卡情况进行统计了 啊,对数组的,这是对列进行统计,也数组二维的。然后首先判断这单元格里面是否等于零,如果这单元格长度等于零,那你上边下边都是休息,就直接填 上就可以了啊。这地方因为我们只要单一个不等于零,意味着他就有时间,这是我们观察数据出来的啊,他就有时间,里面就会有时间格式的数据, 所以说这个地方我们直接判断他是否短一两就 ok 了。下面然后呢,这个正则表达,是啊,就执行这个结,就是对这个字符串进行处理,获取对应符合这种字符结构的结果啊, 它 m 是一个集合,因为刚才说了将它的结果放到 m 这个集合里面, 也就他是有序号的,是从零开始的,也就是说这个数据从上往下进行匹配的,他找到第一个,然后找第二、第三个,最后他的结果,比如说我们拿等一会吧,等一会我们看到这他会出四个结果,也就我们区从零 一二三来取,那么零就是打卡时间最早,这个就是最后的,所以说他第一个取他零的值,最后一个呢?他有一个技术看他减一吗?因为从零开始计数的,他减一他值就是最后一个, 然后这样循环下面就是 r 对应的行号,因为一次合并两行吗?这样循环完就把对应的数据提取完。然后呢这个地方我们就是加上边框, 最后实现了数据的完整提取。我们我们这地方大家注意下四个啊,我们先看完,因为这个单元格一一直要激活状态啊,数据还挺多的啊。好,我先把它删除, 我们执行一下设置个断点,设置断点,在这个地方设置啊,我们看一下执行结果,他第一次获取有效信息是什么样子的。 刚才说了这些单元格前面没有加表名,是按这个按钮进行执行的,按按钮时候这张表是激活状态,所以大家注意一下这个闭眼表之间有冲动。 ok, 我们执行到这了,执行到这,我看一下这个接啊, 它等于第四行,实际上就第四行这一列数据,第四行第八列,我们看一下是不是第四行第八列 i 等于八。好了,我们在这里面有一个视图,我们之前讲过视图本地窗口,我们可以看一下 m 的值, m 是不是看到有四个值, 对吧? ctrl 有四,这是从零开始的,它的标号是它是八点半,大家看到它是八点半啊,最后一个我们看一下最后一个就 ok 了,它是十一点二十四,我们刚才说了, 所以我们只要取零,对应的八点半是最后一个,十九点二四就是我们要的结果,就这两个对应的提取出来啊,对应表格,我们过来看一下,对吧?这是刚才我们说过八点半十九点二四 这个格式做了合并,大家看啊,这时间进行填了一号是休息的,我们再往下执行。 好, ok 了,这就把数据提取出来添加上,所以还是那句话,当你要做统计自己数据的时候,你先观察一下自己的数据格式,然后再确定进一步怎么处理啊。

下面讲一个案例,是考勤数据汇总,这个考勤数据汇总呢,不同于我们之前讲的啊,之前是一张考勤数据,然后我们将相关的啊考勤结果信息呢统计出来,这个是 多个表格内的口型数据呢,我们给汇总到一起,是这样的一个汇总,我们看一下基本需求 就是这样,这个是我们考勤车考勤数据统计的一个程序文件,在这个文件夹下呢,还有其他多个部门, 多个部门,每个部门这个文件里面都涉及到一个考勤表,我们要借考勤表内容呢,提取出来我们看一下,打开,这是一部门的考勤表啊,科室考勤表,大家注意一下,这里面内容比较多啊,多列我们看前面就可以了, 我们要拷贝数据,是这样要把标题拷贝过来,剩下的把这有效数据部分拷贝过来。为什么我们说刚才就是表情上有效数据啊,点一个单元格,大家看一下,这里面他是有公式的啊,给大家说一下,这里面都有公式的, 我们先拉一下,可能这样看一下,这里面都是有公式的,所以说你在考有效数据呢,实际上这张表里面除了标题之外的有效数据就是这几行啊,其他的我们不拷贝,所以要注意这个 后,同时呢将后面这一系列数据都拷贝过去,这是我们的需求,那么我们 就相当于我们多文件处理啊,就跟我们讲过之前讲过的文件对象就多文件汇总内容汇总,但是说要注意它的有效数据 定位的问题,我们看一下具体的代码,这是文件对象后期绑定,之前我们讲过,有专家讲过,这屏幕刷新属性上属于 false, 因为多个操作多个文件嘛,下面要打开文件的时候避免出错,还有删除表格的时候,它会有提醒, 就是有提示,这个把提示属性设置为 false。 下面就是把我们程序文件所在的表格呢做一下清理, 我们只留两个,一个扣的和首页,其他的表格我们都要删除,因为我们要把其他内容拷贝过来嘛,所以事先我们先给他删除,这 w 等于我们来控制 拷贝过来数据的有效行为位置啊,这 x 等于零呢,就是我们要确定哪张表过来要带标题过来,所以说我们用个 x 这个变量啊。下面呢就是对用 fso 文件 对象对当前文件夹下的文件进行便利,这个啊, get fold 这样文件进行便利,便利的时候我们判断一下,因为这个文件夹里除了程序文件之外,剩下的就是都是一些部门的口口啊口气文件。所以说呢, 我们只要判断这个文件名里面不包含我们程序文件这个关键字,那就 ok 了,也就应用 in 这个 ins tr 这个函数,我们做过专线讲解啊,判断如果他等于零,就是代表不包含,下面我们就把这文件打开, 打开我们对应每就是每个部门的考勤考勤文件啊,打开之后我们 x 等于 x 加一,就是技术相当,技术打开多少文件,当我们第一次打开的时候, x 加一, x 等于它加一的时候,它是让就变成一了。如果在一的时候呢,我们是将这个文件的课时考勤表整表 拷贝到这个程序文件的第一张表后面啊,大家注意,考评到第一张表后面,实际上对应我们这个表就是拷评到首页后面啊下面,然后再呢将这张表复制给 s h 变量,大家注意一下这个啊, 这样第一个文件实际上就处理完了,我们这个 if 到这之后,下面就是关闭此文件啊,然后当到第二个文件,我们干嘛?这 x 继续加一,第二个文件查 x 等于二,等于二,就不不满足这个等于一这个条件了,他就跑到这里面啊,以后的 除了第一个文件,以后的文件都会跑到这里面,他要干嘛?第一条我们要在这个程序文件也是这个文件里面先插入这张表里面,定位到有效数据的最后 一行的位置,就是使用方向循环逐个单元格进行便利,如果我们便利到第一个从以第二列啊,大家注意啊,这是第二列,第二列出现一个单元格为空的话,那我们就复制给 w, 同时退出这个循环。 下面呢,再将我们打开文件的课时表已用区,大家注意啊,已用取消 off 三的四,就是除了标题部分,我们的整体拷贝刀 这张表的 w 单元格开始以下的部分,然后这这样循环完之后,就会把所有的信息提取出来,我们先分布执行,大家看一下第一部分到这儿啊, 好,实际上这上我们第一次打开了一个文件呀,科室考勤标这个是部门一的打, 打开了,然后呢,我们在这儿在执行的话,因为 x 等于,大家看一下 x 等于一,所以说这张表就会插入到我们程序文件里面, 看一下,插入到这里面啊,这是我们第一个文件啊,已经插入到这里,一张表实际上带着下面公式的,但至少我们把标题带过来,把它内容带过来,下面再运行呢,就是把它第二张表是复制给变成 s h, 下面再循环的时候,我们就跑到下面这一部分来了。 好了,这是 boomer 啊,大家没看到标题在上面是 boomer 的表,那么这是 boomer 的这张表对应的内容,这个时候 x 已经等于二了,嗯,把它取消了,它就会 不会再执行这个条件,他会跑到下面来,下面来这个循环。我们说了是对应的程序文件里面,先插入这张表,要定位到这个单元格位置 啊,这是 for 循环,我们把它取消了吧,断点取消了哈。 w 等于几? w 等于十三。比如我们看这个,它定位到 w 等于十三,要定位到这个位置下一个表格,那么插入数据的时候,就拿它插入 b r w 这个位置,它已用区域 off 四就是 一样,这个区前四行,不要往下插入到我们当前这个程序文件啊,这程序员插入表这个位置,往下插入,这是第二张表啊,第二个文件依次都是这么插入,最后完成,完全实现了数据的有效提取,就所谓的数据汇总,就这么个结果。 但是说后面的最后一个文件的下面公式部分,我们依然会提取到这张表里面, 这可以留着,当然你不留着,你也可以做一段代码把它删除,这都是无所谓的啊,我们这里面就是保留状态,这就是我们当前的一个考勤数据汇总。

一键生成考勤单,这两个呢是他的原始打卡记录,这个是他的模板。我们先来看一下效果,只用点他一下,然后花了两秒钟就得到了我们想要的这些数据。 好,我们接下来看一下他的什么要求,他要求就是提取上个月十九号到这个月十八号的数据,然后对这些打卡时间做一下处理,比如说去掉重复打卡时间,给他做出缺卡提示,然后 这些人员名单给他做成变动的,然后剔除,法定节假日、星期天也要剔除掉,当然调休是要算上的,那然后我们就给他做出了一个这样的模板效果,你也已经看到了。 nice, 你如果需要定制什么模板的话,也可以联系我们定制下面有联系方式。

bba 实战应用之批量处理考勤数据汇算实际出擎天数仅需零点七三秒,精准高效。朋友们好,咱们上期讲了有关批量预算考勤数据里面的一个 求应开出勤天数,今天咱们讲第四期啊,会算实际出勤天数和缺卡罚款,直到早退罚款,咱们下期再讲。 好,咱们看屏幕,屏幕当中咱们可以看到啊,这个咱们已经预算好了十一出行天数和缺卡罚款。另外呢,对这个正常出勤啊,半天 还有请假等做了不同的颜色标识,咱们现在到资料里面看一下, 好批量处理考勤数据之四,归算实际出勤天数和缺钙罚款啊!公司考勤规定周一至周五不允许请假,若有请假不得用周六日出勤填补 啊。再看底下迟到罚款,迟到早退一个小时以上者按矿工半天处理。超过半天啊,矿工一天处理 啊,只有早晨上班和晚上上下班打卡即可,中午下班和下午上班无需打卡,所以实际这个时间差应该大于十个小时,这是个整天的一个判断标准, 要求请假标注为绿色,半天标注为蓝色,取卡标注为棕色,出勤标注为粉色, 岗位标准黄色。好,咱们再看一下思路,思路,实际出勤天数等于应出勤天数减去个人请假天数,包括整天半天,还包括 周一到周日请假的天数。因为虽然说周六里面有一个供休日,但是他是一个随机选择的,所以说周六日里面有一天是工作日,如果请假的话也要算上,这个要注意 是另外的,实际出勤天数不得大于已经出勤天数,因为啊,公休就是公休,公司规定让你休,你不休没有工资。既然公司规定周一周 五不允许请假,所以我们就逐一便利每个员工打卡记录区域中的每一个单元格测试是否属于周六日,若为空白则属于请假。 个人请假天数等于周一到周日空白单元格数量啊,周一周五空白单元格数量加周六日里面请。呃,请假那一天数量。 第二半天的判点判断包标准必须有两个打卡点,且两个打卡点的时间值差值小于七个小时。为什么呢?因为一小时以上者按公司规定旷工半天 除矿。呃呃,迟到一小时让矿工把钱处理。所以说你只能小于七个小时, 超过半天按旷工一天处理。等于七个小时,按整天计算,少一个小时按迟到旷,迟到早退处理。 好,咱们现在到表格里面看一下啊,咱们现在把这个表格清空。表格清空啊,咱们预算一下把,清空,咱们把这个背键复制过来。 好,这是原设数据,咱们现在运行一下。好,零点七一秒,完全达到我们的效果。 咱们看一下啊,这,这个职员张三啊,十一春天是十一春天入室, 二十二点五天可以看到,咱们怎么拿选中他是,呃,二十四个有效数据,其中呢,有三个半条,半条,咱们以用这个蓝色背景作为标注啊,二十四减一点五,二十二点五,这个没有错误。 好,咱们再看这工号十九位的是经理级别,咱们看一下他的 啊,他底下是二十四啊,他是想有啊,公休单休,一周休一天,可以看到他每周都休息了,然后呢,还有一个请假 啊,他的二十四天没有错误。然后咱们再看 这个王五,王五属于职员啊,这是今出,今天是二十五天啊,也是正确的,咱们再看赵六,赵六 也是支援,可以看到十七天完全正确,那么这是如何做到的呢?咱们现在回到后台看一下, 咱们先简单把这个代码咱们过一下啊,有的咱们前三期呢,也也也就整体过了一遍,其中呢有一部分咱们优化了一下啊,第一第一,第一步整理考经数据,优化显示格式 啊,这一边呢,像这个心里停止屏幕刷新啊,忽略错误啊,显示计时器啊, 变量啊,还有这个,这个是这个政策表达式字典,这两个字典,这里面需要关键注意,咱们加了一条这个愿 replace, 把这个呃 每个打卡记录里面的空字符给全部清除,为了更加精准的预算,为了会算实际考级数据打下基础。 好,咱们再看第二个, 第二个,咱们在这个或循环当中啊引入了一个子过程识别汇算周一到周五请假天数啊,这个应该改一下啊,周一到周日,咱们 啊,咱们命令吧半天天数和缺卡次数啊,咱们看这个字过程 这里注意他这个正高表达式的前面这个次数限制咱们改成了一个一到二啊,因为啊,因为他这里面有这种情况,他看到原设数据里面还有这种情况, 看他是这种缺卡状态,又打了一次,他前面是个像七点三十八,他是七冒号三十八,他这个时间值跟前面这种两次打卡的这个文本值不一样,咱们需要转换一下,需要注意这种情况,不然的话他无 法跟正在表达是进行匹配啊,咱们需要给他转化成自负形式。 好,底下这就是转换。如果说啊,判断他首先不是不是空单元格,然后呢,他又不是字符,咱们通过这个 format 这种函数 给他转化成小时到分这种格式,然后后面加一个画行符,原先的单元格里面是小时分秒,他背后的值是一个大补率性, 如果你匹配这个动作表达是根本就匹配不上,你,只有转换成这样才能进行自负匹配,这个需要注意啊, 然后只有两个打卡记录,工作时长小于七个小时的均拿住半天。首先呢,啊,两个打卡点需要满足,同时呢,他的时长咱们用对的第一幅函数 啊,这个单位值是 h 小时的意思啊,用麦其林代表上班打卡点,麦其一代表下班打卡点,两个时间差就是小于七个小时,而不能等于七个小时, 因为公司规定你超过一个小时就干矿工处理了,所以这个标识 wwkz 标识为半天啊,然后呢,被这个单元格的背景设置为蓝色背景等于八,同时呢,只要 是符合这种条件的,这个咱们都加半天 agd, 咱们都是这个变量设置为半天。统计好,下面那么还有缺卡的,对了,他就有一个打卡记录 啊,咱们同时呢,把这种情况下标注为橙色背景,然后呢,出现一次就加一次。好,下面的这周六日车测算,咱们用了 dait pat 啊,这个单位 w 的代表星期, 然后底下这个 data ceo 时间序列年月日,这个呢?是这个是,这是这个位置啊,第四行, 然后这个跟打卡记录同在一列,取的是这个日期,说的就这个部位啊,这个部位你便利哪个单元格要选哪个单元格的列号,然后选中这个行号,那么有行号,有列号,就是这个时间值。 好,后面的选 vb monday, 咱们说星期一,认为他是一周的第一天,这样把这个值付于 sssss, 代表着周六日的一个值, 假如他小于六啊,就是周一到周五,并且呢单元格尾空白啊,颜色标注为蓝色,这得请假。同时呢,这半天加一天。底下咱们统计周六日供胸填数 啊,如果说他是周六日,并且呢也是空白,或者说他是半天标志,把他的背景也标注为蓝色啊,统计的供修 ph 的的帕布力克的意思啊,咱们这样统计这个供修天数, 为什么呀?如果说他的实际公用天数小于公司规定公司规定的公用天数,那么就以实际就以公司规定的公用天数往下减。如果他实际的供求天数大于公司规定的公用天数,那么就以实际的公用天数 来冲解这个硬出今天数,这个要非常注意啊。好,下面呢,这两个引用的词过程啊, 冬至夏至,这个咱们为下一步判断迟到早退做准备。再往下就是判断个列的列号啊,就是一出进天数,是一出进天数,迟到早退,你缺的缺卡罚款。好,咱们现在再回到第二步, 第二步这来了,然后这一看,咱们这是便利循环各个行号啊,这是岗位 啊,咱们主要看这里这个实际出行天数,十一出行天数看判断。如果 phd 对一次,这这个公休天数,实际公休天数 啊,这个呢? gwdgw, 这是这个什么呀?公司规定的供出天数,如果说实际供出天数大于等于 公司规定的工作天数,那么应促进天数等于啊,当月天数减去十几, 工作天数减去半天数。呃,这个请假天数再减去半天数啊。用这个 igd 统计的是周一到周五的半天数,那么实际工作天数里面呢?包括周六日里面有整天得有半天的。 如果说实际供收天数小于公司规定的供收天数,那么就以 导演天数减去公司规定的公用天数,在减去周一周五线下天数,再减去周一周五的半天数。注意,这个结果要转成啊, 单精度啊,新购类型的,因为这里面有半条,如果说你用因推进类型的话,他可能会丢失,属于精度。 好,再看这行,这个会算缺卡罚款啊,缺一次卡罚二十块钱 啊,这是在嗯,某个人,这个这里面是在某个人打卡区域里面进行便利的,便利完以后要注意要把这个异地变量,半天的变量,还有这个缺卡次数变量,以请假天数变量,还有供修天数变量,还有这个 啊,半天的标志的变量都清空,否则的话他会进行累计啊。 好,咱们现在回到表格里面来,咱把清空,咱们再运行一次。好,看出 a 看出 c, ctrl a ctrlc, 咱们复制粘贴运行一下。好,零点七三秒 缺卡罚款就出来了,咱们看这个罚款吧,缺卡罚款,可以看到缺卡罚款,他四次缺卡一次,二十八十。再看这个 啊,十七高工位的,这里面有一丝缺卡,而是这个叫坤坤的啊,一丝缺卡,而是并用黄色背景标准出来。咱们再看这个三十三号 工位,缺卡一次,缺卡两次啊,毕业他的这个打卡记录的这个样式正好符合咱们的规定。还有第三第七号工位,这个他本身的原先他是一个时间值,经过双迈特和 换好服装换以后,这个格式是完全的符合我们要求这个自负类型,并且呢在格式上显示这个更加容易识别,它是一个缺卡类型。 好,咱们现在总结一下,总结本案例重点难点在于精准把握实际出行天数,半天缺卡的判断标准,然后导入公司规定要求,冷静 耐心的分析各项需求,设计相应思路,再进行的不断的进行测试调试,然后运用相应的方式方法去实现就可以了。好,咱们 下期预告,下期呢,咱们最后一个问题,汇算迟到、早退罚款,好朋友们,咱们下期再见。

vba 红考勤表,实现批量打卡的全自动考勤管理表格。 大家好,本期呢,给大家介绍一个全自动的一个考金表,然后这边的话,我们看一下这个表格的话,嗯,主要是包含这样几个功能,第一个的话是有一个总考金表,总考金表这一块呢哈,是可以通过切换不同月份的哈,来查询各个月的一个不同考金数据。 然后呢,后方呢哈会自动统计啊,他的一个出勤、缺勤、休假以及加班情况。 然后呢,我们还可以呢哈,通过这个加和减来增加啊员工或者减员工,比如说我们要增加一个员工,员工叫李四李五吧,然后点确定,然后我们看一下 啊,此时下方啊就增加了一个离谱的员工,这个地方要注意,我们增加这个员工之后呢,他默认啊,在全年个月当中哈,都会增加,都会增加进去, 就这个啊,这是总考金表一些主要功能啊,当然啊,上方啊,这边这个日期和星期的话都是自动生成的,后方啊,所有的内容啊,都是自动统计的,然后这边的话,没有还是还是公示啊,全部都是用我们 vb 来实现的。 然后接着看哈,第二个的话是减啊,减员工的话,比如说我要删某某个员工啊,删除谁呢?李四吧啊?李四删除也确定 好,此时可以看一下啊,只剩下礼物礼四就删除掉,那我们接着再看啊,这是总考金表。然后 第二个的话是我们先看一下单月的考勤表,单月的考勤表的时候,比如说一月份,二月份或者三月份,我们打一个三月份吧,三月份这里比如说哈,我要进行一个考勤数据的一个整理,是吧? 啊?这是二月份啊,二月份,二月份的时候,我们可以点击这个批量打卡啊,我们可以对某个员工进行打卡,对某个员工进行打卡的时候,可以点这个地方啊,选择某一天是吧?可以选择天数五号出勤、缺勤以及加班情况点确定 好,此时可以看到哈张三在五号这一天的一个考勤数据又打进来,就说哈,可以通过双击啊,双击我们这个员工姓名啊,可以实现单人的这个打卡。同时如果说我们想实现批量打卡呢,可以点击这个地方点批量打卡,批量打卡这里我们去选择 啊,从几号到几号?比方我们从一号到二月份吧,二十八号吧,我们选择全部员工啊,全部员工就说全一到二十八号进行全部打卡,全部员工之后我们选择全部出勤,对吧?如果说有加班的话,到时候我们再调整,我们先选择全部出勤点,确定 好,此时可以看到哈,他为什么把一月到这个一号到二十八号所有的这个员工数据呢?全部打上考勤了, 然后这个这个期间呢?哈,如果说有某些员工进行了加班,你们可以选择选择一个啊,爱手烤串进来,可以选多个啊, 后面有标注啊,按住床数字,比如说张三、张五、张七、张八,对吧?这几个人呢?然后呃呃,是一号到十号吧,比如说哈,在月初的时候,对吧?一号到十号这几天 时候呢,都有一个加班啊,这个地方直接停加班就可以了,然后点二啊,比如说加班两个小时啊,某个人加班多少,你可以单独选中一个,也是可以的。好,然后点确定好,此时可以看到啊,这边哈这几个人的这个加班数据的话就全部写进去了, 好吧。啊,然后我们这个打卡神器呢,就把它关掉就可以了。然后后方哈可以自动统计出他的一个出勤缺勤以及考进情况啊,再来就是这个分表,一个自动打卡的一个使用方法。 好,你接着看,那据说哈,这些分个月的一个使用方法都是一样的啊。然后最后的话呢,还有一个考勤统计,考勤统计这一块呢,我可以选择不同月份啊,来切换不同啊,不同人。对啊,个月的一个考勤数据情况,比如说张五张六,张 七十八,他们全年各月啊,考勤情况是怎么样?下方有一个直方图,立方有一个柱形图啊,来做一个比较。然后呢,下方呢哈 还可以实现一个按日期段的一个查询,比如说哈,我现在是六月一号到六月十号,我就选择什么六月一号到六月十号这个数据就可以了,然后选择某个员工,比如张五啊,点查询好,此时可以看到啊,张五在六月一号到六月十号啊,出勤了八天,缺那个加班的十天是吧?你再换一个, 张那个再换一个啊,张四查询啊,此事可以看到啊,哎,再重新查询一次啊,查询啊,等他查询完成之后啊,再出来是吧,这边是吗?会发现啊,他考勤了八天,没有加班,没有出行,对不对?好,就给他关掉。 ok, 这样的话就是关于这样一个日期段 查询还有方面啊?上面哈各个月书记的一个查询啊,大家可以自己去试一下。好,感谢观看本节视频。那后面啊,再给大家介绍更多好用的表格,大家啊可以多关注和点赞我们的视频,下期再见。

好,大家好,今天给大家带来一个红音用啊,一键计算打卡机的考勤啊,虽然说我们这一种的话,打卡机走出来考勤的话啊,很多地方的话也都已经啊淘汰了,一般用电电或者一些其他软件啊,我们先看一下这里的话是工号姓名啊,然后打卡时间,这是一段时间 啊,收据员的话是这样的啊,然后我们看一下这考音表的话,重新给他弄了一下啊,他因为他这个分上午跟下午的啊,我们现在看一下实际的一些效果,咱点一下按钮啊,他这个 的话会自己给他计算啊,包括出勤啊,出勤的话就是出勤啊,休息的话就休息啊,请假就请假,缺卡的话啊,也是会也是会有的啊,因为这 各位小伙伴的话,他的人数不是特别多啊,代码没进行特别的优化,这里的话仅供一个参考啊,可以让我们看一下代码啊,这代码的话比较简单啊,然后大家就是参考一下就行了。

下面讲解的案例呢是考勤公式提取,也就是说有多张表格,我们要在里面提取对应的考勤公式。这张表格呢是我们最后提取的汇总表,一个公式的汇总表,第一行和第二行呢是标题做了隐藏, 那么三行四行事先已经填好的标题啊,这是一部分事先填好的标题,这一部分我们不用去生成。之前我们讲的考勤表的时候,这个地方是关于日期和对应的周几是自动生成的,这里面呢是事先填好的,那大家也可以根据自己的需求进行自动生成,这个我们之前讲过。而下面第五行以及下面的数据呢, 是我们需要提取的,这是员工号、姓名、公司,这是对应日期,他的工作工时也工作时长,需要每天对应提取出来。那么具体公式对应的表格呢?是这些表格大家看到的能用多少隔开的一些 员工号,比如这张表,这张表里呢,这一部分也就是十三列啊,十四列是一个员工的信息,这个十四列也是一个员工的信息,他这里面有员工号,我们需要提取的姓名、公司, 这三个啊,这个这个这三个是乳房去提取的。另外每天的工时呢,在下面他一号一一直往下排, 我们把这种对应的公式提取出来,然后这个就是下边时间减上边时间,就是一个公式,然后这是一个公式,然后这是一个公式,正常这三个公式加在一起,所以当天的总公式。那么注意观察一下数据啊, 这个公式是在第二列里面有和平单元格,相对这一列他是偏移,偏移一列,这个相当于这一列是偏移了三列啊,他是在第列、第四列里面,这个呢在第七列偏移了六列啊,这个依次偏移, 注意一下,我们要考虑一下他这个所在的位置相对这行的偏移,因为我们下一次要提取这个的时候,我们依然要通过偏移来确定他的位置。后面呢还有一样呢,都是十四行啊,十四列啊,每个都是十四列, 那么我们看下代码,第一个屏幕刷新,这个我们直接设置了啊,因为成对使用。下面呢是将这个公十这张表 从第五行往下,我们进行内容清空,因为上面我们说的是标题已经时间填好了, r 是从第四,我们用 r 用来控制在在这里面写入的区域啊, 也就是说这里面我们用 a r, 大家看一下这 a r 数字,我们没有往单元格里面直接写入啊,我们先用 a r 取了公式 a 一 resize, 我们取九千九百九十九,这是我们预设一个范围,可能要比我们实际的范围要大, 然后列呢四十二列,我们取到后面四十二列最大的范围啊,这里面我们看一下 r, 然后这个 c r, 这 r 等于四,我跟他说了对应 a r 里面的行,这个实际上啊,你根据自己的需求是设置包括这个行和这个列 下面的 c r, 就是我们刚才说的所谓的偏移。我们事件设置好了,我们就是对应这几个公式所在的列,相对这一列的偏移,就是一三、六、八十十二, 就是我们刚才解释过啊,这个这个是在第二列相对于他偏移之一,这个是他第四列相对于偏移的三,就是这个。下面就是我们对主张表进行便利判断,他表明不是共事汇总。另外他 他的遗用的列要大于十三,这列要大于十三,我们才认为他有这个考勤数据。下面 br 呢,取这张表的遗用区域,就是这对这张表整个有数据的区域啊,就遗用区域,这个我们之前讲过啊, 下面这个是对这张 b r 输装,也就实际上对对于这张表来讲,我们是对 每一个考勤区域进行便利,这个等于接等于一,一是最对应这一列。 step 十五呢,下一个人就到这来了,就去下一个人的,就这样 r 等于二加一,控制在 a r 数组里面添加数据吗?它这 a r 这三列实际上第二退第五行接对应的是一,它九就相当于十啊,如第十列,这实 就对应了他啊,第四行第十列对应的姓名,这第四行第二列对应的是公司,所以说呢,就接加一啊,就接对应片一,然后就复制给他,下面复制给他了,这是把我们这张表前三列填完了,剩下就对应天数的公十,那我们再看他, 这是十三到数组最下面,从十三是从这地方一号开始的,也就到它结束,我们要把这个时区间便利一下。 电力影像呢,我们就是 s m 的这个工时,就是用球盒用他俩存放的。然后呢,因为我们说了他这个球工时呢,要把这几个这个减他这个减他,对吧?所以叫取六个数值互相减,不是互相解啊,他减他,他减他是到六个,然后他用的 c r 用个 一辆,所以呢,我们这边用 c r, 然后 step 二,它一组两个数据作为一组啊,所以说我们先大家注意一下 b r, 哎,好,接加 c r k, 我们刚才说接对应的是这个 每个人员最左侧这一列,我们 c r 是个偏移列,偏移位置啊, k 加一相当于如果它是零的话,那就 k 二,这就是一,一呢对应的是三,然后它这个呢 对应的就是零零,那么对应的是一,实际上那你加上积呢?积是一的话就是四和二,对应的位置就是四和二,我们判断一下四和二的位置,如果这两边有数据,其中有一个没有数据的话,我们就不做处理,所以用 land 函数 长度,如果其中有一个没有数据的话,我们就不做处理,所以说这个两个都是长度,大于零的话,至少有一个字符的话,那么我们这时候 它俩相乘呢都是大于零,然后这个时候就证明它俩都有数据,然后这时我们再处理处理,用 c data 后面的时间减去前面的时间,然后 s m 作为叠加,这样就统计了 这几个区间啊对应的时长。这取完之后呢,我们再把这个值复值给 a r 数组, a r 数组,大家注意一下 i 减九啊,对应的列是 i 减九,因为它是从保存公式从第四列开始的,而它的公式从第十三行开始的,它有个对应关系,所以就这样这样循环一圈呢,就把这一个用户处理完了,然后你 step 十五呢,进行下一个,从 以十六列开始就取的是这个啊,片仪是一样的,所以就取出来,这样循环一圈,就把所有的人的公式取出来,然后最后呢我们把这个 ar 数组复制回表个区域,就完成了公式的提取,我们执行代码看一下啊, 这也在这,好,我们直接让大家看一下下面数据清空了, 这个因为是直接往数组里面写入的,没有那么直观数据显示,所以我们执行一下,一步到位。好,这样就直接添加上,比如说这个他在这里面的 这个时间,就这个时间减它加上这个时间减它,加上这个时间减它最后的公式呢是十一小时, 二十四分钟这么长,这就对应的数据。好,另外再说一下,如果大家需要这个具体代码文档的话,可以到 b 站进行下载,在 b 站的链接啊,在评论区留链接。
