Advanced na filter at ilang magic

Para sa karamihan ng mga user ng Excel, kapag ang salitang "pag-filter ng data" ay lumabas sa kanilang ulo, tanging ang karaniwang klasikong filter mula sa tab. Data – Salain (Data — Filter):

Advanced na filter at ilang magic

Ang ganitong filter ay isang pamilyar na bagay, walang alinlangan, at para sa karamihan ng mga kaso ito ay gagawin. Gayunpaman, may mga sitwasyon kung kailan kailangan mong mag-filter ayon sa isang malaking bilang ng mga kumplikadong kundisyon sa ilang mga column nang sabay-sabay. Ang karaniwang filter dito ay hindi masyadong maginhawa at gusto ko ng mas malakas. Ang ganitong kasangkapan ay maaaring advanced na filter, lalo na sa isang maliit na "pagtatapos sa isang file" (ayon sa tradisyon).

Batayan

Upang makapagsimula, maglagay ng ilang walang laman na linya sa itaas ng iyong talahanayan ng data at kopyahin ang header ng talahanayan doon - ito ay magiging isang hanay na may mga kundisyon (naka-highlight sa dilaw para sa kalinawan):

Advanced na filter at ilang magic

Dapat mayroong kahit isang walang laman na linya sa pagitan ng mga dilaw na selula at orihinal na talahanayan.

Nasa mga dilaw na selula na kailangan mong ipasok ang pamantayan (kondisyon), ayon sa kung saan isasagawa ang pagsasala. Halimbawa, kung kailangan mong pumili ng mga saging sa Moscow "Auchan" sa III quarter, ang mga kondisyon ay magiging ganito:

Advanced na filter at ilang magic

Upang mag-filter, pumili ng anumang cell sa hanay na may source data, buksan ang tab data At i-click ang Bilang karagdagan (Data — Advanced). Sa window na bubukas, dapat na awtomatikong maipasok ang isang hanay na may data at kailangan lang nating tukuyin ang hanay ng mga kundisyon, ibig sabihin, A1:I2:

Advanced na filter at ilang magic

Pakitandaan na ang hanay ng mga kundisyon ay hindi maaaring ilaan "na may margin", ibig sabihin, hindi ka makakapili ng mga ekstrang walang laman na dilaw na linya, dahil ang isang walang laman na cell sa hanay ng mga kundisyon ay nakikita ng Excel bilang kawalan ng isang pamantayan, at isang buong walang laman. linya bilang isang kahilingan na ipakita ang lahat ng data nang walang pinipili.

lumipat Kopyahin ang resulta sa ibang lokasyon ay magbibigay-daan sa iyo na i-filter ang listahan na wala doon sa sheet na ito (tulad ng sa isang regular na filter), ngunit upang i-unload ang mga napiling mga hilera sa isa pang hanay, na pagkatapos ay kakailanganing tukuyin sa field Ilagay ang resulta sa hanay. Sa kasong ito, hindi namin ginagamit ang function na ito, umalis kami Nakalagay ang listahan ng filter at i-click ang OK. Ang mga napiling row ay ipapakita sa sheet:

Advanced na filter at ilang magic

Pagdaragdag ng Macro

"Well, saan ang kaginhawahan dito?" magtanong ka at tama ka. Hindi lamang kailangan mong magpasok ng mga kundisyon sa mga dilaw na selula gamit ang iyong mga kamay, ngunit buksan din ang isang dialog box, ilagay ang mga saklaw doon, pindutin ang OK. Malungkot, sumasang-ayon ako! Ngunit "nagbabago ang lahat kapag dumating sila ©" - mga macro!

Ang pagtatrabaho sa isang advanced na filter ay maaaring lubos na mapabilis at mapasimple gamit ang isang simpleng macro na awtomatikong tatakbo sa advanced na filter kapag ipinasok ang mga kundisyon, ibig sabihin, pagpapalit ng anumang dilaw na cell. Mag-right-click sa tab ng kasalukuyang sheet at piliin ang command Pinagmulan ng teksto (Source Code). Sa window na bubukas, kopyahin at i-paste ang sumusunod na code:

Pribadong Sub Worksheet_Change(ByVal Target Bilang Saklaw) Kung Hindi Mag-intersect(Target, Range("A2:I5")) Ay Wala Sa Error Ipagpatuloy ang Susunod na ActiveSheet.ShowAllData Range("A7").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange :=Range("A1"). CurrentRegion End If End Sub  

Awtomatikong tatakbo ang pamamaraang ito kapag binago ang anumang cell sa kasalukuyang worksheet. Kung ang address ng binagong cell ay nahuhulog sa dilaw na hanay (A2:I5), pagkatapos ay aalisin ng macro na ito ang lahat ng mga filter (kung mayroon man) at muling ilalapat ang pinalawak na filter sa source data table na nagsisimula sa A7, ibig sabihin, ang lahat ay mai-filter kaagad, kaagad. pagkatapos ipasok ang susunod na kondisyon:

Kaya lahat ay mas mahusay, tama? 🙂

Pagpapatupad ng mga kumplikadong query

