确定第一个可见单元格是否等于最后一个

确定第一个可见单元格是否等于最后一个

请问如何在 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

答案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。

答案2

好的,明白了:

=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)

返回最后一个值。

感谢帮助。

相关内容