शर्त अनुसार पाठ बन्धन

मैले पहिले नै लेखेको छु कि कसरी तपाईले धेरै कक्षहरूबाट पाठलाई द्रुत रूपमा एकमा टाँस्न सक्नुहुन्छ र यसको विपरीत, लामो पाठ स्ट्रिङलाई घटकहरूमा पार्स गर्नुहोस्। अब नजिकको, तर अलि बढी जटिल कार्यलाई हेरौं - एक निश्चित निर्दिष्ट अवस्था पूरा हुँदा धेरै कक्षहरूबाट पाठलाई कसरी गोंद गर्ने। 

मानौं कि हामीसँग ग्राहकहरूको डाटाबेस छ, जहाँ एक कम्पनीको नामले आफ्ना कर्मचारीहरूको धेरै फरक इमेलहरूसँग मेल खान्छ। हाम्रो कार्य भनेको कम्पनीको नामहरूद्वारा सबै ठेगानाहरू सङ्कलन गर्ने र तिनीहरूलाई (अल्पविराम वा अर्धविरामद्वारा छुट्याइएको) बनाउनको लागि हो, उदाहरणका लागि, ग्राहकहरूको लागि मेलिङ सूची, जस्तै आउटपुट प्राप्त गर्नुहोस्:

शर्त अनुसार पाठ बन्धन

अर्को शब्दमा भन्नुपर्दा, हामीलाई एउटा उपकरण चाहिन्छ जसले सर्त अनुसार पाठलाई ग्लु (लिङ्क) गर्नेछ - प्रकार्यको एनालग। सुमेस्ली (SUMIF), तर पाठको लागि।

विधि ०. सूत्र

धेरै सुरुचिपूर्ण छैन, तर सजिलो तरिका। तपाईले एउटा साधारण सूत्र लेख्न सक्नुहुन्छ जसले अर्को पङ्क्तिमा रहेको कम्पनी अघिल्लो भन्दा फरक छ कि छैन भनेर जाँच गर्नेछ। यदि यो फरक छैन भने, त्यसपछि अल्पविराम द्वारा विभाजित अर्को ठेगाना गोंद। यदि यो फरक छ भने, हामी संचित "रिसेट" गर्छौं, फेरि सुरु गर्दै:

शर्त अनुसार पाठ बन्धन

यस दृष्टिकोणको बेफाइदाहरू स्पष्ट छन्: प्राप्त अतिरिक्त स्तम्भको सबै कक्षहरूबाट, हामीलाई प्रत्येक कम्पनी (पहेंलो) को लागि मात्र अन्तिम चाहिन्छ। यदि सूची ठूलो छ भने, त्यसपछि तिनीहरूलाई छिट्टै चयन गर्न, तपाईंले प्रकार्य प्रयोग गरेर अर्को स्तम्भ थप्नु पर्छ DLSTR (लेन), संचित तारहरूको लम्बाइ जाँच गर्दै:

शर्त अनुसार पाठ बन्धन

अब तपाइँ तीहरूलाई फिल्टर गर्न सक्नुहुन्छ र थप प्रयोगको लागि आवश्यक ठेगाना gluing प्रतिलिपि गर्न सक्नुहुन्छ।

विधि 1. एक शर्त द्वारा ग्लुइङ को म्याक्रोफंक्शन

यदि मूल सूची कम्पनी द्वारा क्रमबद्ध गरिएको छैन भने, माथिको सरल सूत्रले काम गर्दैन, तर तपाइँ सजिलैसँग VBA मा एक सानो अनुकूलन प्रकार्यको साथ वरिपरि जान सक्नुहुन्छ। किबोर्ड सर्टकट थिचेर भिजुअल बेसिक सम्पादक खोल्नुहोस् Alt + F11 वा बटन प्रयोग गरेर दृश्य मूल ट्याब विकासकर्ता (विकासकर्ता)। खुल्ने विन्डोमा, मेनु मार्फत नयाँ खाली मोड्युल घुसाउनुहोस् घुसाउनुहोस् - मोड्युल र त्यहाँ हाम्रो प्रकार्यको पाठ प्रतिलिपि गर्नुहोस्:

प्रकार्य MergeIf(TextRange as रेंज, SearchRange as Condition, Condition as String) Dim Delimeter as Long Delimeter = ", " gluings एकअर्कासँग बराबर छैनन् - यदि SearchRange.Count <> TextRange.Count भने हामी त्रुटिको साथ बाहिर निस्कन्छौं। त्यसपछि MergeIf = CVErr(xlErrRef) Exit Function End If 'सबै सेलहरू मार्फत जानुहोस्, अवस्था जाँच गर्नुहोस् र चरमा पाठ सङ्कलन गर्नुहोस् OutText For i = 1 को लागि SearchRange। Cells.Count यदि SearchRange.Cells(i) सर्त मन पर्यो भने OutText = OutText र TextRange.Cells(i) र Delimeter Next i 'अन्तिम डेलिमिटर बिना परिणामहरू देखाउनुहोस् मर्जIf = Left(OutText, Len(OutText) - Len(Delimeter)) End समारोह  

यदि तपाइँ अब Microsoft Excel मा फर्कनुभयो भने, त्यसपछि प्रकार्यहरूको सूचीमा (बटन fx सूत्र पट्टी वा ट्याबमा सूत्रहरू - प्रकार्य घुसाउनुहोस्) यो हाम्रो प्रकार्य फेला पार्न सम्भव हुनेछ मर्ज यदि श्रेणी मा प्रयोगकर्ता परिभाषित (प्रयोगकर्ता परिभाषित)। प्रकार्यका तर्कहरू निम्नानुसार छन्:

शर्त अनुसार पाठ बन्धन

विधि २. अयोग्य अवस्थाद्वारा पाठ जोड्नुहोस्

यदि हामीले हाम्रो म्याक्रोको 13 औं लाइनमा पहिलो क्यारेक्टर बदल्छौं = अनुमानित मिलान अपरेटरलाई जस्तै, त्यसपछि चयन मापदण्ड संग प्रारम्भिक डाटा को एक अयोग्य मिलान द्वारा gluing गर्न सम्भव हुनेछ। उदाहरणका लागि, यदि कम्पनीको नाम विभिन्न भेरियन्टहरूमा लेख्न सकिन्छ, तब हामी ती सबैलाई एउटै प्रकार्यको साथ जाँच गर्न र सङ्कलन गर्न सक्छौं:

शर्त अनुसार पाठ बन्धन

