练习-求设备开启连续时间段

文摘   教育   2024-09-08 19:50   广东  
今天我们来看一个练习题,如图,A列若干设备,现需提取他们在一天的连续开启时间段,参考答案如单元格A15区域所示

你有什么好的思路吗?VBA的学习在于多思考,多动手,建议你也敲敲代码,动手写写。
下面我们来看看代码:

Sub test()Dim arr, brrarr = Range("A1").CurrentRegion.ValueReDim brr(1 To 9)For i = 2 To UBound(arr)    For j = 2 To UBound(arr, 2)            If j = 2 And arr(i, j) <> "" Then           '开始时间判断                key1 = 2            ElseIf j <> 2 And arr(i, j) <> "" And arr(i, j - 1) = "" Then                key1 = j            End If                        If j = UBound(arr, 2) And arr(i, j) <> "" Then '结束时间判断                key2 = j            ElseIf j = UBound(arr, 2) And arr(i, j) = "" Then                Exit For            ElseIf arr(i, j + 1) = "" And arr(i, j) <> "" Then                key2 = j            End If                        If key1 <> 0 And key2 <> 0 Then    '结果输出                If brr(i - 1) = "" Then                    brr(i - 1) = Split(arr(1, key1), "-")(0) & "-" & Split(arr(1, key2), "-")(1)                Else                    brr(i - 1) = brr(i - 1) & "," & Split(arr(1, key1), "-")(0) & "-" & Split(arr(1, key2), "-")(1)                End If                key1 = 0: key2 = 0            End If    Next jNext iRange("H15").Resize(UBound(brr), 1) = Application.Transpose(brr)End Sub
第7-11行:判断设备开启开始时间
第13-19行:判断设备开启的结束时间
第21-28行:如果key1和key2的值都不为零,则代表捕获到了一段连续时间,进行时间链接输出后,重新将key1和key2赋值为0,寻找下一段连续时间
下面来看看效果

好了,本期教程就到这里啦,走过路过的点个关注分享一下吧,谢谢啦


求关注-求星标-求点赞-求看-求分享
最近创建了一个VBA学习交流群,如有需要进群可以添加微信 jaresfzz

Excel应用教程
主要提供Excel vba,函数,图表,数据透视表,pq,Js等教程
 最新文章