随时间计算

时间:2016-02-24 12:44:15

标签: excel vba excel-vba

由于项目原因我需要记录工作时间,因此我正在尝试配置宏。由于我是VBA的新手,我仍然遇到代码公式和时间格式方面的困难。

Here is how the sheet looks like

按" ARRIVAL"或" DEPARTURE"它只是{ "query": { "match_all": {} }, "sort": { "m_p.price": { "nested_path": "m_p", "order": "asc", "nested_filter": { "or": [ { "and": [ { "term": { "m_p.product_name": "p1" }}, { "term": { "m_p.m_id": "m2" }} ] }, { "and": [ { "term": { "m_p.product_name": "p2" }}, { "term": { "m_p.m_id": "m4" }} ] } ] } } } }

(这是单独的单元格,因为我希望能够手动覆盖)

按" LOG"这是它背后的代码:

Range("C7/C9") = Now

我现在想要的是在G栏中,我在项目上工作的时间少于03:30h,在H栏中,我在项目上工作的时间超过了03:30h。

理想情况下,这将在#Minutes中,甚至在1列中加上(+/-),这样我就可以轻松计算出总数。

感谢您对此进行调查!

1 个答案:

答案 0 :(得分:0)

我已经更新了您的代码并包含了一些说明来解释原因。我添加了两个公式,将您的总时间转换为分钟,并计算< &安培; >要求。希望这会有所帮助。

Sub LogTime()

Range("12:12").Insert
Range("C7").Copy
'Pastes just the format from C7
Range("C12:I12").PasteSpecial (xlPasteFormats)
'Set as Today's Date
Range("C12").Value = Date
'Arrival
Range("D12").Value = Range("C7").Value
Range("D12").NumberFormat = "[$-F400]h:mm:ss AM/PM"
'Departure
Range("E12").Value = Range("C9").Value
Range("E12").NumberFormat = "[$-F400]h:mm:ss AM/PM"
'Calculate Total with Formula
Range("F12").Value = "=" & Range("E12").Address(0, 0) & "-" & Range("D12").Address(0, 0)
Range("C12:I12").Font.Size = 12
'Convert Time To Minues: (HOUR(F12)*60)+MINUTE(F12)+ROUND((SECOND(F12)/60),0)
'< Formula: In Minutes; if Total Time is => 3:30 return 210 and Total Time if < 3:30 return Total Time
Range("G12").Value = "=IF(((HOUR(F12)*60)+MINUTE(F12)+ROUND((SECOND(F12)/60),0))>=210,210,(HOUR(F12)*60)+MINUTE(F12)+ROUND((SECOND(F12)/60),0))"
Range("G12").NumberFormat = "General"
'< Formula: In Minutes; if Total Time is <= 3:30 return 0 and if Total Time > 3:30 return total time - 3:30
Range("H12").Value = "=IF(((HOUR(F12)*60)+MINUTE(F12)+ROUND((SECOND(F12)/60),0))<=210,0,((HOUR(F12)*60)+MINUTE(F12)+ROUND((SECOND(F12)/60),0)-210))"
Range("H12").NumberFormat = "General"

End Sub