< návrat zpět

MS Excel


Téma: AutoFilter rss

Zaslal/a 25.1.2019 13:34

Mám takový dotaz.
Mám v listě mnoho Autofiltrů. některé jsou ve sloupečcích, které jsou hodně úzké, takže není možno poznat, jestli je filter nastaven, nebo ne.
CHtěl bych makrem zvýraznit sloupce, kde je filter nastavený.
Lze ve VBA zjistit, kde je umístěn AutoFilter.
Děkuji.

Zaslat odpověď >

Strana:  1 2   další »
#042561
elninoslov
No môžete použiť Podmienené Formátovanie s pomocou UDF:
Function ISFILTERED(Col As Range) As Boolean
Dim i As Long, iCol As Long
Application.Volatile
iCol = Col.Column
With Col.Parent.AutoFilter
For i = 1 To .Filters.Count
If .Filters(i).On And i = iCol Then ISFILTERED = True: Exit For
Next i
End With
End Function

Alebo obdobne to jednorázovo robiť pri WorksheetChange alebo Calculate naraz vyfarbením. Ale pri tomto veľký pozor, už som to tu videl. Vy keď vyfarbíte makrom stĺpec, prídete o Vaše doterajšie farby. To by sa muselo zisťovať po jednom, ktorá bunka má akú farbu, a tieto info niekde ukladať, a potom ich po jednom naspäť vyfarbiť. S takým zošitom by ste pracovať nechcel - bol by veľmi sekaný.

Aj toto PF neviem ako bude fungovať pri početnom filtrovaní.
Příloha: zip42561_oznacenie-filtrovanych-stlpcov.zip (14kB, staženo 29x)
citovat
#042562
MePExG
Dobrý deň. Len taká podotázka. Počuli ste už o rýchlych filtroch, ktoré sa dajú použiť aj pri tabuľke? Na nich jedným pohľadom dokážete vyhodnotiť, či je použitý, alebo nie je. Alebo skúste použiť kt s rýchlymi filtrami.citovat
#042586
avatar
Pro elninoslov.
díky, ale nefunguje to , pokud v prvních několika sloupcích nemám autofilter.
Já bych spíše potřeboval procházet filtry jeden po druhém a zjistit, ve ketré buňce (alespoň sloupci) je který filtr.
Milancitovat
#042587
avatar
Pro mepexg.
O rychlých filtrech jsem ještě neslyšel.
Milancitovat
#042588
MePExG
Prikladám príklad rýchlych filtrov.
Příloha: xlsx42588_rf.xlsx (15kB, staženo 42x)
citovat
#042589
elninoslov
V tom prípade je treba započítať do toho odsadenie jednoduchou úpravou:
Function ISFILTERED(Col As Range) As Boolean
Dim i As Long, iCol As Long, iRng As Long
Application.Volatile
iCol = Col.Column
With Col.Parent.AutoFilter
iRng = .Range.Column - 1
For i = 1 To .Filters.Count
If .Filters(i).On And i = iCol - iRng Then ISFILTERED = True: Exit For
Next i
End With
End Function

Nevidel som síce prílohu s Rýchlymi filtrami od mepexg, ale tiež ich radšej odporúčam. Ak chcete silou-mocou Podmienený formát a ani táto úprava nieje podľa gusta, priložte súbor nech nehádame.citovat
#042596
avatar
Rychlý filtr, který doporučuje mepexg, se česky jmenuje průřez (anglicky table slicer). V novějších Excelech ho lze vytvořit, ale jen pro definovanou tabulku, případně pro kontingenční tabulku. Excel 2007 to ještě neumí. Příklad od mepexg se v něm zobrazí s nefunkčními okénky, která upozorňují na tento fakt.citovat
#046447
avatar
A da sa zistit aj aka hodnota je filtrovaná?citovat
#046451
elninoslov
Iste, ale treba vedieť čo chcete zisťovať, a ako potom so zistenými údajmi naložiť (Criteria1, Criteria2, Operator, ...). Napr. filter nemusí byť predsa len jedna hodnota, ale pole, alebo farba, alebo rozsah, ...
Tu je príklad na hodnotu alebo pole hodnôt, ktoré vypíše do oblasti.
Sub VypisFiltrovanychPoloziek(Col As Range, Ret As Range)
Dim F(), R As Long

R = Ret.Parent.Cells(Rows.Count, Ret.Column).End(xlUp).Row - Ret.Row + 1
If R > 0 Then Ret.Resize(R).ClearContents

With Col.Parent.AutoFilter
With .Filters(Col.Column - (.Range.Column - 1))
If .On Then
If IsArray(.Criteria1) Then
Ret.Resize(UBound(.Criteria1)).Value = Application.Transpose(.Criteria1)
Else
Ret.Cells(1).Value = .Criteria1
End If
End If
End With
End With
End Sub


Sub pokus()
With ThisWorkbook
VypisFiltrovanychPoloziek .Worksheets("Hárok1").Range("g:g"), .Worksheets("Hárok2").Range("A1")
End With
End Sub

PS: Toto je zjednodušený príklad. Application.Transpose funguje len do počtu 32767 položiek, ak ich je viac, tak ich vypísať v cyklom preklopenom poli.citovat
#046472
avatar
Super, dakujem, funguje, ale iba na stlpce, v ktorych su cisla, alebo text, pricom pred text vlozi =. Ja by som to potreboval aj na stlpce s datumom, co ale vyhadzuje chybu, a neviem to opravit.citovat

Strana:  1 2   další »

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.

On-line nástroje