Girêdana nivîsê li gorî şertê

Min berê nivîsand ku hûn çawa dikarin zû nivîsê ji çend hucreyan bixin nav yek û, berevajî vê, rêzek nivîsê ya dirêj li pêkhateyan pars bikin. Naha em li peywirek nêzik, lê hinekî tevlihevtir binihêrin - meriv çawa nivîsê ji çend hucreyan zeliqîne dema ku şertek diyarkirî pêk tê. 

Ka em bibêjin ku databasek me ya xerîdaran heye, ku navê yek pargîdanî dikare bi çend e-nameyên cûda yên karmendên xwe re têkildar be. Erka me ev e ku em hemî navnîşanan li gorî navên pargîdanî berhev bikin û wan bi hev ve girêdin (bi commas an nîvcolonan têne veqetandin) da ku, mînakî, navnîşek posteyê ji xerîdaran re çêbikin, ango encamek mîna:

Girêdana nivîsê li gorî şertê

Bi gotineke din, ji me re amûrek pêdivî ye ku dê nivîsê li gorî şertê zeliqîne (girê bide) - analogek fonksiyonê. SUMMESLI (SUMIF), lê ji bo nivîsê.

Rêbaz 0. Formula

Ne pir elegant, lê awayê herî hêsan e. Hûn dikarin formulek hêsan binivîsin ku dê kontrol bike ka pargîdaniya di rêza paşîn de ji ya berê cûda dibe yan na. Ger ew cûda nebe, wê hingê navnîşana paşîn a ku ji hêla komê ve hatî veqetandin, bixin. Ger ew cûda be, wê hingê em berhevkirî "ji nû ve vedigirin" û ji nû ve dest pê dikin:

Girêdana nivîsê li gorî şertê

Dezawantajên vê nêzîkatiyê diyar in: ji hemî hucreyên stûna zêde ya ku hatine wergirtin, ji bo her pargîdanî tenê yên paşîn hewce ne (zer). Ger navnîş mezin e, wê hingê ji bo ku hûn zû wan hilbijêrin, hûn neçar in ku stûnek din bi karanîna fonksiyonê zêde bikin DLSTR (LEN), kontrolkirina dirêjahiya rêzikên berhevkirî:

Girêdana nivîsê li gorî şertê

Naha hûn dikarin yên fîlter bikin û ji bo karanîna pêvetir zeliqandina navnîşana pêwîst kopî bikin.

Rêbaz 1. Makrofonksiyona zeliqandinê bi yek şertê

Ger navnîşa orîjînal ji hêla pargîdaniyê ve neyê rêve kirin, wê hingê formula hêsan a jor nexebite, lê hûn dikarin bi hêsanî bi fonksiyonek xwerû ya piçûk a di VBA de bigerin. Bi tikandina kurtebirra klavyeyê ve Edîtorê Visual Basic vekin Alt + F11 an bişkojka bi kar tînin Visual Basic tab pêşvebirinê (pêşdebir). Di pencereya ku vedibe de, modulek nû ya vala têxe nav menuyê Têxe - Modul û nivîsa fonksiyona me li wir kopî bikin:

Fonksiyon MergeIf(Range Text Wek Range, Search Range Wek Range, Condition Wek String) Dim Delimeter As String, i As Long Delimeter = ", " zeliqandin hevdu ne - em bi xeletiyek derdikevin Ger SearchRange.Count <> TextRange.Count Dûv re MergeIf = CVERr(xlErrRef) Fonksiyon Derketin Dawî ye Heke 'ji hemî şaneyan re derbas bibe, şertê kontrol bike û nivîsê di guhêrbara OutText de berhev bike Ji bo i = 1 Bo Search Range. Cells.Count Ger SearchRange.Cells(i) Like Condition Paşê OutText = OutText & TextRange.Cells(i) & Delimeter Piştre ez 'encaman bêyî veqetandina dawîn nîşan didim MergeIf = Çep(OutText, Len(OutText) - Len(Delimeter)) Dawî karkirin  

Ger hûn niha vegerin Microsoft Excel, wê hingê di navnîşa fonksiyonan de (bişkojk fx di barika formula an tabloyê de Formul - Fonksiyon Têxe) dê gengaz be ku fonksiyona me were dîtin MergeIf di kategoriyê de Bikarhêner Diyar kirin (Bikarhêner diyarkirî). Argumanên fonksiyonê wiha ne:

Girêdana nivîsê li gorî şertê

Rêbaz 2. Bi şertê nerast ve nivîsê li hev bixin

Ger em di rêza 13-an a makroya xwe de karaktera yekem biguhezînin = ji bo operatorê maçê ya texmînî Çawa, wê hingê dê gengaz be ku meriv bi pîvana hilbijartinê re bi berhevdana nerast a daneya destpêkê ve zeliqandinê pêk bîne. Mînakî, heke navê pargîdanî di cûrbecûr cûrbecûr de were nivîsandin, wê hingê em dikarin hemî bi yek fonksiyonê kontrol bikin û berhev bikin:

Girêdana nivîsê li gorî şertê

Kartên çolê yên standard têne piştgirî kirin:

  • stêrk (*) - hejmareke her tîpan (nebûna wan jî tê de) nîşan dide.
  • nîşana pirsê (?) - ji bo her karakterek yekane radiweste
  • Nîşana pound (#) - ji bo yek reqemê radiweste (0-9)

Ji hêla xwerû ve, operatorê Like hesas e, ango, wek nimûne, "Orion" û "orion" wekî pargîdaniyên cihêreng fam dike. Ji bo paşguhkirina dozê, hûn dikarin rêzê di destpêka modulê de di edîtorê Visual Basic de zêde bikin Vebijêrk Compare Text, ya ku dê biguhere Like ji bo bêhesasiya dozê.

Bi vî rengî, hûn dikarin ji bo şert û mercên kontrolê maskên pir tevlihev çêkin, mînakî:

  • ?1##??777RUS - Hilbijartina hemî lewheyên lîsansên herêma 777, bi 1-ê dest pê dike
  • LLC * - hemî pargîdaniyên ku navê wan bi LLC dest pê dike
  • ##7## - hemî hilberên bi kodek dîjîtal a pênc-hejmar, ku reqema sêyemîn 7 e
  • ????? - hemû navên pênc tîpan û hwd.

Rêbaz 3. Fonksiyona makro ji bo zeliqandina nivîsê di bin du şertan de

Di xebatê de dibe ku pirsgirêkek hebe dema ku hûn hewce ne ku nivîsê ji yek mercan zêdetir girêdin. Mînakî, em bifikirin ku di tabloya meya berê de, stûnek din a bi bajêr re hate zêdekirin, û divê zeliqandin ne tenê ji bo pargîdaniyek diyarkirî, lê ji bo bajarek diyar jî were kirin. Di vê rewşê de, fonksiyona me pêdivî ye ku bi lêzêdekirina kontrolek rêzek din li wê hinekî nûjen bibe:

Fonksiyon MergeIfs (Range Nivîsar Wekî Rêze, Rêjeya Lêgerîn1 Wekî Rêze, Rewş1 Wekî Rêze, Rêzeya Lêgerîn2 Wekî Rêze, Rewş2 Wekî String) Dim Deliimeter Wek String, i As Long Delimeter = ", " 'karakterên veqetandî (dikare bi cih an jî ; hwd.) e.) 'eger rêzikên erêkirin û zeliqandinê ne wek hev bin, bi xeletiyekê derkevin Ger SearchRange1.Count <> TextRange.Count An SearchRange2.Count <> TextRange.Count Hingê MergeIfs = CVERr(xlErrRef) Fonksiyon Derkeve Biqede Ger 'di nav hemî şaneyan re derbas bibin, hemî şert û mercan kontrol bikin û nivîsê di guhêrbara OutText de kom bikin Ji bo i = 1 Ji SearchRange1.Cells.Count Heke SearchRange1.Cells(i) = Şert1 Û SearchRange2.Cells(i) = Şert2 Paşê OutText = OutText & TextRange.Cells(i) & Delimeter End Heger Paşê ez 'encaman bêyî veqetandina dawîn nîşan bidim MergeIfs = Çep(OutText, Len(OutText) - Len(Delimeter)) Fonksiyona Dawî  

Ew ê tam bi heman rengî were sepandin - tenê arguman niha hewce ne ku bêtir bêne destnîşan kirin:

Girêdana nivîsê li gorî şertê

Rêbaz 4. Komkirin û zeliqandin di Power Query de

Heke hûn pêveka Power Query ya belaş bikar bînin hûn dikarin pirsgirêkê bêyî bernamekirinê di VBA-yê de çareser bikin. Ji bo Excel 2010-2013 ew dikare li vir were dakêşandin, û di Excel 2016 de ew jixwe ve hatî çêkirin. Rêzeya çalakiyan dê wiha be:

Power Query nizane meriv çawa bi tabloyên birêkûpêk re bixebite, ji ber vê yekê gava yekem ev e ku em maseya xwe veguherînin "aqilmend". Ji bo kirina vê yekê, wê hilbijêrin û bi hev re bikirtînin Ctrl+T an jî ji tabê hilbijêrin Mal - Wek tabloyê format bikin (Mal - Format wek Tablo). Li ser tabloya ku paşê xuya dibe Kêrker (Mînakkirin) hûn dikarin navê maseyê destnîşan bikin (min standard hiştin Table 1):

Girêdana nivîsê li gorî şertê

Naha em tabloya xwe di pêveka Power Query de bar bikin. Ji bo vê yekê, li ser tabê Jimare (heke we Excel 2016 heye) an li ser tabloya Power Query (heke we Excel 2010-2013 heye) bikirtînin Ji sifrê (Daneyên - Ji Tabloyê):

Girêdana nivîsê li gorî şertê

Di pencereya edîtorê pirsê ya ku vedibe, bi tikandina sernavê stûnê hilbijêrin şîrket û pêl bişkoka li jor Kom (Koma By). Navê stûna nû û celebê xebatê di komê de binivîse - Hemû xetên (Hemû Rêz):

Girêdana nivîsê li gorî şertê

OK bikirtînin û em ji bo her pargîdaniyek mînî-tabloyek nirxên komkirî digirin. Naveroka tabloyan bi zelalî xuya dibe heke hûn li stûna encam li ser paşxaneya spî ya hucreyan (ne li ser nivîsê!) çepê bikirtînin:

Girêdana nivîsê li gorî şertê

Naha em stûnek din lê zêde bikin, li ku derê, bi karanîna fonksiyonê, em naveroka stûnên Navnîşanê di her mini-tabloyan de, ku bi koman têne veqetandin, zeliqînin. Ji bo vê yekê, li ser tabê Stûnê zêde bikin em çap dikin Stûna Custom (Stûn lê zêde bike - Stûna xwerû) û di pencereya ku xuya dibe de, navê stûna nû û formula hevgirtinê bi zimanê M-ya ku di Power Query de hatî çêkirin binivîse:

Girêdana nivîsê li gorî şertê

Bala xwe bidinê ku hemî fonksiyonên M-ê hesas in (bervajî Excel). Piştî tikandina li ser OK em stûnek nû ya bi navnîşanên pêçandî digirin:

Girêdana nivîsê li gorî şertê

Dimîne ku stûna jixwe nepêwist were rakirin Navnîşanên Table (li ser sernavê rast bikirtînin) Stûna jêbirin) û bi tikandina li ser tabê encaman li ser pelê bar bikin Mal - Girtin û dakêşin (Mal - Girtin û barkirin):

Girêdana nivîsê li gorî şertê

Nuqteya girîng: Berevajî rêbazên berê (fonksiyonên), tabloyên ji Power Query bixweber nayên nûve kirin. Ger di pêşerojê de dê di daneyên çavkaniyê de guhertin çêbibin, wê hingê hûn hewce ne ku li cîhê tabloya encamê rast-klîk bikin û fermanê hilbijêrin. Nûvekirin & Save (Hênikkirin).

  • Meriv çawa rêzek nivîsê ya dirêj li beşan dabeş dike
  • Çend awayên zeliqandina nivîsê ji şaneyên cihê li yek
  • Bikaranîna operatora Like ji bo ceribandina nivîsê li hember maskek

Leave a Reply