मानक वाइल्डकार्डहरू समर्थित छन्:

  • तारा चिन्ह (*) - कुनै पनि वर्णहरूको संख्यालाई जनाउँछ (तिनीहरूको अनुपस्थिति सहित)
  • प्रश्न चिन्ह (?) - कुनै एकल वर्णको लागि खडा हुन्छ
  • पाउन्ड चिन्ह (#) - कुनै एक अंक (०-९) को लागि खडा हुन्छ

पूर्वनिर्धारित रूपमा, लाइक अपरेटर केस सेन्सेटिभ हुन्छ, उदाहरणका लागि, "ओरियन" र "ओरियन" फरक कम्पनीहरूको रूपमा बुझ्दछ। केसलाई बेवास्ता गर्न, तपाईंले भिजुअल बेसिक सम्पादकमा मोड्युलको सुरुमा लाइन थप्न सक्नुहुन्छ। विकल्प पाठ तुलना गर्नुहोस्, जसले केस असंवेदनशील हुन लाइक स्विच गर्नेछ।

यस तरिकामा, तपाइँ अवस्थाहरू जाँच गर्नको लागि धेरै जटिल मास्कहरू रचना गर्न सक्नुहुन्छ, उदाहरणका लागि:

  • ?1##?? 777RUS - 777 क्षेत्रका सबै लाइसेन्स प्लेटहरूको चयन, 1 बाट सुरु
  • LLC* - सबै कम्पनीहरू जसको नाम LLC बाट सुरु हुन्छ
  • ##7## – पाँच-अंकको डिजिटल कोड भएका सबै उत्पादनहरू, जहाँ तेस्रो अंक 7 हो
  • ?????? - पाँच अक्षरका सबै नामहरू, आदि।

विधि 3. दुई सर्तहरूमा पाठ ग्लुइङको लागि म्याक्रो प्रकार्य

काममा त्यहाँ समस्या हुन सक्छ जब तपाइँ एक भन्दा बढी सर्त पाठ लिङ्क गर्न आवश्यक छ। उदाहरणका लागि, हामी कल्पना गरौं कि हाम्रो अघिल्लो तालिकामा, शहरको साथ एक थप स्तम्भ थपिएको थियो, र ग्लुइङ दिइएको कम्पनीको लागि मात्र होइन, तर दिइएको शहरको लागि पनि। यस अवस्थामा, हाम्रो प्रकार्यलाई यसमा अर्को दायरा जाँच थपेर थोरै आधुनिकीकरण गर्नुपर्नेछ:

प्रकार्य MergeIfs(TextRange as दायरा, SearchRange1 दायराको रूपमा, Condition1 String को रूपमा, SearchRange2 दायराको रूपमा, Condition2 String को रूपमा) Dim Delimeter as String, i As Long Delimeter = "," 'delimiter characters (space वा ; etc संग प्रतिस्थापन गर्न सकिन्छ) e.) 'यदि प्रमाणीकरण र ग्लुइंग दायराहरू एकअर्कासँग बराबर छैनन् भने, त्रुटिको साथ बाहिर निस्कनुहोस् यदि SearchRange1.Count <> TextRange.Count वा SearchRange2.Count <> TextRange.Count त्यसपछि MergeIfs = CVErr(xlErrRef) प्रकार्य अन्त्य गर्नुहोस् यदि 'सबै कक्षहरू मार्फत जानुहोस्, सबै सर्तहरू जाँच गर्नुहोस् र पाठ सङ्कलन गर्नुहोस् आउटटेक्स्टको लागि i = 1 बाट SearchRange1.Cells.Count यदि SearchRange1.Cells(i) = Condition1 र SearchRange2.Cells(i) = सर्त २ त्यसपछि OutText = OutText & TextRange.Cells(i) र Delimeter End यदि Next i 'अन्तिम डेलिमिटर बिना परिणामहरू देखाउँछ MergeIfs = Left(OutText, Len(OutText) - Len(Delimeter)) End function  

यो ठ्याक्कै उही तरिकामा लागू हुनेछ - केवल तर्कहरू अब थप निर्दिष्ट गर्न आवश्यक छ:

शर्त अनुसार पाठ बन्धन

विधि ४. पावर क्वेरीमा समूहबद्ध र ग्लुइङ

यदि तपाइँ नि:शुल्क पावर क्वेरी एड-इन प्रयोग गर्नुहुन्छ भने तपाइँ VBA मा प्रोग्रामिङ बिना समस्या समाधान गर्न सक्नुहुन्छ। एक्सेल 2010-2013 को लागि यो यहाँ डाउनलोड गर्न सकिन्छ, र एक्सेल 2016 मा यो पहिले नै पूर्वनिर्धारित रूपमा निर्मित छ। कार्यहरूको क्रम निम्नानुसार हुनेछ:

पावर क्वेरीलाई नियमित तालिकाहरूसँग कसरी काम गर्ने भनेर थाहा छैन, त्यसैले पहिलो चरण भनेको हाम्रो तालिकालाई "स्मार्ट" मा परिणत गर्नु हो। यो गर्नका लागि, यसलाई चयन गर्नुहोस् र संयोजन थिच्नुहोस् Ctrl+T वा ट्याबबाट चयन गर्नुहोस् गृह - तालिकाको रूपमा ढाँचा (घर - तालिकाको रूपमा ढाँचा)। त्यसपछि देखा पर्ने ट्याबमा कन्स्ट्रक्टर (डिजाईन) तपाईले तालिकाको नाम सेट गर्न सक्नुहुन्छ (मैले मानक छोडेको छु तालिका 1):

शर्त अनुसार पाठ बन्धन

अब पावर क्वेरी एड-इनमा हाम्रो तालिका लोड गरौं। यो गर्नको लागि, ट्याबमा तथ्याङ्क (यदि तपाईंसँग एक्सेल 2016 छ) वा पावर क्वेरी ट्याबमा (यदि तपाईंसँग एक्सेल 2010-2013 छ भने) क्लिक गर्नुहोस्। टेबुलबाट (डेटा - तालिकाबाट):

शर्त अनुसार पाठ बन्धन

खुल्ने क्वेरी सम्पादक विन्डोमा, हेडरमा क्लिक गरेर स्तम्भ चयन गर्नुहोस् कम्पनी र माथिको बटन थिच्नुहोस् समूह (समूह द्वारा)। नयाँ स्तम्भको नाम र समूहमा सञ्चालनको प्रकार प्रविष्ट गर्नुहोस् - सबै रेखाहरू (सबै पङ्क्तिहरू):

शर्त अनुसार पाठ बन्धन

ठीक क्लिक गर्नुहोस् र हामी प्रत्येक कम्पनीको लागि समूहबद्ध मानहरूको एक मिनी-तालिका पाउँछौं। यदि तपाईंले परिणामको स्तम्भमा कक्षहरूको सेतो पृष्ठभूमिमा (पाठमा होइन!) बायाँ-क्लिक गर्नुभयो भने तालिकाका सामग्रीहरू स्पष्ट रूपमा देखिने छन्:

शर्त अनुसार पाठ बन्धन

अब एउटा थप स्तम्भ थपौं, जहाँ, प्रकार्य प्रयोग गरेर, हामी प्रत्येक मिनी-टेबलमा ठेगाना स्तम्भहरूको सामग्रीलाई अल्पविरामद्वारा छुट्याउँछौं। यो गर्नको लागि, ट्याबमा स्तम्भ थप्नुहोस् हामी प्रेस अनुकूलन स्तम्भ (स्तम्भ थप्नुहोस् — अनुकूलन स्तम्भ) र देखा पर्ने विन्डोमा, पावर क्वेरीमा निर्मित M भाषामा नयाँ स्तम्भको नाम र युग्मन सूत्र प्रविष्ट गर्नुहोस्:

शर्त अनुसार पाठ बन्धन

ध्यान दिनुहोस् कि सबै M- प्रकार्यहरू केस सेन्सेटिभ हुन्छन् (एक्सेलको विपरीत)। क्लिक गरेपछि OK हामीले टाँसिएको ठेगानाको साथ नयाँ स्तम्भ पाउँछौं:

शर्त अनुसार पाठ बन्धन

यो पहिले नै अनावश्यक स्तम्भ हटाउन बाँकी छ तालिका ठेगानाहरू (शीर्षकमा दायाँ क्लिक गर्नुहोस्) स्तम्भ मेटाउनुहोस्) र ट्याबमा क्लिक गरेर परिणामहरू पानामा अपलोड गर्नुहोस् घर - बन्द गर्नुहोस् र डाउनलोड गर्नुहोस् (घर - बन्द र लोड):

शर्त अनुसार पाठ बन्धन

महत्त्वपूर्ण nuance: अघिल्लो विधिहरू (कार्यहरू) विपरीत, पावर क्वेरीबाट तालिकाहरू स्वचालित रूपमा अद्यावधिक हुँदैनन्। यदि भविष्यमा स्रोत डेटामा कुनै परिवर्तनहरू हुनेछन् भने, त्यसपछि तपाईंले परिणाम तालिकामा जहाँ पनि दायाँ क्लिक गर्न आवश्यक छ र आदेश चयन गर्नुहोस्। अद्यावधिक र बचत गर्नुहोस् (रिफ्रेस).

  • लामो पाठ स्ट्रिङलाई भागहरूमा कसरी विभाजन गर्ने
  • विभिन्न कक्षहरूबाट पाठलाई एउटामा जोड्ने धेरै तरिकाहरू
  • मास्क विरुद्ध पाठ परीक्षण गर्न लाइक अपरेटर प्रयोग गर्दै

जवाफ छाड्नुस्