반응형
Excel VBA 필터링/가시 셀
데이터 행이 10개라고 가정합니다.데이터에 필터를 적용하면 7번과 9번 행이 필터링되거나 표시됩니다.
데이터(10개의 행)를 루프하고 표시되는 행(예: C7 및 C9 범위)에 대해서만 빈 열(C열로 가정)에 "표시됨" 문자열을 출력합니다.
숨길 처음 10개 행 중 일부를 선택한 다음 실행해 보십시오.
Option Explicit
Sub CheckIfVisible()
Dim i As Integer, x As Integer
x = 0
For i = 1 To 10
With Excel.ThisWorkbook.ActiveSheet
If .Rows(i).EntireRow.Hidden Then
Else
.Cells(15 + x, 1) = "Row " & i & "is visible"
x = x + 1
End If
End With
Next i
End Sub
이것이 당신이 찾고 있는 루프의 종류입니까?
문제가 어디에 있는지 확인할 수 있도록 루프를 보여주시겠습니까?
얼마 전에 이걸 찾으러 왔으니, 미래의 구글 사용자들에게 도움이 될 만한 것이 있습니다.
셀/행당 작업을 수행하는 경우 셀에 액세스하면 됩니다.전체 행.직접 숨김.
아래 예제에서는 선택의 각 셀을 통과하는 각 셀에 대한 루프일 뿐이며 셀의 속성만 읽고 에 따라 카운트/색상을 지정합니다.True/False로 숨김.
주의해야 할 위험이 있습니다.
필터링된 범위를 테스트하는 경우에는 해당 범위를 초과하는 행을 한 행씩 선택해야 합니다. 숨겨진 행이 범위의 끝/끝 행에 있는 경우 캡처되지 않을 수 있으므로 선택 후에 표시되는 첫 번째 행을 선택하면 이를 피할 수 있습니다.
넓은 범위(10,000개 이상의 행)에서는 매우 비효율적입니다.
테스트할 경우 Pasta 복사
Sub HowManyHiddenCells()
Dim MyCell, MyRange As Range
Dim CellCountAll, CellCountVisible, CellCountHidden As Integer
Set MyRange = Selection
For Each MyCell In MyRange
':: IGNORE EMPTY ::
If Len(MyCell.text) > 0 Then
If MyCell.EntireRow.Hidden Then
MyCell.Interior.Color = RGB(255, 220, 200)
':: Count of hidden cells in range
CellCountHidden = CellCountHidden + 1
':: Do Column C Text! ::
MyCell.Offset(0, 2).FormulaR1C1 = "I was hidden! "
End If
If MyCell.EntireRow.Hidden = False Then
MyCell.Interior.Color = RGB(200, 255, 180)
':: Count of visible cells in range
CellCountVisible = CellCountVisible + 1
End If
':: Count of all cells in range
CellCountAll = CellCountAll + 1
End If
Next MyCell
MsgBox "Cells total " & CellCountAll & vbNewLine & "Hidden : " & CellCountHidden & vbNewLine & "Visible : " & CellCountVisible, vbOKOnly + vbInformation, "Count of hidden vs visible"
End Sub
작업 중인 스크립트의 예 - 빨간색으로 숨겨진 부분을 강조 표시하는 필터링된 범위
@q에서 영감을 받아 제가 이것을 생각해 낸 이유는 선택한 모든 표시되는 행을 반복합니다.
Sub Loop_through_selected_rows()
Dim rng As Range: Set rng = ActiveWindow.RangeSelection
Dim i As Integer
For i = 0 To rng.Rows.Count - 1
If Cells(rng.Row + i, 1).EntireRow.Hidden Then
Else
Cells(rng.Row + i, 1).Range("A1:E1").Select 'Set Range within row to your needs
' Do something here
End If
Next
End Sub
언급URL : https://stackoverflow.com/questions/14173445/excel-vba-filtered-visible-cell
반응형
'programing' 카테고리의 다른 글
함수 호출의 별표 (0) | 2023.08.06 |
---|---|
내포된 함수가 외부 함수의 변수에 액세스할 수 있지만 수정할 수 없는 이유 (0) | 2023.08.06 |
선행 및 후행 공백을 어떻게 잘라낼 수 있습니까? (0) | 2023.08.06 |
jdiv 태그 내부에 이미지 추가 쿼리 (0) | 2023.08.06 |
docker-compose.yml에서 명명된 볼륨의 호스트 경로를 설정하는 방법 (0) | 2023.08.06 |