найти индекс строки числа, которое произошло первым - PullRequest
19 голосов
/ 07 декабря 2011

У меня есть A столбец, который имеет значения в случайном порядке, например

       A column
           2
           3
           4
           2
           5
           6
           4
           3
           4

Я хочу, чтобы индекс строки определенного числа был первым. скажем, если я скажу, что число равно 4, возвращаемое значение должно быть 3

Мне также нужен индекс строки определенного числа, которое произошло последним. Скажем, если я скажу, что число равно 3, то возвращаемое значение должно быть 8

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

Ответы [ 2 ]

41 голосов
/ 07 декабря 2011

Мои примеры ищут число 3, но его легко адаптировать.

Чтобы найти первый случай, вы можете использовать:

=MATCH(3,A:A,0)

Чтобы найти последний, вы можете использовать формулу массива (проверить с помощью Ctrl + Shift + Enter )

{=MAX(IF(A1:A10=3,ROW(A1:A10),0))}

Обратите внимание, что вы также могли использоватьформула массива для первого с MIN, но это будет довольно сложно для того, что оно стоит.

2 голосов
/ 07 декабря 2011

Привет, друг, ты можешь использовать макросы для этого

Используйте следующий код

Sub FindNumbers()

    Sheet1.Range("B:D") = ""
    Application.ScreenUpdating = False
    tot = Sheet1.Range("A1048575").End(xlUp).Row
    i = 1
    k = 1
    m = 1
    n = 1
    o = 1
    p = 1

    For i = 1 To tot
            c = Application.WorksheetFunction.CountIf(Sheet1.Range("B:B"), Sheet1.Range("A" & i).Value)
            If c <= 0 Then
            Sheet1.Range("B" & k).Value = Sheet1.Range("A" & i).Value
            k = k + 1
            End If
    Next

    tots = Sheet1.Range("B1048575").End(xlUp).Row

    For m = 1 To tots
        For n = 1 To tot
            If Sheet1.Range("B" & m).Value = Sheet1.Range("A" & n).Value Then
            Sheet1.Range("D" & m).Value = n
            End If
        Next
    Next

    For o = 1 To tots
        For p = 1 To tot
            If Sheet1.Range("B" & o).Value = Sheet1.Range("A" & p).Value Then
            Sheet1.Range("C" & o).Value = p
            p = tot
            End If
        Next
    Next

    Application.ScreenUpdating = True

End Sub

Как использовать код? (Если вы новичок в макросе)

  1. Открыть новый файл Excel

  2. Нажмите Alt + F11

  3. Вставить новый модуль

  4. Вставьте код в модуль

  5. Вернитесь к листу Excel и добавьте кнопку

  6. Назначение макроса «FindNumbers» для кнопки

  7. Сохраните Excel в формате .xlsm, если вы используете Excel 2007 или 2010

  8. Помощь

  9. Столбец A: введите свои данные в столбец A и нажмите кнопку или запустите макрос

  10. Нажмите кнопку или запустите макрос

Ваш результат будет таким

Столбец B: числа, уникальные для данных, введенных в столбец A

Столбец C: первое вхождение данных

Столбец D: последнее появление данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...