Vba 从范围变量调用筛选行

Vba 从范围变量调用筛选行,vba,excel,Vba,Excel,我用VBA在Excel中过滤我的表格,并将其保存在范围变量中。例如:我有1000个字段,过滤后只有200个。我将数据保存在一个范围内,并随机选择该范围内的一个数字 在这之后,我想在筛选行更改信息。然而,我不知道如何做到这一点。例如,如果我使用单元格(行,10)< /代码>,VBA考虑所有行和打印输出范围。 如何仅按编号或地址更改过滤后的单元格 Dim Rng As Range ActiveSheet.Range("A1:AE" & tlast_row).AutoFilter Field:

我用VBA在Excel中过滤我的表格,并将其保存在范围变量中。例如:我有1000个字段,过滤后只有200个。我将数据保存在一个范围内,并随机选择该范围内的一个数字

在这之后,我想在筛选行更改信息。然而,我不知道如何做到这一点。例如,如果我使用<代码>单元格(行,10)< /代码>,VBA考虑所有行和打印输出范围。

如何仅按编号或地址更改过滤后的单元格

Dim Rng As Range
ActiveSheet.Range("A1:AE" & tlast_row).AutoFilter Field:=1, Criteria1:="teste"
Set Rng= Range("A2", Range("A2").End(xlDown)).Cells.SpecialCells(xlCellTypeVisible)
tSelCell = WorksheetFunction.RandBetween(1, RngC.Count)
Rng.SpecialCells(xlCellTypeVisible).Cells(tSelCell, 3) = "TEST" '< Here is the problem
Dim Rng As范围
ActiveSheet.Range(“A1:AE”和tlast_行)。自动筛选字段:=1,标准1:=“teste”
设置Rng=Range(“A2”,Range(“A2”).End(xlDown)).Cells.SpecialCells(xlCellTypeVisible)
tSelCell=WorksheetFunction.randbween(1,RngC.Count)
Rng.SpecialCells(xlCellTypeVisible).Cells(tSelCell,3)=“TEST”<问题出在这里
假设我们有如下数据:

我们过滤“快乐”:

可见单元格形成一个不相交的区域。要从不相交的区域中随机选取,我们首先创建一个可见单元格地址数组,然后从该数组中随机选取:

Option Base 1

Sub PickARandomVisibleRow()
    Dim rDisjoint As Range, ary() As Variant, NrD As Long
    Dim tSelCell As Long
    Set rDisjoint = Range("A2:A24").Cells.SpecialCells(xlCellTypeVisible)
    NrD = rDisjoint.Count
    ReDim ary(1)

    i = 1
    For Each r In rDisjoint
        If i = 1 Then
        Else
            ReDim Preserve ary(i)
        End If
        ary(i) = r.Address
        i = i + 1
    Next r

    msg = ""
    For i = LBound(ary) To UBound(ary)
        msg = msg & vbCrLf & i & vbTab & ary(i)
    Next i
    MsgBox msg

    tSelCell = Application.WorksheetFunction.RandBetween(1, UBound(ary))
    msg = "Random Pick item: " & tSelCell & " which is cell: " & ary(tSelCell)
    MsgBox msg
End Sub

RngC必须在RngC之前设置。可以使用计数。RngC是相同的Rng-抱歉,错了。完美的Gary-非常感谢,这将对我帮助很大。祝你周末愉快@Arildo感谢您的反馈!