【发布时间】:2021-05-06 14:07:01
【问题描述】:
单元格中有日期和进出工厂的时间。我想计算一下每个人来工厂的那天,他们呆了多少小时。
我编写了一个宏并将每个人定义为 sicil_no,因为它是唯一的数字。由于在同一日期有多个进入和退出,我需要计算每个日期和 sicil_no(人)首先计算进入和退出的数量,然后减去然后将它们相加以找到在工厂花费的总时间。
我的原始数据示例。
| GECIS TARIHI | SICIL NUMARASI | SOYADI | ADI | GEÇİŞ YÖNÜ |
|---|---|---|---|---|
| 04 03 2021 07:06:25 | 02491 | JOHN | CAN | Entry |
| 04 03 2021 09:28:01 | 02312 | PLAT | JULY | Entry |
| 04 03 2021 15:50:22 | 02312 | PLAT | JULY | Exit |
| 04 03 2021 17:08:48 | 02491 | JOHN | CAN | Exit |
| 08 03 2021 07:06:45 | 02312 | PLAT | JULY | Entry |
| 08 03 2021 07:53:37 | 02260 | BABER | YOKY | Entry |
| 08 03 2021 13:05:38 | 02312 | PLAT | JULY | Exit |
| 08 03 2021 13:18:30 | 02312 | PLAT | JULY | Entry |
| 08 03 2021 17:23:01 | 02312 | PLAT | JULY | Exit |
| 08 03 2021 19:37:36 | 02260 | BABER | YOKY | Exit |
Sub macro()
Dim sicil_no As String
Dim i As Integer
Dim end_row As Long
Dim dates As Range
Dim gecis_yonu As String
Dim entry As String
Dim Exits As String
end_row = Cells(Rows.Count, 3).End(xlUp).Row
For i = 3 To end_row
sicil_no = Cells(i, 3).Value
dates = Cells(i, 1).Value
If Range("J", i).Value = "Exit" Then
Range("J", i).Value = exist
End If
If Range("J", i).Value = "Entry" Then
Range("J", i).Value = entry
End If
Next
For Each dates In Range("A", end_row)
Range("M", i).Value = exist - entry
Next
End Sub
【问题讨论】:
-
请不要发布文件链接。而是将理解您的问题所需的所有内容都包含在问题本身中。如果你想展示一些东西,你可以添加截图。见How to Ask。
-
似乎一个 excel 公式可以轻松完成。
=24*(FirstOut-FirstIn+IF(SecondOut<>"",SecondOut-SecondIn,0)+IF(ThirdOut<>"",ThirdOut-ThirdIn,0)+IF(FourthOut<>"",FourthOut-FourthIn,0))解释:如果一个人没有休息,那么FirstOut就是他们在一天结束时离开。否则,这是他们第一次休息的开始。最后一个输出是他们回家,无论是第一个还是第四个输出。 -
@peh 我编辑了。我放了一个图片描述
-
@Toddleson 我应该如何定义第二个和其他变量?我应该自动填充下一个 6600 行吗?我在单元格上写了你的公式,但它给出了“名称”错误