/ / Tilføj automatisk en måned-sommer række i slutningen af ​​hver måned? - Excel

Tilføj automatisk en måned-sommer række i slutningen af ​​hver måned? - Excel

Jeg bruger et Excel-ark til at spore mit arbejdetimer. Hver række repræsenterer en arbejdsdag og har "dato", "time in", "time out", "total arbejdstid" og "daglig løn". Jeg synes, at arket automatisk skaber en måneders sommerlinje hver gang jeg skriver en post i den næste måned (dvs. hvis en række med datoen 13/3/16 efterfølges af en række med datoen 2/4/16, den anden række vil blive skubbet ned, og en række med den sommerlige (dvs.: månedlige måneders samlede månedsløn) vil blive oprettet imellem. Det skal se sådan ud: Indtast billedbeskrivelse her

Er det muligt? Hvis ja, hvordan gør jeg det? Tak for dit input!

svar:

0 for svar № 1

Du skal placere denne kode i arkkode modul. Det fungerede for mig på data organiseret som din.

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ThisSheet As Worksheet
Dim NewRow As Long
Dim OldTotalRange As Range
Dim OldTotalRow As Long

Set ThisSheet = ActiveSheet
"If not single cell is changed, exit sub
If Target.Cells.Count = 1 Then
"Disable events for prevent recursion
Application.EnableEvents = False
If Target.Column = 1 And Target.Row <> 1 And Target.value <> "" Then
If IsDate(Target.value) And IsDate(Target.Offset(-1, 0).value) Then
If Month(Target.value) <> Month(Target.Offset(-1, 0).value) Then
With ThisSheet
NewRow = Target.Row
On Error Resume Next
Set OldTotalRange = .Columns(1).Find(What:="Total", After:=Target, SearchDirection:=xlPrevious)
OldTotalRow = OldTotalRange.Row
"It"s for first "Total" when there isn"t "totals" before.
If OldTotalRow = 0 Then
OldTotalRow = 1
End If
.Rows(NewRow).Insert
.Cells(NewRow, 1) = "Total"
.Cells(NewRow, 4).FormulaR1C1 = "=SUM(R[-" & NewRow - OldTotalRow - 1 & "]C:R[-1]C)"
.Cells(NewRow, 5).FormulaR1C1 = "=SUM(R[-" & NewRow - OldTotalRow - 1 & "]C:R[-1]C)"
"It"s formatting, you can delete it or change
.Range(.Cells(NewRow, 1), .Cells(NewRow, 5)).Interior.Color = RGB(196, 215, 155)
.Range(.Cells(NewRow, 1), .Cells(NewRow, 5)).Font.Bold = True
End With
End If
End If
End If
Else
Exit Sub
End If
"Enable events
Application.EnableEvents = True
End Sub

Beslægtede spørgsmål


Kommentarer (0)

Tilføj en kommentar