W formatowaniu warunkowym chcę wykryć, czy wiersz nad bieżącą komórką jest ukryty lub widoczny. Jak mogę wykryć, czy komórka jest widoczna, czy nie?
Jedyny hack, jaki mogę wymyślić, to:
- Utwórz kolumnę ze wszystkimi
1
wartościami. - Użyj formuły podobnej
subtotal(109,c2:c2)=1
(tj. Tylko na komórce, którą chcę sprawdzić), aby ustalić, czy jest widoczna, czy ukryta.
Czy istnieje sposób, aby to zrobić bez tymczasowej kolumny, która musi pozostać widoczna podczas wyświetlania wiersza?
Aby uniknąć problemu XY , chcę, aby kolumna była kategorią dla wiersza. Pierwszy WIDOCZNY wiersz z określoną kategorią powinien mieć inny styl; późniejsze wiersze z tej samej kategorii są nieco inne. W ASCII:
cat. item
+AAA+ aaaa
(AAA) bbbb
(AAA) cccc
+BBB+ dddd
(BBB) eeee
(BBB) ffff
Jeśli mój filtr ukrywa wiersz, dddd
wtedy chcę, aby wiersz eeee
miał +BBB+
styl.
Ten wątek jest trochę stary, ale na wypadek, gdyby był pomocny dla każdego, oto sposób warunkowego formatowania duplikatów na filtrowanej tabeli bez konieczności używania VBA.
Utwórz kolejną kolumnę i umieść w niej taką formułę
=IF(SUBTOTAL(103, [@ColumnWithOnlyOnesInIt])=1, [@ColumnYouWantToCheckForDuplicates], "")
Wprowadź normalne zduplikowane formatowanie warunkowe w kolumnie, którą chcesz sprawdzić.
Formuła z kroku 2 skopiuje wartość z kolumny, którą chcesz sprawdzić, ale tylko wtedy, gdy wiersz będzie widoczny. W ten sposób, gdy sprawdzane są duplikaty, otrzymujesz tylko te, które dotyczą tabeli filtrowanej. Myślę, że to może nie działać dla zer (lub „” lub cokolwiek, co wybierzesz jako wartość „else” w instrukcji if). Może więc być możliwe uzyskanie na liście wartości zerowej linii, która jest podświetlona jako duplikat. Poza tym mam szczęście z tą metodą.
źródło
Proponuję zastosować następującą formułę (w zakresie np. $ A: $ A):
Co to robi:
Jeśli oba
A1=OFFSET(A1;-1;0)
SUBTOTAL(103;OFFSET(A1;-1;0))=1
wtedy wynik jest prawdziwy, więc komórka jest duplikatem widocznej komórki powyżej i powinna być np. wyszarzona.
Uwaga: użycie
OFFSET
funkcji powoduje, że formatowanie warunkowe nie ulegnie zerwaniu po wstawieniu dodatkowego wiersza.źródło
Oto rozwiązanie, którego właśnie użyłem:
Utworzyłem nową kolumnę C (i ukryłem oryginał (kolumna B)). W nowej kolumnie użyłem formuły = SUBTOTAL (9, B2) Który SUMS JEDEN wiersz Cię interesuje. Następnie skopiowałem go wszystkie wiersze!
Teraz, kiedy filtrujesz za pomocą filtra zaawansowanego. Wszystkie wartości są ZEROWANE w tej kolumnie, chyba że są widoczne (nie są filtrowane).
Następnie normal = SUMIF () działa jak bohater. Po prostu nie używaj przypadkowo ukrytej kolumny do sumowania. Suma w nowo utworzonej kolumnie SUBTOTAL ().
źródło