Ngayon na ang lahat ay na-filter sa mabilisang, maaari tayong pumunta nang mas malalim sa mga nuances at i-disassemble ang mga mekanismo ng mas kumplikadong mga query sa advanced na filter. Bilang karagdagan sa paglalagay ng mga eksaktong tugma, maaari kang gumamit ng iba't ibang mga wildcard na character (* at ?) at mga palatandaan ng hindi pagkakapantay-pantay sa matematika sa isang hanay ng mga kundisyon upang ipatupad ang isang tinatayang paghahanap. Ang kaso ng karakter ay hindi mahalaga. Para sa kalinawan, na-summarize ko ang lahat ng posibleng opsyon sa isang talahanayan:

Saligan Resulta
gr* o gr lahat ng mga cell na nagsisimula sa GrIe Grtainga, Grbunga ng bunga, Granat at iba pa
= sibuyas lahat ng mga cell nang eksakto at tanging may salita Bogen, ibig sabihin, eksaktong tugma
*liv* o *liv mga cell na naglalaman ng liv paano salungguhitan, ibig sabihin Оlivna, livep, Ayon saliv at iba pa
=p*v mga salitang nagsisimula sa П at nagtatapos sa В ie Пunaв, Пeterв at iba pa
a*s mga salitang nagsisimula sa А at karagdagang naglalaman СIe Аpelсin, Аnanaс, Asai at iba pa
=*s mga salitang nagtatapos sa С
=???? lahat ng mga cell na may teksto ng 4 na character (mga titik o numero, kabilang ang mga puwang)
=m??????n lahat ng mga cell na may text na 8 character na nagsisimula sa М at nagtatapos sa НIe Мandariн, Мpag-aalaalaн  at iba pa
=*n??a lahat ng salitang nagtatapos sa А, nasaan ang ika-4 na titik mula sa dulo НIe Sinagнikа, Ayon saнozа at iba pa
>=e lahat ng salita na nagsisimula sa Э, Ю or Я
<>*o* lahat ng salita na walang letra О
<>*vich lahat ng salita maliban sa nagtatapos sa HIV (halimbawa, i-filter ang mga babae sa pamamagitan ng gitnang pangalan)
= lahat ng walang laman na mga cell
<> lahat ng walang laman na mga cell
> = 5000 lahat ng mga cell na may halagang higit sa o katumbas ng 5000
5 o =5 lahat ng mga cell na may halaga 5
>=3/18/2013 lahat ng mga cell na may petsa pagkatapos ng Marso 18, 2013 (kasama)

Mga banayad na puntos:

  • Ang * sign ay nangangahulugang anumang bilang ng anumang mga character, at ? - kahit sinong karakter.
  • Ang lohika sa pagproseso ng text at mga numeric na query ay bahagyang naiiba. Kaya, halimbawa, ang isang cell ng kondisyon na may numero 5 ay hindi nangangahulugang hanapin ang lahat ng mga numero na nagsisimula sa lima, ngunit ang isang cell ng kundisyon na may titik B ay katumbas ng B*, ibig sabihin, hahanapin ang anumang teksto na nagsisimula sa titik B.
  • Kung ang text query ay hindi nagsisimula sa = sign, maaari mong ilagay sa isip ang * sa dulo.
  • Ang mga petsa ay dapat ilagay sa US na format buwan-araw-taon at sa pamamagitan ng isang fraction (kahit na mayroon kang Excel at mga panrehiyong setting).

Lohikal na connective AT-O

Ang mga kundisyong nakasulat sa iba't ibang mga cell, ngunit sa parehong linya, ay itinuturing na magkakaugnay ng isang lohikal na operator И (AT):

Advanced na filter at ilang magic

Yung. i-filter ang mga saging para sa akin sa ikatlong quarter, tiyak sa Moscow at sa parehong oras mula sa Auchan.

Kung kailangan mong i-link ang mga kundisyon sa isang lohikal na operator OR (OR), pagkatapos ay kailangan lang nilang ipasok sa iba't ibang linya. Halimbawa, kung kailangan nating hanapin ang lahat ng mga order ng manager na si Volina para sa mga peach ng Moscow at lahat ng mga order para sa mga sibuyas sa ikatlong quarter sa Samara, maaari itong matukoy sa isang hanay ng mga kundisyon tulad ng sumusunod:

Advanced na filter at ilang magic

Kung kailangan mong magpataw ng dalawa o higit pang kundisyon sa isang column, maaari mong i-duplicate lang ang header ng column sa hanay ng pamantayan at ilagay ang pangalawa, pangatlo, atbp. sa ilalim nito. mga tuntunin. Kaya, halimbawa, maaari mong piliin ang lahat ng mga transaksyon mula Marso hanggang Mayo:

Advanced na filter at ilang magic

Sa pangkalahatan, pagkatapos ng "pagtatapos gamit ang isang file", ang isang advanced na filter ay lumalabas na isang disenteng tool, sa ilang mga lugar na hindi mas masahol pa kaysa sa isang klasikong autofilter.

  • Superfilter sa mga macro
  • Ano ang mga macro, kung saan at paano ipasok ang macro code sa Visual Basic
  • Mga matalinong talahanayan sa Microsoft Excel

Mag-iwan ng Sagot