gpt4 book ai didi

vba - 仅使用 VBA 将存储为文本的小时和分钟转换为分钟

转载 作者:行者123 更新时间:2023-12-04 20:16:01 27 4
gpt4 key购买 nike

我有一个包含不同时间量的列,即 1 小时、2 小时 30 分钟、30 分钟等。我需要将这些转换为分钟。我的想法是检查字符数,然后进行删除。

例如 1hr 是 3 个字符,所以如果检查发现 3 个字符删除最后一个字符,* 60,这会给我转换为分钟。

我已经研究过这个问题,这是我的代码。目前我只是想让它根据里面的字符数量来改变单元格的颜色。这看起来对我来说是正确的,但显然缺少一些东西。

提前致谢!

Sub lenCheck()

Dim rng As Range
Dim x As Integer
Dim sht As Worksheet

Set sht = Worksheets("Sheet2")

x = sht.Cells(Rows.Count, "G").End(xlUp).Row
For Each rng In sht.Range("G200:G" & x).Cells

If Len(rng.Value) = 3 Then
rng.EntireRow.Cells(1).Interior.Color = vbYellow

ElseIf Len(rng.Value) = 4 Then
rng.EntireRow.Cells(1).Interior.Color = vbGreen

ElseIf Len(rng.Value) = 5 Then
rng.EntireRow.Cells(1).Interior.Color = vbRed

ElseIf Len(rng.Value) = 6 Then
rng.EntireRow.Cells(1).Interior.Color = vbBlue

End If


End Sub

最佳答案

如果您想将这些字符串转换为分钟,并且它们将采用如上所示的各种格式,我建议使用正则表达式来提取组件,然后进行适当的加法/乘法运算。

以下 VBA 宏查找标记,以查找以下任何内容:hr hour min(任何复数 s 都无关); (可以添加其他标签),然后返回分钟数:它搜索列 A 但很容易更改

如果您的模式与您列出的不同,它们也可以以最小的努力(和最少的代码更改)合并到正则表达式中

要将此算法用作宏,它将转换包含小时、分钟或两者的列 A 的内容,请尝试以下操作:(请注意,“工作”是在一个数组中完成的,如果您有一个大数据集,将比通过多次调用范围来回返回工作表要快)

=====================================

Option Explicit
Sub ConvertToMinutes()
Dim RE As Object, MC As Object
Dim MN As Long
Dim S As String
Dim vSrc As Variant, rSrc As Range
Dim I As Long

'Many ways to set the source data depending on your real setup
Set rSrc = Range("a1", Cells(Rows.Count, "A").End(xlUp))
vSrc = rSrc

Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = "(?:(\d+(?:\.\d+)?(?=\s*(?:hr|hour))))\D*(\d+(?=\s*min))?|(\d+(?=\s*min))"
.Global = True
.ignorecase = True

For I = 1 To UBound(vSrc, 1)
S = vSrc(I, 1)
If .test(S) = True Then
Set MC = .Execute(S)
With MC(0)
MN = .submatches(0) * 60 + .submatches(1) + .submatches(2)
End With
vSrc(I, 1) = MN
End If
Next I
End With
rSrc = vSrc
End Sub

====================================

顺便说一句,这是针对您在此处发布的所有不同格式运行上述宏的结果的屏幕截图。它似乎确实有效,但也许我在你的真实数据中遗漏了一些东西。

enter image description here

关于vba - 仅使用 VBA 将存储为文本的小时和分钟转换为分钟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25623482/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com