2017-02-23 9 views
0

私はExcelのテーブル(24列、5000行)を持っています。これは正常に動作しますExcel VBA - 複数のフィルタの後に列の値を取得します。

With Worksheets("test") 
    .AutoFilterMode = False 
    With .Range("A1:X1") 
     .AutoFilter 
     .AutoFilter Field:=2, Criteria1:="2024" 
     .AutoFilter Field:=3, Criteria1:="T351" 
     .AutoFilter Field:=4, Criteria1:="ABS5032A" 
     .AutoFilter Field:=11, Criteria1:="7" 
     .AutoFilter Field:=12, Criteria1:="8" 
     .AutoFilter Field:=14, Criteria1:="1002" 
     .AutoFilter Field:=15, Criteria1:="YES" 
     .AutoFilter Field:=17, Criteria1:="NO" 
     .AutoFilter Field:=18, Criteria1:="12" 
    End With 
End With 

、私のExcelの表に、私は右を見ることができます:VBAで、私は(現在、私はコードをテストするために、ハードコーディングされcretiria値をしようとしています)criteraに応じて行を見つけるために、このテーブルをフィルタリングします行は表示され、その他は非表示になります。

ここから問題が始まります。私は、表示行の最後の列(列 "X")の値を取得できるようにしたいと思います。これを行うには、私は(私のフィルタの後)にこれを試してみました:私は考え

rsltRng.Copy Worksheets("sheet").Range("A1") 

しかし:

Dim rsltRng As Range 
Set rsltRng = Worksheets("test").AutoFilter.Range.SpecialCells(xlCellTypeVisible) 

私は別のシートにrslRngをコピーすると、それが正常に動作し、右の列はシートにコピーされます別のシートを使用しないようにして、私が望む列の値を直接取得します。

どうすればいいのですか?

ありがとうございました!

ネイラ

答えて

1

最後に表示される行の列Xの値を入力しますか?試してみてください:

Dim rsltRng As Range 
Dim result As String 
Dim rowNum As Integer 
Dim colNum As Integer 

With Worksheets("test") 
    .AutoFilterMode = False 
    With .Range("A1:X1") 
     .AutoFilter 
     .AutoFilter Field:=2, Criteria1:="2024" 
     .AutoFilter Field:=3, Criteria1:="T351" 
     .AutoFilter Field:=4, Criteria1:="ABS5032A" 
     .AutoFilter Field:=11, Criteria1:="7" 
     .AutoFilter Field:=12, Criteria1:="8" 
     .AutoFilter Field:=14, Criteria1:="1002" 
     .AutoFilter Field:=15, Criteria1:="YES" 
     .AutoFilter Field:=17, Criteria1:="NO" 
     .AutoFilter Field:=18, Criteria1:="12" 
    End With 


    Set rsltRng = .AutoFilter.Range.SpecialCells(xlCellTypeVisible) 

    rowNum = .Range("B1").End(xlDown).Row 
    colNum = 24 'column X 

    result = .Cells(rowNum, colNum).Text 

End With 
+0

ありがとうスティーブ! – Neira

+0

rowNum = .Range( "B1")。End(xlDown).Row - これは 'X1'でなければなりませんが、最終結果は同じです:) –

関連する問題