1

пожалуйста, как определить в VBA, если первая видимая (после использования фильтра) ячейка равна последней видимой ячейке?

Если у меня есть:

A5 = a, B5 = 1

A6 = b, B6 = 2

A7 = c, B7 = 1

A8 = a, B8 = 1

A9 = b, B9 = 2

Тогда, если я отфильтрую "1", столбец A будет: a, c, a. Тогда мне ничего не нужно делать.

Но когда я отфильтрую "2", столбец A будет: b, b. Тогда мне нужно быть C5 например = b.

это

Range("A200").End(xlUp).SpecialCells(xlCellTypeVisible).Value

Я не могу использовать, потому что он будет использовать также A1, A2, A3 и A4 (я полагаю), но мне нужно быть A5 "последним".

У меня есть это:

If Range("A5").End(xlDown).Value <> "first visible cell in Range("A5:A200")" Then
    ThisWorkbook.Sheets("Šablona").Range("B2").Value = ""
Else
    ThisWorkbook.Sheets("Šablona").Range("B2").Value = "first visible cell"
End If

2 ответа2

1

С такими данными, как:

Мы применяем фильтр и хотим знать, имеет ли первая видимая ячейка в столбце A то же значение, что и последняя видимая ячейка в столбце A.

Этот короткий макрос перебирает диапазон, проверяет видимость и выполняет тест:

Sub Roman()
    Dim rng As Range, r As Range
    Dim v1 As Variant, v2 As Variant
    Dim FlipFlop As Boolean

    Set rng = Range("A2:A26")
    FlipFlop = True

    For Each r In rng
        If FlipFlop Then
            If r.EntireRow.Hidden = False Then
                v1 = r.Value
                FlipFlop = False
            End If
        Else
            If r.EntireRow.Hidden = False Then
                v2 = r.Value
            End If
        End If
    Next r

    If v1 = v2 Then
        MsgBox "they are equal"
    Else
        MsgBox "they are not equal"
    End If

End Sub

Это не зависит от SpecialCells.

1

ок, разобрался

=INDEX(A3:A200;MIN(IF(SUBTOTAL(3;OFFSET(A3;ROW(A3:A200)-ROW(A3);0));ROW(A3:A200)-ROW(A3)+1)))

возвращает первое значение и:

=LOOKUP(2;1/((SUBTOTAL(3;OFFSET(A3:A65535;ROW(A3:A65535)-MIN(ROW(A3:A65535));0;1)))*(1-ISBLANK(A3:A65535)));A3:A65535)

возвращает последнее значение

Спасибо за помощь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .