签到时间=MIN(IF($A$2:$A$25&$B$2:$B$25=G2&H2,$C$2:$C$25))
签退时间=MAX(IF($A$2:$A$25&$B$2:$B$25=G2&H2,$C$2:$C$25))
数组公式。
可以用模糊查找函数lookup(),先写出要查的月份最后一天,再用lookup()找到最接近的日期。
=LOOKUP(DATE(D3,E3+1,0),A:A)
需要根据a列划分区域,即你说的4000个区域,在每个区域内,将b列各单元格内取“~”前字符进行比较,取最小值,再将b列各单元格内取“~”后字符进行比较,取最大值,公式想不到可实现方式,可用vba代码
打开你需要处理的表格,将下述代码复制进thisworkbook中并运行
Sub test()
Dim a() As Integer
ReDim a(5000) '定义数组
With ThisWorkbookActiveSheet
For i = 1 To UsedRangeRowsCount '划分区域
If Cells(i + 1, 1) <> Cells(i, 1) Then
n = n + 1
a(n) = i
End If
Next
ReDim Preserve a(n) '以实际区域数定义数组范围
For i = 1 To n '循环各区域
Cells(i, 3) = Cells(a(i), 1) '获取不同区域A列内容
Min = Left(Cells(a(i - 1) + 1, 2), 8) '设置初始最小值
Max = Right(Cells(a(i - 1) + 1, 2), 8) '设置初始最大值
For m = a(i - 1) + 1 To a(i) '循环区域内,进行最大最小值比较并重新赋值
If Min - Left(Cells(m, 2), 8) > 0 Then
Min = Left(Cells(m, 2), 8)
End If
If Max - Right(Cells(m, 2), 8) < 0 Then
Max = Right(Cells(m, 2), 8)
End If
Next
Cells(i, 4) = Min & "-" & Max '输出区域内最小到最大值,这边“-”可改成“~”
Next
End With
End Sub
以下是运行结果,结果输出在C、D列
G2输入:
=LOOKUP(1,0/(MAX(($B$2:$B$23=F2)$A$2:$A$23)=$A$2:$A$23),$C$2:$C$23),下拉填充。
如果日期是按升序方式输入的,或者排过序的,可用简为:
=LOOKUP(1,0/($B$2:$B$23=F2),$C$2:$C$23)
第一种使用IN,在IN里面使用子查询查出最大日期,然后再把表的日期和查出的最大日期做等于。
SELECT FROM TABLE WHERE TRUNC(DATE) = (select max(trunc(date)) from table)
第二种可以使用NOT EXISTS,选择最大日期,那么就是不存在比自身日期大的数据
SELECT FROM TABLE T
WHERE NOT EXISTS (SELECT 1 FROM TABLE T1 WHERE TRUNC(T1DATE) > TRUNC(TDATE))
软件版本:Office2007
方法如下:
1A、B两列日期比较取最大的日期,与C列日期的相差天数大于2的数量
2输入公式如下:
=SUMPRODUCT((ABS(IF(A1:A4>B1:B4,A1:A4,B1:B4)-C1:C4)>2)1)
3Ctrl+Shift+Enter三键结束数组公式,得到结果:
以上就是关于Excel 如何取出某个日期内时间的最小值和最大值全部的内容,包括:Excel 如何取出某个日期内时间的最小值和最大值、EXCEL表提取有日期数据的最大的一天、Excel里有什么公式可以在每部分日期区间里取出最小日期到最大日期等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)