Vba 返回excel中由一致分隔符分隔的一组值的最大值

Vba 返回excel中由一致分隔符分隔的一组值的最大值,vba,excel,Vba,Excel,输入示例: Length 24:00 24:00 00:36 00:36 24:36 Length 08:00 08:00 08:00 Length 08:00 08:00 01:16 01:16 09:16 Length 08:00 08:00 00:42 00:42 08:42 我有一个列表,上面列出了这些时间配对的名字,需要查看总数,理想情况下,我可以重新构造系统的模板,将这些数据吐出,但我无法访问系统的该部分,因此我需要找到一种方法来解析出最大的数字。我只取组中的最后一个值,但我不知道

输入示例:

Length
24:00
24:00
00:36
00:36
24:36
Length
08:00
08:00
08:00
Length
08:00
08:00
01:16
01:16
09:16
Length
08:00
08:00
00:42
00:42
08:42
我有一个列表,上面列出了这些时间配对的名字,需要查看总数,理想情况下,我可以重新构造系统的模板,将这些数据吐出,但我无法访问系统的该部分,因此我需要找到一种方法来解析出最大的数字。我只取组中的最后一个值,但我不知道如何从集合中动态定义数组,因为每个集合的长度都不同

所需的输出将是一个数字列表,每个部分一个,不包括分隔符:

24:36
08:00
09:16
08:42

想法?

如果我理解您的问题,您应该能够设置一个空字符串和一个max变量,然后在列中循环,检查值是否为“length”。如果是长度,则将最大值添加到字符串中,并将最大值重置为零

比如:

dim max as integer 
dim i as integer
dim col as integer
dim ret as String
max = 0
col = 1 'Assume A for now
i = 1
ret = ""
while not sheets("sheet1").cells(i,col).value = ""
   if sheets("sheet1").cells(i,col).value > max 'Check for max
       max = sheets("sheet1").cells(i,col).value
   end if
   if sheets("sheet1").cells(i,col).value = "length" 'Check for delimeter
      ret = ret + max + vbCrLf 'convert to string, add a newline.
      max = 0
   end if
   i = i + 1
wend
return ret
这是一个粗略的、未经测试的过程,但应该能让你大致了解一个策略


当然,这对23:40这样的值不起作用,您必须创建一个自定义类并重写一个ismorer()函数,或者将其拆分为两个整数,一个在前面:一个在后面。

提供您迄今为止尝试过的任何代码。您还没有清楚地解释问题所在。这是在VBA还是excel中完成的?如果VBA请添加标签,无论哪种情况,请提供相同的布局。我的问题是,坦率地说,我不知道从哪里开始,我正在研究如何前进,但我想我会在这里提出任何建议。到目前为止,我编写的代码主要是一些特定的选择,以使列表足够干净,从而尝试我所说的内容。嘿,在您提出值类型问题之前,我就想到了这个问题,将整个列转换为十进制,并省略空单元格的长度,因为分隔符是我的解决方案。哦。错过了使用浮动并将
更改为
+1的明显解决方案。