Contents
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:
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:
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î:
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:
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:
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:
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):
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ê):
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):
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:
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:
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:
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):
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