Excel에서 자동 필터를 설정하고 VBA 코드로 한 열의 모든 보이는 데이터를 반복하려는 경우 가장 쉬운 방법은 무엇입니까?VBA로 필터링 된 목록을 반복하는 가장 쉬운 방법은 무엇입니까?
필터링 된 숨겨진 행을 모두 포함하지 않아야하므로 위에서 아래까지의 단순 범위가 도움이되지 않습니다.
좋은 아이디어가 있습니까? 감사.
Excel에서 자동 필터를 설정하고 VBA 코드로 한 열의 모든 보이는 데이터를 반복하려는 경우 가장 쉬운 방법은 무엇입니까?VBA로 필터링 된 목록을 반복하는 가장 쉬운 방법은 무엇입니까?
필터링 된 숨겨진 행을 모두 포함하지 않아야하므로 위에서 아래까지의 단순 범위가 도움이되지 않습니다.
좋은 아이디어가 있습니까? 감사.
셀에 A2:A11
의 숫자가 1 ~ 10이고 autofilter가 A1
인 것으로 가정합니다. 이제 5보다 큰 숫자 만 표시하도록 필터링합니다 (예 : 6, 7, 8, 9, 10).
만 볼 수 세포 인쇄됩니다이 코드 :
Sub SpecialLoop()
Dim cl As Range, rng As Range
Set rng = Range("A2:A11")
For Each cl In rng
If cl.EntireRow.Hidden = False Then //Use Hidden property to check if filtered or not
Debug.Print cl
End If
Next
End Sub
아마도 SpecialCells
와 더 나은 방법이 있지만, 위의 엑셀 2003
편집에 나를 위해
그냥 볼 일을 더 좋은 방법은 SpecialCells
:
Sub SpecialLoop()
Dim cl As Range, rng As Range
Set rng = Range("A2:A11")
For Each cl In rng.SpecialCells(xlCellTypeVisible)
Debug.Print cl
Next cl
End Sub
A1에서 필터링 된 데이터를 아래쪽으로 가정하는 편도;
dim Rng as Range
set Rng = Range("A2", Range("A2").End(xlDown)).Cells.SpecialCells(xlCellTypeVisible)
...
for each cell in Rng
...
나는이 예
Option Explicit
Sub Sample()
Dim rRange As Range, filRange As Range, Rng as Range
'Remove any filters
ActiveSheet.AutoFilterMode = False
'~~> Set your range
Set rRange = Sheets("Sheet1").Range("A1:E10")
With rRange
'~~> Set your criteria and filter
.AutoFilter Field:=1, Criteria1:="=1"
'~~> Filter, offset(to exclude headers)
Set filRange = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
Debug.Print filRange.Address
For Each Rng In filRange
'~~> Your Code
Next
End With
'Remove any filters
ActiveSheet.AutoFilterMode = False
End Sub
이것은 문제를 해결하는 좋은 방법입니다. 네 접근 방식이 좋아. –
좋은 해결책 Sid. 그러나 'SpecialCells'를 사용하는 동안 매우 신중할 것입니다. Excel이 최근에이 셀의'.Address'를 보내는 방식 때문에 문제가 발생했습니다. –
@PankajJaju : 나는 당신을 얻지 못해서 미안합니다. 무슨 뜻인지 설명해 주시겠습니까? 아마도 예를 들어? –
Call MyMacro()
ActiveCell.Offset(1, 0).Activate
Do Until Selection.EntireRow.Hidden = False
If Selection.EntireRow.Hidden = True Then
ActiveCell.Offset(1, 0).Activate
End If
Loop
코드가하는 일에 대한 설명을 제공하면 도움이 될 것입니다. –
모든 해답을 주셔서 감사를 참조 헤더가 행 1에 있다고 가정
Offset
를 사용하는 것이 좋습니다 것입니다! 그것들은 모두 동일하거나 (SpecialCells (xlCellTypeVisible)을 사용하여 필자가 필요로하는 열쇠였습니다) 어느 답변이 옳은지 선택하기가 어려웠습니다. – mattboy