我试图在谷歌和StackOverflow中查看arround,但我似乎无法将代码粘合在一起以达到我的目的。 我正在使用2列。第一个输入日期(dd-mm-yyyy)第二个输入时间(00:00:00)。我已经找到了如何每15分钟增加一次的时间,但现在我遇到的问题是我的约会时间可能会在00:00:00时改变。因此,为此,代码需要查看B列。 所以在我的时间里,我有这个:
Sub AutomateTimeSeries
range("B5").Select
ActiveCell.FormulaR1C1 = "=R[-1]C + ""00:15"""
Selection.AutoFill
Destination:=range("B5:B2980"), Type:=xlFillDefault -
range("A4").Select
End Sub
所以现在我需要在B列中查看“00:00:00”。如果我在细胞中找到它,例如B98我需要跳上A98并将日期更改为之前的+1。为此,我需要在前面的单元格中有一个日期。用户将在第一个呈现的单元格中填写日期。从那里开始宏将填充A列中具有此日期的所有单元格。我已经使用了宏的这一部分:
Selection.AutoFill Destination:=range("A4:A2980"), Type:=xlFillCopy
这有效但我需要更改包含00:00:00的B-cell旁边的特定A-cell中的单元格。我怎么能这样做?或者是否有更好的方法来使用日期时间增加。
从我尝试使用的找到的单元格左转:
Sub IncreaseDate()
Dim a_lastrow As Integer 'last row of column A
Dim b_lastrow As Integer 'last row of column B
Dim ws As Worksheet
Set ws = Workbook.Worksheets("Sheet1")
With ws
a_lastrow = .Range("A3000").End(xlUp).Row
b_lastrow = .Range("B3000").End(xlUp).Row
For r = 1 To a_lastrow
If Application.WorksheetFunction.CountIf(.Range("B1:B" & b_lastrow), .Range("B" & r).Value) = "00:00:00" Then
.Range("A" & r).Value = "previous date + 1 day" '<==what's the code for this??????
End If
Next r
End With
MsgBox ("done")
If (Target.Column = 2) Then 'check if in 2nd column
If Target.Offset(, -1).Value = "" Then 'Check if there is already a value in Column A
Target.Offset(, -1).Value = Date ' No value, lets stick in the current system date
End If
End If
SAS DateLiteral
DateAdd
End Sub
所以看起来应该是这样的:
1/01/2017 23:15:00
1/01/2017 23:30:00
1/01/2017 23:45:00
2/01/2017 0:00:00
2/01/2017 0:15:00
2/01/2017 0:30:00
2/01/2017 0:45:00....
有人有想法吗?
答案 0 :(得分:0)
如评论中所述 - 这可以通过公式和数字格式来完成(下面的代码只是添加了公式和数字格式)。
使用您的第一段代码作为模板,这将在B5:C2980之间自动填充 只需在单元格B4中添加第一个所需日期,B5中的公式将在15分钟后计算。
另请注意 - 没有选择单元格。您只需使用该单元格 - 无需先选择它。
Sub AutomateTimeSeries()
With ThisWorkbook.Worksheets("Sheet1")
With .Range("B5")
.FormulaR1C1 = "=SUM(R[-1]C,""00:15"")"
.NumberFormat = "dd/mm/yyyy"
End With
With .Range("C5")
.FormulaR1C1 = "=RC[-1]"
.NumberFormat = "hh:mm:ss"
End With
.Range("B5:C5").AutoFill Destination:=.Range("B5:C2980")
End With
End Sub