ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
12
返回列表 发新帖
楼主: dajiaolaotai

[求助] 同时对多列进行筛选

[复制链接]

TA的精华主题

TA的得分主题

发表于 2014-5-4 10:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
dajiaolaotai 发表于 2014-5-4 10:27
Sub aa()
With Sheets("sheet1")
For i = 1 To .[a65536].End(3).Row

单引号为的是使其变成文本格式,不用那么纠结这个问题,直接用#时间#就可以了,你这样改出现这个问题
单元格显示是23:30:41而你的查询显示'23:30:41,显然不可能查到!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-4 10:59 | 显示全部楼层
office8424 发表于 2014-5-4 10:33
单引号为的是使其变成文本格式,不用那么纠结这个问题,直接用#时间#就可以了,你这样改出现这个问题
单元格 ...


Sub aa()
With Sheets("sheet1")
For i = 1 To .[a65536].End(3).Row
If (.Cells(i, 4).Value > #11:10:00 PM# And .Cells(i, 4).Value <= #11:59:59 PM#) Or (.Cells(i, 5).Value > #11:10:00 PM# And .Cells(i, 5).Value <= #11:59:59 PM#) Then
If (.Cells(i, 5).Value > #11:10:00 PM# And .Cells(i, 5).Value <= #11:59:59 PM#) And .Cells(i, 4).Value < #10:00:00 AM# Then
Cells([a65536].End(3).Row + 1, 1).Resize(1, 10) = .Range("A" & i & ":J" & i).Value
End If
End If
Next
End With
End Sub
用了这个代码,确实可以查出来,但是结果是
浮选车间        范建东        2014/4/15        8:24:51        23:20:35
尾煤        韩秀芝        2014/4/15        8:36:26        23:13:00
尾煤        陈淑龙        2014/4/15        8:14:55        23:13:32
尾煤        薛国平        2014/4/15        8:41:27        23:19:02
尾煤        任勇杰        2014/4/15        8:38:45        23:21:35
重介        卫胜兵        2014/4/15        8:34:41        23:10:20
重介        张贵山        2014/4/15        8:57:03        23:13:04
重介        陈记元        2014/4/15        8:30:59        23:17:41
重介        田新丽        2014/4/15        8:39:04        23:17:45
浮选        胡瑞婧        2014/4/15        8:45:10        23:20:26
浮选        王双双        2014/4/15        8:45:20        23:20:30
浮选        梁勇丽        2014/4/15        8:51:29        23:20:20
浮选        张晋明        2014/4/15        8:46:03        23:12:13
浮选        樊智会        2014/4/15        8:45:44        23:26:47
干燥        张志愿        2014/4/15        8:30:41        23:12:17
干燥        张金华        2014/4/15        8:30:49        23:12:32
只出了E列的查询结果,D列没有出?

TA的精华主题

TA的得分主题

发表于 2014-5-4 12:25 | 显示全部楼层
本帖最后由 office8424 于 2014-5-4 12:33 编辑
dajiaolaotai 发表于 2014-5-4 10:59
Sub aa()
With Sheets("sheet1")
For i = 1 To .[a65536].End(3).Row


我明白的你意思了
能否详细点,上班下班的打卡时间段写下!!!
时间段怎么打卡算一个班次
第一次打卡几点到几点
第二次打卡几点到几点
第三次打卡几点到几点
第四次打卡几点到几点
我以前做过考勤了解点这个

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-4 15:24 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
office8424 发表于 2014-5-4 12:25
我明白的你意思了
能否详细点,上班下班的打卡时间段写下!!!
时间段怎么打卡算一个班次

前辈,这个是之前我已经做好交了的,只统计了D列即当天第一次考勤的人,使用中发现有人晚上23点30上班考勤是当天第一次打卡,信息在D列,有人是第二次打卡,信息在E列。
每天上班打卡时间是分三次,
07:30:00到08:00:00上班打卡的,16:00:00到16:30:00下班打卡
15:30:00到16:00:00上班打卡的,24:00:00到00:30:00下班打卡
23:30:00到24:00:00上班打卡的,08:00:00到08:30:00下班打卡,
现在就是要把夜班的单独做一次筛选,把详单拉出来,我原来是把信息复制到“结果”这张工作表中了,前辈辛苦辛苦

考勤出表.rar

38.2 KB, 下载次数: 33

TA的精华主题

TA的得分主题

发表于 2014-5-4 16:18 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
本帖最后由 office8424 于 2014-5-4 16:22 编辑
dajiaolaotai 发表于 2014-5-4 15:24
前辈,这个是之前我已经做好交了的,只统计了D列即当天第一次考勤的人,使用中发现有人晚上23点30上班考勤 ...

我拿我车间的考勤系统打个比方,不知道你这里有没有排班的如果没有最好进行排班!我是否只要筛选出符合三个班次上班下班的打卡时间就可以了?

TA的精华主题

TA的得分主题

发表于 2014-5-4 17:30 | 显示全部楼层
所有打卡记录都出来,用这个可以参照!!!
Function aa(aa1)
If aa1 >= #7:30:00 AM# And aa1 <= #8:00:00 AM# Then
ab = "A"
If aa1 >= #3:30:00 PM# And aa1 <= #4:00:00 PM# Then
ab = "B"
If aa1 >= #11:30:00 PM# And aa1 <= #12:00:00 PM# Then
ab = "C"
Else
ab = 0
End If
End If
End If
End Function
Function bb(bb1)
If bb1 >= #4:00:00 PM# And bb1 <= #4:30:00 PM# Then
ab = "a"
If bb1 >= #12:00:00 PM# And bb1 <= #12:30:00 PM# Then
ab = "b"
If bb1 >= #8:00:00 AM# And bb1 <= #8:30:00 AM# Then
ab = "c"
Else
ab = 0
End If
End If
End If
End Function
Sub aaaa()
On Error Resume Next
For i = 1 To [a65536].End(3).Row
For j = 4 To Cells(i, 4).End(2).Column
aaa = aaa & " " & aa(Cells(i, j).Value)
bbb = bbb & " " & bb(Cells(i, j).Value)
Next j
If (InStr(1, aaa, "A") Or InStr(1, aaa, "B") Or InStr(1, aaa, "C")) And (InStr(1, bbb, "a") Or InStr(1, bbb, "b") Or InStr(1, bbb, "c")) Then
Cells(i, 14).Value = "打卡正常"
Else
Cells(i, 14).Value = "打卡不正常"
aaa = ""
bbb = ""
End If
Next i
End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-5-4 17:36 | 显示全部楼层
office8424 发表于 2014-5-4 17:30
所有打卡记录都出来,用这个可以参照!!!
Function aa(aa1)
If aa1 >= #7:30:00 AM# And aa1 = #3:30:0 ...

哇,好崇拜,我先试试,研究研究

TA的精华主题

TA的得分主题

发表于 2019-1-20 18:05 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
不错就是没看懂,大声都部上附件的?
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-27 11:36 , Processed in 0.038354 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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