< návrat zpět

MS Excel


Téma: Filtr tabulky makrem rss

Zaslal/a 10.10.2012 22:51

Potreboval bych filtrovat sloupec tabulky makrem. Protoze nejsem uplne znaly VBA, nejdriv jsem si makro nahral. Pokud ale mam hodnoty ve sloupci napr "a, b, c, d, e" a potrebuji odskrtnout "a" a "b" v nahranem makru se objevi ze bude zaskrtnuto jen "c, d, e" a ne ze se odskrtne "a, b". Vzdy tam je jen to co ma byt videt, ne to co ma byt schovano. Doufam ze je to trochu srozumitelny. jediny co jsem nasel je fce exclude, ale nevim presne jak to pouzit. Diky moc za pomoc

Zaslat odpověď >

Strana:  1 2   další »
icon #009814
Poki
Myslim, ze to jde takto:
ActiveSheet.Range("$A$1:$A$27").AutoFilter Field:=1, Criteria1:="<>a", _
Operator:=xlAnd, Criteria2:="<>b"


ale funguji jen dve podminky, takze jestli jich mate vic, bude potreba to vyresit jinak.citovat
#009815
avatar
Napada me pouze komplexni reseni, kdy se nejdriv nactou hodnoty v danem sloupci do kolekce (aby nebyly duplicity).
Pak se v dalsim cyklu budou prochazet jednotlive prvky kolekce a v tomto cyklu by se z kolekce nacitaly do pole pouze ty hodnoty, ktere chceme po odfiltrovani videt.
No a pak to pole predame jako argument filtru.
Pokud do zitrka nekdo neprijde s necim jednodussim, muzu napsat prislusnou proceduru. Alespon bych potreboval vedet o ktery sloupec v tabulce se jedna a prani, aby pod tabulkou uz nebyly zadne neprazdne bunky 8citovat
#009816
avatar
To od Pokiho vyzkousim, ale bohuzel mam tri hodnoty, ktere potrebuju makrem schovat. Ale tak bych to tam dal dvakrat, to by mohlo jit. Jinak vtip v hledanem reseni je ten, ze ve sloupci muze nastat 9 ruznych hodnot + prazdne bunky. a potrebuju ten filtr tak, aby se mi schovali ty tri hodnoty i v pripade ze uz tam nejaky filtr je. Proto potrebuji jen ty tri vypnout a ne definovat ktere maji byt zapnute, pac to se muze cas od casu lisit.
Milanovo reseni vypada srozumitelne, ale budu vdecny za kod, pac tak daleko nejsem, predem diky. i kdyz jsem doufal v neco jednodussiho. Kazdopadne: excel 2007, list Skaly, tabulka3, sloupec 11 pojmenovany "Styl", filtrovane hodnoty "2","-","AF", pod tabulkou uz jsou jen prazdne bunky.citovat
#009817
avatar
Coze, tam jsou 3 tabulky na lednom liste?
Na kterem radku je zahlavi te tabulky3?
Jake pismeno ma ten 11 sloupec?
Ten pripadny filtr bude v danem sloupci anebo v jinych sloupcich?citovat
#009818
avatar
Tak Pokiho reseni jsem prokouk, je to nastaveni vlastniho filtru, tak bych to resit nechtel, nehlede na to, ze zobrazi vsechny dalsi hodnoty, takze ani nesplnuje to co bych od toho ocekaval.
Na danem liste je jen tabulka3, ostatni jsou na jinych listech. Zahlavi je na 4.radku. 11. sloupec ma pismeno "L". Filtr bude v makru a bude filtrovat ten sloupec 11(tabulky)(pismeno L listu). Jak ja bych to chtel umet! vedet proc jsou tyhle veci dulezity...snad casem...
Tim zadanym makrem bych jen chtel ovladat odtrzitka po rozkliku sipky v zahlavi tabulky. Proste nemenit momentalni stav, jen odtrhnout dalsi tri.citovat
#009821
avatar
Daj si do pomocného stlpca vzorec
=OR(A2="a";A2="b";A2="c")
=NEBO(A2="a";A2="b";A2="c")
A vyfiltruj si to podľa toho.
Stlpec môžeš potom skryť.citovat
#009823
avatar
Tak zde je funkcni nastrel:
Option Explicit

Sub Filtr123()
'toto funguje za predpokladu, ze na danem liste je jen jedna tabulka s filtrem

Dim ws As Worksheet
Dim iRows As Long, i As Long, j As Long, iStartRow As Integer, iStartCol As Integer
Dim cKol As New Collection
Dim pPole()
Dim strX As String

Set ws = Worksheets("Skaly")
'zjisti, jestli tam vubec je filtr
If Not ws.AutoFilterMode Then
MsgBox "Na liste " & ws.Name & " neni zadny filtr"
Exit Sub
End If

'osahej oblast tabulky, pocet radku, prvni radek, prvni sloupec
'pocet radku tabulky
iRows = ws.AutoFilter.Range.Rows.Count
'prvni radek tabulky (doufam, ze zahlavi neobsahuje vice sloupcu nebo sloucene bunky!)
'ze radky tabulky bez zahlavi by mely zacinat na
iStartRow = ws.AutoFilter.Range.Cells(1).Row + 1
'kdyby ne, klidne to napis natvrdo iStart = 5
iStartCol = ws.AutoFilter.Range.Cells(1).Column

'napln kolekci (kvuli duplicitam)
On Error Resume Next 'pripadna duplicita vyhodi chybu, ale budeme ji ignorovat
For i = iStartRow To iStartRow + iRows - 2
cKol.Add Item:=CStr(Cells(i, "L").Value), Key:=CStr(Cells(i, "L").Value) 'budeme to tam davat jako string, proto CStr
Next i
On Error GoTo 0

'tak mame kolekci jedinecnych hodnot
'vsechno krome "2","-","AF" narveme do pole
For i = 1 To cKol.Count
strX = cKol(i)
If strX <> "2" And strX <> "-" And strX <> "AF" Then
j = j + 1
ReDim Preserve pPole(1 To j)
pPole(j) = strX
End If
Next i

'zafiltruj
ws.AutoFilter.Range.AutoFilter Field:=11, Criteria1:=pPole, Operator:=xlFilterValues

End Sub
citovat
#009846
avatar
diky moc, odpoledne to hned vyzkousim :)citovat
#009877
avatar
To Marjankaj: to me nenapadlo, je to dobrej napad, a udela rychle to co je zadany. Ale oklikou. Chtel bych se naucit ovladat dialog po filtru tabulky primo.
To Milan: Diky za tvuj code, funguje, ale neco tam je jeste divne. Za prvy kod nepozna ze na liste je filtr. Nevim proc, v tabulce3 je. Neva, tu cast kontroly jsem smazal a pak to jede dal a vyfiltruje pozadovane 3hodnoty ale zobrazi vsechny ostatni (coz odpovida tomu, ze si kod mysli ze tam filtr neni).
Budu rad, kdyz mi jeste napovis :)citovat
#009880
avatar
Nemôžeš priložiť súbor?
Stlpec "L" má poradové číslo 12.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