2009-08-18 3 views
1

내 데이터 시트에 필터와 숨겨진 열이 있습니다. 필터가 적용될 때 필터링 된 모든 데이터를 반복해야합니다. 내가 사용 : Excel.Range visibleRange = this.UsedRange.SpecialCells (XlCellType.xlCellTypeVisible, missing) as Excel.Range;Excel에서 모든 필터링 된 데이터 행을 얻는 방법 (숨겨진 열 포함)?

이제 visibleRange.Rows.Count는 0입니다. foreach 루프 "foreach (visibleRange.Row의 Excel.Range 행)"행에는 첫 번째 숨겨진 열에서 잘린 모든 열이 없습니다.

어떻게 필터링 된 행을 반복 할 수 있습니까?

답변

4

나는 SpecialCells 속성을 전혀 사용하지 않을 것입니다. UsedRange의 모든 행을 반복하고 가면 Hidden 속성을 확인하십시오. 여기에 사용되지만, 어떤 언어로 확인

하지 VBA의 예는 다음과 같습니다

Dim rowIndex As Range 

With Worksheets("Sheet1") 
    For Each rowIndex In .UsedRange.Rows 
     If (rowIndex.Hidden) Then 
      ' do nothing - row is filtered out 
     Else 
      ' do something 
     End If 
    Next rowIndex 
End With 

각 행 (또는 오히려 각각 rowIndex에 의해 참조 Range 개체) 숨겨진 포함한 모든 열이 포함됩니다. 당신이 열이 숨겨져 여부를 결정해야하는 경우 다음 바로 Hidden 속성을 확인하지만 이것은 단지 전체 열 또는 행에 적용 기억

Dim rowIndex As Range 
Dim colNumber As Integer 

With Worksheets("Sheet1") 
    For Each rowIndex In .UsedRange.Rows 
     If (rowIndex.Hidden) Then 
      ' do nothing - row is filtered out 
     Else 
      For colNumber = 1 To .UsedRange.Columns.Count 
       ' Need to check the Columns property of the Worksheet 
       ' to ensure we get the entire column 
       If (.Columns(colNumber).Hidden) Then 
        ' do something with rowIndex.Cells(1, colNumber) 
       Else 
        ' do something else with rowIndex.Cells(1, colNumber) 
       End If 
      Next colNumber 
     End If 
    Next rowIndex 
End With 
+0

대단히 감사합니다. – PerlDev

0

스레드 네크로 시간. 여기 내가하는 일이있다.

'Count the total number of used rows in the worksheet (Using Column A to count on) 

numFilteredCells = Application.WorksheetFunction.Subtotal(3, Range("A1:A" & Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row)) 

'Find Last filtered row with content 

j = Range("A1").Cells(Rows.Count, 1).End(xlUp).Offset(0, 0).Row 

'Subtract the total number of filtered rows with content, + 1 

jTargetDataRow = j - numFilteredCells + 1 

jTargetDataRow 해주기 j 마지막 포함 콘텐츠 제 여과 행을 포함하고, numFilteredCells 콘텐츠를 필터링 행의 총 수를 포함한다.

관련 문제