Excel-VBA可以找到并返回最快的比赛时间

时间:2017-11-06 08:47:28

标签: excel-vba excel-formula excel-2016 vba excel

目的:询问比赛数据并为每个班级返回最快的工作时间。

以前的研究:已经搜索了多个论坛,但未找到任何相关内容。

说明:我正在尝试创建一个可以读取数据集的宏,然后查看类别列,找到该类别的最快时间,然后将其返回到指定的单元格。

示例(参考图片):

这是手动完成的方式

找到最快的4x-表;

  • 搜索C列4x-(忽略前面的文字(例如IM2。,W.J18A等))
  • 搜索第一列最快的时间
  • 返回单元格P8的最快时间

非常感谢任何帮助!

https://i.stack.imgur.com/0fZrE.png]

2 个答案:

答案 0 :(得分:0)

您不需要VBA来执行此操作。

但是你还需要一个列(可以隐藏)。例如,让N列成为具有其他信息的列。它将包含来自C列的3个最后一个字母(因为我们最后对4x-感兴趣)。因此,在N列中,您需要粘贴以下公式:=right(C3, 3)(它将用于N3单元格,但您明白了这一点。有了这个,在P8中你需要输入公式:

=MAX(IF(N:N=O8, I:I))

这意味着,只有那些匹配O8中值4x-的人才能获得最大值。

答案 1 :(得分:0)

您可以使用以下用户定义的函数(只需将代码放在标准公式中)。要在工作表中使用它,请输入公式 - 比如说 - 在P6中:=Fastest_from_cat($C$4:$I$100,O6)

Public Function Fastest_from_cat(rng As Range, cat As String) As Double
Dim I As Long, col As Long
Dim Arr, tim As Double
tim = 999
Arr = rng.Value2
col = UBound(Arr, 2)
    For I = 1 To UBound(Arr)
        If Right(Arr(I, 1), Len(cat)) = cat And IsNumeric(Arr(I, col)) Then _
            If Arr(I, col) < tim Then tim = Arr(I, col)
    Next I
Fastest_from_cat = tim
End Function