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

时间:2015-07-23 19:09:52

标签: excel vba excel-vba

示例输入:

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

思想?

1 个答案:

答案 0 :(得分:0)

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

类似的东西:

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这样的值不起作用,你必须要么创建一个自定义类并覆盖一个isGreater()函数,要么将它分成两个整数,一个在之前:和一个后。