Excel·VBA考勤打卡记录数据整理

《excel吧提问-转置打卡数据》,打卡记录进行数据整理,分别提取3个时间段的开始、结束时间。
与之前写过的《Excel·VBA考勤打卡记录统计出勤小时》要求不同,仅需要提取打卡时间,特殊之处在于开始时间要最晚,而结束时间要最早

将提取时间的特殊要求,定义为一个函数,后期调用时直接传参获取结果

Private Function SEARCH_NUM(arr, target, Optional mode As String = "-")'函数定义SEARCH_NUM(数组,目标值,查找模式)按指定查找模式查找数组,返回最接近的值'3种查找模式,"+"即大于等于、"-"即小于等于、"="即绝对值'支持数字格式的数字数组,也支持字符串格式的数字数组Dim result, aresult = noneFor Each a In arra = CDbl(a)  '转为Double格式If a = target ThenSEARCH_NUM = aExit FunctionElseIf mode = "+" And a > target ThenIf result = Empty Or result > a Then result = aElseIf mode = "-" And a < target ThenIf result = Empty Or result < a Then result = aElseIf mode = "=" ThenIf result = Empty Or (Abs(result - target) > Abs(a - target)) Then result = aEnd IfNextSEARCH_NUM = resultEnd FunctionSub 考勤数据整理()Dim trr, mrr, arr, dict, k, v, i, ks, vs, result, r, c, temp
'--------------------参数填写:标准上下班时间,对应查找模式,结果写入区域地址trr = Array(#8:30:00 AM#, #12:00:00 PM#, #1:00:00 PM#, #5:30:00 PM#, #6:30:00 PM#, #11:00:00 PM#)mrr = Array("-", "+", "-", "+", "-", "=")write_cell = "h1"         '结果写入区域地址write_col = Range(write_cell).Columnarr = [a1].CurrentRegion.ValueSet dict = CreateObject("scripting.dictionary")For i = 2 To UBound(arr)k = CStr(arr(i, 3)) & "," & CStr(arr(i, 4)) '键,姓名日期v = Format(arr(i, 5), "0.0000000000")If Not dict.Exists(k) Then  '姓名字典键不存在,新增dict(k) = vElsedict(k) = dict(k) & "," & v  '值为数字时间,用","分隔End IfNextks = dict.keysvs = dict.ItemsReDim result(dict.count, UBound(trr) + 1) '从0开始计数,0即为条件,1开始为数据'横纵条件赋值到数组For r = 1 To UBound(result)  '纵向result(r, 0) = ks(r - 1)NextFor c = 1 To UBound(result, 2)  '横向result(0, c) = trr(c - 1)Next'对应时间赋值到数组For r = 1 To UBound(result)If dict.Exists(result(r, 0)) Thentemp = Split(vs(r - 1), ",")  '分割字典的值,字符串数字数组For c = 1 To UBound(result, 2)result(r, c) = CDate(SEARCH_NUM(temp, trr(c - 1), CStr(mrr(c - 1))))NextEnd IfNextSet dict = Nothing  '清除字典,释放内存Range(write_cell).Resize(UBound(result) + 1, UBound(result, 2) + 1) = result'姓名日期键按","分列Columns(write_col + 1).InsertColumns(write_col).TextToColumns Comma:=True'时间格式Range(write_cell).Offset(, 2).Resize(UBound(result) + 1, UBound(result, 2)).NumberFormatLocal = "hh:mm"End Sub

结果举例
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1382359.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

使用php吧excel数据存到数据库,php导入excel表,保存进数据库,使用phpexcel插件

安装phpexcel插件 composer require phpoffice/phpexcel -vvv 表单 function test() { alert(点击确定后请勿刷新) document.getElementById("myform").submit(); } 导入本月考勤表 php接收导入的excel文件 ///接受文件 public function actionFile(){ if ($_FILES[&…

html考勤表格模板,Excel员工考勤表模板如何撤销工作表保护?

回答&#xff1a; 1、先在表上留三行空白&#xff0c;在第四行写个名字。 2、选择A1:H1&#xff0c;点【合并后居中】。 3、双击单元格&#xff0c;输入公式&#xff1a;TEXT(NOW(),"yyyy年mm月考勤表")。(注意&#xff1a;为了防止6月份该函数自动变化&#xff0c;可…

账龄分析表excel模板_智能考勤表excel表模板

点击标题下「鼎锐教育」可快速关注 分享最新的设计教程与素材资讯&#xff01; 鼎锐教育-专业的设计师成长交流平台 素材分类&#xff1a;办公文档 文件大小&#xff1a;44.75M 文件格式&#xff1a;XLSX 推荐软件&#xff1a;Excel 2016 模板下载 智能考勤表excel表模板 百…

输入月份自动生成excel考勤表,周末高亮,内容可以勾选

输入月份自动生成excel考勤表&#xff0c;周末高亮&#xff0c;内容可以勾选 源码下载地址&#xff1a;地址 先上图,可以通过输入年、月自动计算指定月份的工作日 2.Excel操作类引用为 using Excel Microsoft.Office.Interop.Excel;3.先定义初始的变量&#xff0c;周一至周…

PHP导入Excel考勤表

