我正在尝试制作时间表文档,并希望对其进行格式化
-----------------------------------------
| Date | Time In | Time Out | Hours |
-----------------------------------------
| 1/5/2014 | | | 0 |
-----------------------------------------
| 1/4/2014 | 09:00 | 12:00 | 3 |
-----------------------------------------
| 1/3/2014 | 09:30 | 14:00 | 4.5 |
-----------------------------------------
| 1/2/2014 | 08:00 | 17:00 | 9 |
-----------------------------------------
| 1/1/2014 | 12:00 | 13:00 | 1 |
-----------------------------------------
最近的日期在顶部。我希望当我在 1/5/2014 行中输入时间时,新行会自动将 1/5/2014 替换为
-----------------------------------------
| Date | Time In | Time Out | Hours |
-----------------------------------------
| 1/6/2014 | | | 0 |
-----------------------------------------
| 1/5/2014 | 09:00 | 13:00 | 4 |
-----------------------------------------
| 1/4/2014 | 09:00 | 12:00 | 3 |
-----------------------------------------
| 1/3/2014 | 09:30 | 14:00 | 4.5 |
-----------------------------------------
| 1/2/2014 | 08:00 | 17:00 | 9 |
-----------------------------------------
| 1/1/2014 | 12:00 | 13:00 | 1 |
-----------------------------------------
这在 Excel 中可以实现吗?
答案1
事件Worksheet_Change
宏非常适合这种情况。右键单击工作表的名称选项卡,然后选择查看代码。当 VBE 打开时,将以下内容粘贴到右侧窗格中,标题为Book1 - Sheet1 (代码)。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Not Intersect(Target, Range("B2:C2")) Is Nothing Then
If Application.Count(Range("B2:C2")) = 2 Then
On Error GoTo Fìn
Application.EnableEvents = False
Range("A2:D2").Insert Shift:=xlDown, CopyOrigin:=xlFormatFromRightOrBelow
Range("A2") = Range("A3").Value + 1
Range("D2").Formula = Replace(Range("D3").Formula, 3, 2)
Range("B2").Activate
End If
End If
Fìn:
Application.EnableEvents = True
End Sub
点击Alt+Q返回工作表。一旦 B2 和 C2 都输入了时间值,就会添加一个包含相应公式的新行。
=(C2-B2)*24
我使用了D 列中的公式。