Excel 함수는 셀이 표시되는지 확인


12

조건부 서식에서 현재 셀 위의 행이 숨겨져 있는지 여부를 감지하고 싶습니다. 셀이 보이는지 어떻게 알 수 있습니까?

내가 생각할 수있는 유일한 해킹은 다음과 같습니다.

  1. 모든 1값 으로 열을 작성하십시오 .
  2. subtotal(109,c2:c2)=1확인하려는 셀에서 와 같은 수식을 사용하여 표시 되는지 숨겨져 있는지 확인합니다.

행이 표시 될 때 표시되어야하는 임시 열 없이이 작업을 수행하는 방법이 있습니까?


XY 문제 를 피하려면 행의 범주 인 열이 있어야합니다. 특정 카테고리의 첫 번째 VISIBLE 행은 다른 스타일을 가져야합니다. 카테고리가 같은 행은 약간 다릅니다. ASCII에서 :

cat.   item
+AAA+  aaaa
(AAA)  bbbb
(AAA)  cccc
+BBB+  dddd
(BBB)  eeee
(BBB)  ffff

내 필터가 행을 숨기면 행 에 스타일을 지정 dddd하고 싶습니다 .eeee+BBB+

답변:


13

다른 열에서 합계를 사용하는 소계 대신 소계를 사용하여 counta(공백이 아닌) 셀이 숨겨져 있는지 확인할 수 있습니다 . 예를 들어 열 A이 정상적으로 표시되는 경우 (행이 숨겨져 있지 않은 경우)

= IF( SUBTOTAL(103,A2)=1, "VISIBLE", "HIDDEN (or blank)" )

이 수식을 숨길 수있는 열에 넣을 수 있으며 여전히 작동합니다.

조건부 서식에서는 다음을 사용 = SUBTOTAL(103,$A2)=1하여 행이 표시되는지 확인할 수 있습니다.


5

Phrogz의 답변에 대한 부록으로, 열의 셀 이 숨겨져 있는지 확인 해야하는 경우 다음 중 하나를 시도하십시오.

조건부 서식

=CELL("width",TargetCell)=0

열이 숨겨 지 자마자 자동으로 업데이트됩니다.

공식 확인

=IF(CELL("width",TargetCell)=0, "Cell is hidden.", "Cell is visible.")

이 수식은 자동으로 업데이트되지 않으므로 메뉴 옵션을 선택하거나 "F9"를 눌러 Excel에서 "지금 계산"을 지시해야합니다.


1

이것은 게리의 학생의 접근 방식과 유사합니다. 다음 VBA 함수를 정의하십시오.

Function MyRowHidden(ref As Range)
    MyRowHidden = Rows(ref.Row).Hidden
End Function

MS Office에서 VBA를 추가하는 방법을 참조하십시오 . 도움이 필요하면 이제 포함하는 행 이 숨겨져 있는지 확인할 수 있습니다 .MyRowHidden(cell)cell

문제를 해결하기 위해 고안 한 방식에는 도우미 열이 사용되지만 숨길 수는 있습니다. 데이터가 Row 2에서 시작 하고 Column에 카테고리가 있다고 가정하면 다음을 A입력하십시오.

=OR($A1<>$A2, AND(H1,MyRowHidden(H1)))

cell H2에 넣고 아래로 드래그하십시오. 이 공식은 다음과 같은 경우 TRUE로 평가됩니다.

  • 이 행 ( A2)의 카테고리가 이전 행 ( A1) 의 카테고리와 다릅니다 . 즉, 새 카테고리의 첫 번째 행이거나
  • 이전 행은 강조 표시되어야하지만 숨겨져 있습니다.

그리고 단순히 하이라이트 셀에 조건부 서식을 사용하는 A2경우에 =H2해당됩니다.

예 : 원시 데이터 :

        전체 데이터 세트

예, 저는 전통 주의자입니다. 나는 여전히 명왕성을 행성으로 간주합니다. 여기에 소수 행 (2, 3, 5, 7, 11, 13)이 숨겨져 있습니다.

        필터링 된 데이터

물론 통합 문서에서 매크로를 활성화해야합니다.


0

활성 셀 위의 행이 Hidden 인지 감지하려면 다음 매크로를 실행하십시오.

Sub WhatsAboveMe()
Dim r As Range
Set r = Selection
With r
    If .Row = 1 Then
        Exit Sub
    End If
    If .Offset(-1, 0).EntireRow.Hidden = True Then
        MsgBox "the row above is hidden"
    Else
        MsgBox "the row above is visible"
    End If
End With
End Sub

1
조건부 서식에서 질문을 어떻게 처리합니까?
CharlieRB

0

이 스레드는 조금 오래되었지만 누군가에게 도움이되는 경우 VBA를 사용하지 않고 필터링 된 테이블에서 중복을 조건부로 형식화하는 방법입니다.

  1. 1로 채워진 열 만들기
  2. 다른 열을 만들고 이와 같은 수식을 넣으십시오.

    =IF(SUBTOTAL(103, [@ColumnWithOnlyOnesInIt])=1, [@ColumnYouWantToCheckForDuplicates], "")

  3. 확인할 열에 일반 중복 조건부 서식을 설정하십시오.

2 단계의 수식은 확인하려는 열의 값을 복사하지만 행이 표시 될 때만 복사합니다. 이렇게하면 중복이 확인되면 필터링 된 테이블에만 적용 할 수 있습니다. 나는 이것이 0 (또는 ""또는 if 문에서 "else"값으로 선택한 모든 것)에는 작동하지 않을 것이라고 생각합니다. 따라서 목록에서 중복으로 강조 표시되는 줄 0 값을 얻을 수 있습니다. 그 외에는이 방법으로 행운을 빕니다.


0

다음 공식을 사용할 것을 제안합니다 (예 : $ A : $ A) :

=AND(A1=OFFSET(A1;-1;0);SUBTOTAL(103;OFFSET(A1;-1;0))=1)

무엇을 하는가 :

둘 다

  1. 셀은 위의 셀과 같습니다. A1=OFFSET(A1;-1;0)
  2. 위의 셀이 보입니다. SUBTOTAL(103;OFFSET(A1;-1;0))=1

그런 다음 결과는 True이므로 셀은 바로 보이는 셀의 복제본이므로 회색으로 표시되어야합니다.

참고 :이 OFFSET기능을 사용하면 추가 행을 삽입 할 때 조건부 서식이 중단되지 않습니다.


-1

방금 사용한 솔루션은 다음과 같습니다.

새 열 C를 작성했습니다 (원본 (B 열)을 숨겼습니다). 새 열에서 수식 = SUBTOTAL (9, B2)을 사용했습니다. 어느 한 행에 관심이 있습니다. 그런 다음 모든 행을 복사했습니다!

이제 고급 필터를 사용하여 필터링 할 때 표시되지 않은 경우 (필터링되지 않은 경우)이 열의 값은 모두 ZERO입니다.

그런 다음 일반 = SUMIF ()는 챔피언처럼 작동합니다. 실수로 숨겨진 열을 사용하여 합계하지 마십시오. 방금 만든 SUBTOTAL () 열을 합산하십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.