PHP导入Excel考勤表 安装PHPExcel引入IOFactory.php考勤表如下上传,接收,移动 Excel文件加载文件获取Excel中想要的数据然后把得到的数据放入数据库中进行后续操作; 安装PHPExcel 使用composer安装: composer require phpoffice/phpexcel引入IOFactory.php require_once(ROOT…

navicat卸载干净

1、控制面板卸载 2、删除对应的文件夹 3、删除注册表 全部删除就好了

企业时代下的汽车4S店形势分析

据网上数据显示&#xff0c;2022年约有2000家汽车4S店闭店退网&#xff0c;这一数据不由令人惊叹&#xff01; 疫情放开后&#xff0c;原以为汽车经销商的春天也即将来临&#xff0c;可它们有些已经死在了半路上。 2023年伊始&#xff0c;经销商大戏以一则破产消息开幕——浙…

关于Anaconda卸载干净的问题【已解决】

在卸载anaconda时&#xff0c;为了卸载干净&#xff0c;一般会在win10自带的 应用与功能中选择anaconda 进行卸载。 &#xff0c;也可以用anaconda文件中卸载程序Uninstall-Anaconda3.exe进行卸载。 然后再把相应路径下的剩余文件删掉。 但是&#xff01; 这还不够&#xff0c…

anaconda卸载后重装的悲剧

在经历了无比绝望的一天后&#xff0c;我终于在意志消磨完的最后一刻成功完成了anaconda的卸载重装&#xff0c;这一天过的可以说是非常绝望了。上午还在开开心心的准备下载pytorch库进行学习&#xff0c;结果在更新依赖库的时候没有使用虚拟环境结果导致anaconda崩了&#xff…

Anaconda卸载与安装

因为重新分配磁盘&#xff0c;导致anaconda的各种路径出现了问题&#xff0c;费了九牛二虎之力把所有的路径配置好之后发现jupyter内核竟然不能正常启动…一直没办法正常解决&#xff08;如果有懂的大佬可以评论指导一下&#xff09;&#xff0c;于是最终还是选择卸载重新安装一…

anaconda 完全卸载——重装

由于安装环境的时候不知道什么地方出错了&#xff0c;导致conda下载不了新的包&#xff0c;也不能更新现有的包&#xff0c;所以采取卸载anaconda并重装的方法&#xff08;简答粗暴&#xff09; 卸载 在网上搜集资料&#xff0c;发现卸载anaconda的方法五花八门&#xff0c;而…

Anaconda彻底卸载

Anaconda彻底卸载 Anaconda有时候安装会出现错误&#xff08;用这种方法可以彻底卸载Anaconda&#xff09; 本人亲测有效 在学习Anaconda的过程中 我遇到的问题 下载Anaconda时第一次未安装成功&#xff0c;第二次安装时遇到残留文件 所以做了此教程分享&#xff01; 控制面…

彻底卸载anaconda

彻底卸载anaconda 用anaconda更改我的python版本&#xff0c;就是出现了冻结无法更改等等之类的问题&#xff0c;担心更新anaconda还是会出错&#xff0c;于是打算卸载anaconda&#xff0c;重新下载一个安装。 ①方法一&#xff1a; 可以直接去控制面板—程序—卸载 可能卸载不…

Anaconda的卸载及安装(图文详解)

目录 Anaconda的相关操作 一&#xff1a;Anaconda环境相关操作 1&#xff1a;查看环境 2&#xff1a;创建环境 3&#xff1a;删除环境 4&#xff1a;激活环境 5&#xff1a;退出环境 6&#xff1a;查看当前环境中安装的包 7&#xff1a;删除环境中的已安装的包 8&…

Anaconda完全卸载教程(Windows10系统)

前言&#xff1a;任何软件在卸载的时候&#xff0c;不要直接用目录下自带的uninstall.exe卸载程序&#xff0c;这样子肯定是卸载不干净滴。最近在做项目用到了anaconda环境&#xff0c;做完就卸载anaconda&#xff0c;在网上搜了很多教程以及参考了官方文档&#xff0c;整理了一…

彻底卸载navicat

彻底卸载navicat 下载navicat的时候会有这样的经历。重新安装后上次使用痕迹还会存在。该帖记录一下彻底删除navicat的步骤。 第一步&#xff1a;通过控制台卸载navicat  通过winr&#xff0c;输入control打开控制台。卸载软件。 第二步&#xff1a;删除无用文件。  1. C:\P…

[转载] 怎样彻底卸载anaconda?

彻底卸载anaconda的方法&#xff1a;1、安装Anaconda-Clean package&#xff1b;2、执行【anaconda-clean --yes】命令&#xff1b;3、运行Uninstall-Anaconda3.exe程序即可。 1、安装 Anaconda-Clean package 记得要以管理员身份打开 打开 Anaconda Prompt&#xff0c; 输…

anaconda完全卸载方法

完全卸载步骤 进入命令行模式删除虚拟环境下载anaocnda-clean执行anaconda-clean --yes执行卸载程序删除剩余相关文件删除注册表 由于自己的anaconda版本太老了一直没更新&#xff0c;想更新一下&#xff0c;但未更新成功&#xff0c;于是想要重新卸载安装&#xff0c;本次卸载…

重复delete 对象指针后的 异常调用栈怪异 解析

Release版VC6 MFC程序 程序正常退出时得到一个如下异常调用栈&#xff1a;​ 0:000> kb# ChildEBP RetAddr Args to Child WARNING: Frame IP not in any known module. Following frames may be wrong. 00 0019eb94 76124f2f 00c3afc8 0019ebdc 001…

递归最小二乘法、增广最小二乘法、带遗忘因子的递归增广最小二乘法

一、递归最小二乘法 递推最小二乘法&#xff1a;当矩阵维数增加时&#xff0c;矩阵求逆运算计算量过大&#xff0c;而且不适合在线辨识。为了减少计算量&#xff0c;并且可以实时地辨识出动态系统的特性&#xff0c;可以将最小二乘法转换成参数递推的估计。 取前N组数据&…