【问题标题】:Excel-VBA to find and return fastest race timeExcel-VBA 查找并返回最快的比赛时间
【发布时间】:2018-04-18 09:03:23
【问题描述】:

目的:查询比赛数据并返回每个班级的最快车队时间。

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

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

示例(参考图片):

这就是手动完成的方式

在表中找到最快的 4x-;

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

任何帮助将不胜感激!

【问题讨论】:

    标签: excel excel-formula excel-2016 vba


    【解决方案1】:

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

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

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

    这意味着,仅对那些匹配O8 中的值的人取最大值,即4x-

    【讨论】:

      【解决方案2】:

      您可以使用以下用户定义函数(只需将代码放入标准公式中即可)。要在工作表中使用它,请在 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
      

      【讨论】:

        猜你喜欢
        • 2021-05-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-06-14
        • 2021-10-13
        • 1970-01-01
        相关资源
        最近更新 更多