【问题标题】:INDEX/MATCH MAX vba索引/匹配最大 vba
【发布时间】:2019-01-22 11:08:05
【问题描述】:

我的问题是关于从范围 (D2:D296) 中查找包含范围 (N2:N296) 中的最高值的学生姓名。我已经完成了以下代码,但无法正常执行。 我的错,我之前没有提到我的数据来自 diff 工作表,即 Sheet1。

次高分()

Dim Result As Long
Dim rng As range
Dim rnng As range


Set rng = ThisWorkbook.Worksheets("Sheet1").range("$N$2:$N$296")
Set rnng= This Workbook.Worksheets("Sheet1").range("$D$2:$D$296")
Result = Index(rnng, Match(Max(rng), rng))

[B3] = Result

结束子

我对 vba 有点陌生,我很欣赏之前的 cmets,再次,我的错误是我刚才没有把它写得更清楚,我的错误是我编写了奇怪的代码。

【问题讨论】:

  • 代码未写。

标签: excel vba excel-formula max match


【解决方案1】:

嗯,看不到你做了什么,但根据你的问题:

=INDEX(D2:D296,MATCH(MAX(N2:N296),N2:N296,0))

【讨论】:

  • 您的 MAX 公式需要一个右括号。我会编辑它,但它告诉我必须添加至少 6 个字符。
  • @Gravitate 谢谢,发现得很好,只是打字...我不是最好的打字员... :)
【解决方案2】:

你也可以使用:

    Option Explicit

    Sub HighestValue()

        Dim Lastrow As Long, MaxValue As Long
        Dim rngValues As Range, rngNames As Range
        Dim MaxName As String

        With ThisWorkbook.Worksheets("Sheet1")

            Lastrow = .Cells(.Rows.Count, "B").End(xlUp).Row

            Set rngValues = .Range(Cells(2, 2), Cells(Lastrow, 2))
            Set rngNames = .Range(Cells(2, 1), Cells(Lastrow, 1))

            MaxValue = Application.Max(rngValues)

            MaxName = Application.WorksheetFunction.Index(rngNames, Application.WorksheetFunction.Match(MaxValue, rngValues, 0))

        End With

    End Sub

【讨论】:

    【解决方案3】:

    如果您在 VBA 代码中使用本机工作表函数,请添加 Application 或 WorksheetFunction。

    Dim Result As Long
    Dim rng As range
    Dim rnng As range
    
    
    Set rng = ThisWorkbook.Worksheets("Sheet1").range("N2:N296")
    Set rnng= ThisWorkbook.Worksheets("Sheet1").range("D2:D296")
    Result = Application.Index(rnng, Application.Match(Application.Max(rng), rng, 0))
    
    [B3] = Result
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-23
      • 2015-12-15
      • 1970-01-01
      • 2021-08-25
      • 2021-09-14
      • 2011-11-26
      • 2015-10-30
      • 2014-11-14
      相关资源
      最近更新 更多