3

したがって、特定の値のみを持つシートから情報を抽出する必要があります。約 550 行から、シート全体に広がる 50 行まで。

そこで、そのためにオートフィルターを使用しました。条件に一致する行のみが表示されるようになりましたが、特定の範囲の値を取得するにはどうすればよいですか?

ここまで来ました:

私は私が使用しなければならないことを知っています

RangeINamed.SpecialCells(xlCellTypeVisible)

目に見える情報だけを扱う。最初と最後の行を取得するために機能しました

startRow = bulkbatchRange.SpecialCells(xlCellTypeVisible).row
endRow = startRow + bulkbatchRange.SpecialCells(xlCellTypeVisible).rows.Count

しかし、特定の列の値を取得する必要があるため、For ループを使用して、表示されているすべての行をループできるようにします。

だから私はやろうとした

RangeINamed.SpecialCells(xlCellTypeVisible).range("U" & rowNumber).value 

それはうまくいきませんでした。今、私はかなり無知なので、RangeINamed の列 U でその行の値を取得する方法を誰かが知っているでしょうか?

ありがとうございました

4

2 に答える 2

2

U10のような特定のセルの値をいつでも取得できます。

Range("U10").Value

行が非表示かどうか。

編集#1

以下は、オートフィルター処理されたテーブルの列 A をループ ダウンする小さな例です。3 番目に表示されている行を探します (ヘッダー行は含みません)。

Sub GoDownFilter()
    Dim rLook As Range, r As Range
    Set rLook = Intersect(ActiveSheet.UsedRange, Range("A:A").Cells.SpecialCells(xlCellTypeVisible))
    rLook.Select
    K = 0
    For Each r In rLook
        If K = 3 Then
            r.Select
            MsgBox "The third visible row has been selected"
            Exit Sub
        End If
        K = K + 1
    Next r
End Sub
于 2013-10-11T13:04:22.610 に答える
2

次のような特定のセルを取得する場合は、選択する必要があると思います。

Range("U10").Value

または、次のようなものを使用した相対セル

RangeINamed.SpecialCells(xlCellTypeVisible)(2,3).Value

または

RangeINamed.SpecialCells(xlCellTypeVisible)(2,3).Address 'To see if you are getting it right

編集:

Filter と Iterate の完全なコード。

Sub Filter()
Dim tableRange As Range, var, actualRow As Integer, lastRow As Integer

Set tableRange = Range("PUT_THE_TABLE_RANGE_HERE")

' Filter 
With tableRange
    Call .AutoFilter(5, "SPECIFIC_FILTER")
End With

Set f = tableRange.SpecialCells(xlCellTypeVisible)

With tableRange
    Call .AutoFilter(5)
End With

For Each var In f.Cells.Rows
    actualRow = var.Row
    If actualRow <> 1 Then
        ' Do something
    End If
Next
End Sub
于 2013-10-11T13:14:38.367 に答える