excel - 具有两个值的单个单元格的小时计算器
问题描述
我正在创建一个新的轮班表。(我是一家酒吧的团队负责人,但我通常处理技术问题)。
我想将小时数计算为总计。困难的一点是用户在一个单元格中输入小时如下。
1100 - 1600
我需要让 Excel 适合用户。
我想要的是从单元格中获取信息,将其分成两部分,然后计算小时数,将它们添加到运行总数中,然后在每个人的一周结束时将其放入一个单元格中。
我有 Python 的基本知识。我从 Stack Overflow 打开了大约 3000 个标签,但找不到任何对我有用的东西。
解决方案
应先进行将文本数据更改为时间数据的过程。然后你只需要计算两者之间的差异并将它们相加即可。您可以使用拆分功能和时间序列功能。
Sub test()
Dim rngDB As Range
Dim vDB As Variant, vR() As Variant
Dim vSplit As Variant
Dim Ws As Worksheet
Dim i As Long, r As Long
Dim s1 As String, s2 As String
Set Ws = ActiveSheet 'set worksheet, set Ws = Sheets(1)
With Ws
Set rngDB = .Range("a1", .Range("a" & Rows.Count).End(xlUp)) ' set data range
End With
vDB = rngDB 'get value from range to 2D array
r = UBound(vDB, 1)
ReDim vR(1 To r, 1 To 3) 'make new 2D array
For i = 1 To r
vSplit = Split(vDB(i, 1), "-")
s1 = Trim(vSplit(0)) '1100
s2 = Trim(vSplit(1)) '1600
vR(i, 1) = TimeSerial(Left(s1, 2), Right(s1, 2), 0) '11:00
vR(i, 2) = TimeSerial(Left(s2, 2), Right(s2, 2), 0) '16:00
vR(i, 3) = vR(i, 2) - vR(i, 1) '16:00 - 11:00
Next i
'Wirte Result array vR to Sheet cell "c1"
With Ws
With .Range("c1").Resize(r, 3)
.Value = vR
.NumberFormatLocal = "hh:mm"
End With
End With
End Sub
工作表图像
推荐阅读
- tfs - TFS 2018 - 无法使用搜索功能
- python - 为 TensorFlow 安装 Bazel 的问题
- twilio - 我可以连接我的 IBM Cloudant 数据库作为我的 Twilio IBM STT 附加服务的回调 URL 吗?
- c - 了解链表哈希表实现
- google-cloud-platform - 如何使用 Google Cloud Natural Language 分析重音字符
- excel - VBA 将工作表另存为 CSV 会破坏现有模块
- python - 使用循环和拆分函数形成字符串
- node.js - 如何修复:错误:如果 .NET 源代码作为 JavaScript 函数提供,函数体必须是 /* ... */ 注释
- javascript - 切换按钮处于关闭状态,尽管它的值为 true
- ios - 在 iOS 中完成后,Firebase 不会关闭 Microsoft 签名页面