我每天都会收到许多轮班时间的列表,通常格式如下:
0800-2000
0800-2000
0801-2000
0930-2130
0930-2200
1000-2200以此类推。(每个在不同的行上,一次数百个)
我正在尝试编写一个宏/VBA,它通过在每个不同的开始时间上插入一个空行来对每个开始时间进行分组(忽略那些仅相隔1分钟的时间,这些被认为是相同的)。
我想到的概念是截断单元格,只接受前4个数字,使用左(A3,4)+0将其转换回整数。Dim 2变量为整数,Value1来自第一行,Value2来自下一行。然后运行IF语句,如果Value2 -Value1>2,则插入一个空行(EntireRow.Insert Shift = xlDown我认为是代码,如果错误,请更正)。
然后,我只需要对整个列重复操作,直到没有更多的轮班开始时间来分隔。我在想这样的事情,要么是'do,直到ISNUMBER = FALSE‘,要么我可以只运行一个预定义行数的宏,我知道行数总是足够多的。
发布于 2018-02-04 21:58:41
这个简短的宏将执行您想要的操作:
Sub insert()
Dim n As Long, i As Long, t1 As String, t2 As String
n = Cells(Rows.Count, 1).End(xlUp).Row
For i = n To 2 Step -1
t1 = Split(Cells(i, 1), "-")(0)
t2 = Split(Cells(i - 1, 1), "-")(0)
If t1 <> t2 Then Cells(i, 1).EntireRow.insert
Next i
End Sub结果是:

https://stackoverflow.com/questions/48608733
复制相似问题