推广 热搜: 采购方式  滤芯  甲带  气动隔膜泵  减速机  减速机型号  带式称重给煤机  履带  无级变速机  链式给煤机 

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

   日期:2023-08-28 20:26:56     来源:网络整理    作者:本站编辑    评论:0    
今天我们来看一个练习题,如图,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,或者扫描以下二维码,备注进群

 
打赏
 
更多>同类资讯
0相关评论

推荐图文
推荐资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  使用协议  |  版权隐私  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报  |  皖ICP备20008326号-18
Powered By DESTOON