INDEX / MATCH MAX VBA - PullRequest
       33

INDEX / MATCH MAX VBA

0 голосов
/ 22 января 2019

Мой вопрос касается поиска имени ученика из диапазона (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

End Sub

Я немного новичок в vba, я ценю комментарии ранее, опять же, мое плохо, что я не записал это яснее только сейчас, и мое плохо, что я пишу странные коды.

Ответы [ 3 ]

0 голосов
/ 22 января 2019

Вы также можете использовать:

    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
0 голосов
/ 22 января 2019

Добавьте Application или WorksheetFunction, если вы используете собственные функции рабочего листа в коде VBA.

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
0 голосов
/ 22 января 2019

Ну, не вижу, что вы сделали, но на основании вашего вопроса:

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