நிபந்தனையின்படி உரை பிணைப்பு

பல கலங்களிலிருந்து உரையை எவ்வாறு விரைவாக ஒட்டலாம் என்பது பற்றி நான் ஏற்கனவே எழுதியுள்ளேன், மாறாக, ஒரு நீண்ட உரை சரத்தை கூறுகளாக அலசலாம். இப்போது ஒரு நெருக்கமான, ஆனால் சற்று சிக்கலான பணியைப் பார்ப்போம் - ஒரு குறிப்பிட்ட நிபந்தனையை பூர்த்தி செய்யும் போது பல கலங்களிலிருந்து உரையை ஒட்டுவது எப்படி. 

எங்களிடம் வாடிக்கையாளர்களின் தரவுத்தளம் உள்ளது என்று வைத்துக்கொள்வோம், அங்கு ஒரு நிறுவனத்தின் பெயர் அதன் ஊழியர்களின் பல்வேறு மின்னஞ்சல்களுக்கு ஒத்திருக்கும். எங்களின் பணி, நிறுவனத்தின் பெயர்கள் மூலம் அனைத்து முகவரிகளையும் சேகரித்து அவற்றை (காற்புள்ளிகள் அல்லது அரைக்காற்புள்ளிகளால் பிரிக்கப்பட்டவை) இணைப்பது, எடுத்துக்காட்டாக, வாடிக்கையாளர்களுக்கான அஞ்சல் பட்டியலை உருவாக்குவது, அதாவது வெளியீட்டைப் பெறுவது:

நிபந்தனையின்படி உரை பிணைப்பு

வேறு வார்த்தைகளில் கூறுவதானால், நிபந்தனைக்கு ஏற்ப உரையை ஒட்டும் (இணைக்கும்) ஒரு கருவி நமக்குத் தேவை - செயல்பாட்டின் அனலாக் சம்மேஸ்லி (SUMIF), ஆனால் உரைக்கு.

முறை 0. சூத்திரம்

மிகவும் நேர்த்தியானதல்ல, ஆனால் எளிதான வழி. நீங்கள் ஒரு எளிய சூத்திரத்தை எழுதலாம், இது அடுத்த வரிசையில் உள்ள நிறுவனம் முந்தையதை விட வேறுபட்டதா என்பதைச் சரிபார்க்கும். அது வேறுபடவில்லை என்றால், கமாவால் பிரிக்கப்பட்ட அடுத்த முகவரியை ஒட்டவும். இது வேறுபட்டால், திரட்டப்பட்டதை "மீட்டமைக்கிறோம்", மீண்டும் தொடங்குகிறோம்:

நிபந்தனையின்படி உரை பிணைப்பு

இந்த அணுகுமுறையின் தீமைகள் வெளிப்படையானவை: பெறப்பட்ட கூடுதல் நெடுவரிசையின் அனைத்து கலங்களிலிருந்தும், ஒவ்வொரு நிறுவனத்திற்கும் (மஞ்சள்) கடைசியாக மட்டுமே நமக்குத் தேவை. பட்டியல் பெரியதாக இருந்தால், அவற்றை விரைவாகத் தேர்ந்தெடுக்க, செயல்பாட்டைப் பயன்படுத்தி மற்றொரு நெடுவரிசையைச் சேர்க்க வேண்டும் DLSTR (LEN), திரட்டப்பட்ட சரங்களின் நீளத்தை சரிபார்க்கிறது:

நிபந்தனையின்படி உரை பிணைப்பு

இப்போது நீங்கள் அவற்றை வடிகட்டலாம் மற்றும் மேலும் பயன்படுத்த தேவையான முகவரியை ஒட்டலாம்.

முறை 1. ஒரு நிபந்தனை மூலம் ஒட்டுதல் மேக்ரோஃபங்க்ஷன்

அசல் பட்டியல் நிறுவனத்தால் வரிசைப்படுத்தப்படவில்லை என்றால், மேலே உள்ள எளிய சூத்திரம் வேலை செய்யாது, ஆனால் நீங்கள் VBA இல் ஒரு சிறிய தனிப்பயன் செயல்பாட்டை எளிதாகப் பெறலாம். விசைப்பலகை குறுக்குவழியை அழுத்துவதன் மூலம் விஷுவல் பேசிக் எடிட்டரைத் திறக்கவும் Alt + F11 அல்லது பொத்தானைப் பயன்படுத்தி விஷுவல் பேசிக் தாவல் மேம்பாட்டாளர் (டெவலப்பர்). திறக்கும் சாளரத்தில், மெனு மூலம் புதிய வெற்று தொகுதியைச் செருகவும் செருகு - தொகுதி எங்கள் செயல்பாட்டின் உரையை நகலெடுக்கவும்:

Function MergeIf(TextRange as Range, SearchRange as Range, Condition as Range) Dim Delimeter as Long Delimeter = ", " gluings ஒன்றுக்கொன்று சமமாக இல்லை - SearchRange.Count <> TextRange.Count என்றால் பிழையுடன் வெளியேறுகிறோம். பிறகு MergeIf = CVErr(xlErrRef) Exit Function End 'அனைத்து செல்கள் வழியாகச் சென்றால், நிபந்தனையைச் சரிபார்த்து, தேடல் வரம்பிற்கான i = 1 க்கு OutText என்ற மாறியில் உரையைச் சேகரிக்கவும். Cells.Cells.Count என்றால் SearchRange.Cells(i) Condition போல் இருந்தால் OutText = OutText & TextRange.Cells(i) & Delimeter அடுத்து i 'கடைசி டிலிமிட்டர் இல்லாமல் முடிவுகளைக் காண்பி MergeIf = Left(OutText, Len(OutText) - Len(Delimeter)) செயல்பாடு  

நீங்கள் இப்போது மைக்ரோசாஃப்ட் எக்செல் க்கு திரும்பினால், செயல்பாடுகளின் பட்டியலில் (பொத்தான் fx சூத்திரப் பட்டியில் அல்லது தாவலில் சூத்திரங்கள் - செயல்பாட்டைச் செருகவும்) எங்கள் செயல்பாட்டைக் கண்டறிய முடியும் MergeIf பிரிவில் பயனர் வரையறுத்த (பயனர் வரையறுத்த). செயல்பாட்டிற்கான வாதங்கள் பின்வருமாறு:

நிபந்தனையின்படி உரை பிணைப்பு

முறை 2. துல்லியமற்ற நிலையில் உரையை இணைக்கவும்

நமது மேக்ரோவின் 13வது வரியில் முதல் எழுத்தை மாற்றினால் = தோராயமான மேட்ச் ஆபரேட்டருக்கு போன்ற, பின்னர் தேர்வு அளவுகோலுடன் ஆரம்ப தரவுகளின் தவறான பொருத்தத்தின் மூலம் ஒட்டுதலை மேற்கொள்ள முடியும். எடுத்துக்காட்டாக, நிறுவனத்தின் பெயரை வெவ்வேறு வகைகளில் எழுத முடியுமானால், அவற்றை ஒரே செயல்பாடு மூலம் சரிபார்த்து சேகரிக்கலாம்:

நிபந்தனையின்படி உரை பிணைப்பு

நிலையான வைல்டு கார்டுகள் ஆதரிக்கப்படுகின்றன:

  • நட்சத்திரக் குறியீடு (*) - எந்த எழுத்துகளின் எண்ணிக்கையைக் குறிக்கிறது (அவை இல்லாதது உட்பட)
  • கேள்விக்குறி (?) - எந்த ஒரு எழுத்தையும் குறிக்கிறது
  • பவுண்டு அடையாளம் (#) - ஏதேனும் ஒரு இலக்கத்தைக் குறிக்கிறது (0-9)

இயல்பாக, லைக் ஆபரேட்டர் கேஸ் சென்சிட்டிவ், அதாவது, "ஓரியன்" மற்றும் "ஓரியன்" ஆகியவற்றை வெவ்வேறு நிறுவனங்களாகப் புரிந்துகொள்கிறது. வழக்கைப் புறக்கணிக்க, விஷுவல் பேசிக் எடிட்டரில் தொகுதியின் தொடக்கத்திலேயே வரியைச் சேர்க்கலாம் விருப்பம் உரையை ஒப்பிடுக, இது லைக்கை கேஸ் சென்சிட்டிவ் ஆக மாற்றும்.

இந்த வழியில், நிலைமைகளைச் சரிபார்க்க மிகவும் சிக்கலான முகமூடிகளை நீங்கள் உருவாக்கலாம், எடுத்துக்காட்டாக:

  • ?1##??777RUS – 777 பிராந்தியத்தின் அனைத்து உரிமத் தகடுகளின் தேர்வு, 1 இல் தொடங்கி
  • LLC* - LLC உடன் தொடங்கும் அனைத்து நிறுவனங்களும்
  • ##7## - ஐந்து இலக்க டிஜிட்டல் குறியீட்டைக் கொண்ட அனைத்து தயாரிப்புகளும், மூன்றாவது இலக்கம் 7 ​​ஆகும்
  • ????? - ஐந்து எழுத்துக்களின் அனைத்து பெயர்கள், முதலியன.

முறை 3. இரண்டு நிபந்தனைகளின் கீழ் உரையை ஒட்டுவதற்கான மேக்ரோ செயல்பாடு

நீங்கள் உரையை ஒன்றுக்கு மேற்பட்ட நிபந்தனைகளுடன் இணைக்க வேண்டியிருக்கும் போது வேலையில் சிக்கல் இருக்கலாம். எடுத்துக்காட்டாக, எங்கள் முந்தைய அட்டவணையில், நகரத்துடன் மேலும் ஒரு நெடுவரிசை சேர்க்கப்பட்டுள்ளது, மேலும் ஒட்டுதல் கொடுக்கப்பட்ட நிறுவனத்திற்கு மட்டுமல்ல, கொடுக்கப்பட்ட நகரத்திற்கும் மேற்கொள்ளப்பட வேண்டும் என்று கற்பனை செய்யலாம். இந்த வழக்கில், மற்றொரு வரம்பு சரிபார்ப்பைச் சேர்ப்பதன் மூலம் எங்கள் செயல்பாடு சிறிது நவீனப்படுத்தப்பட வேண்டும்:

Function MergeIfs(TextRange as Range, SearchRange1 as Range, Condition1 as String, SearchRange2 as Range, Condition2 as String) Dim Delimeter as String, i As Long Delimeter = "," 'delimiter characters (space or ; etc.) e.) 'சரிபார்ப்பு மற்றும் ஒட்டுதல் வரம்புகள் ஒன்றுக்கொன்று சமமாக இல்லாவிட்டால், பிழையுடன் வெளியேறவும் SearchRange1.எண்ணிக்கை <> TextRange 'அனைத்து செல்கள் வழியாகவும் சென்று, எல்லா நிபந்தனைகளையும் சரிபார்த்து, அவுட்டெக்ஸ்ட் என்ற மாறியில் உரையைச் சேகரிக்கவும். i = 2 க்கு SearchRange1.Cells. எண்ணினால் SearchRange1.Cells(i) = Condition1 மற்றும் SearchRange1.Cells(i) = Condition2 பிறகு OutText = OutText & TextRange.Cells(i) & Delimeter End எனில் அடுத்து i 'கடைசி டிலிமிட்டர் இல்லாமல் முடிவுகளைக் காண்பி MergeIfs = இடது(அவுட்டெக்ஸ்ட், லென்(அவுட்டெக்ஸ்ட்) - லென்(டிலிமீட்டர்)) முடிவுச் செயல்பாடு  

இது சரியாக அதே வழியில் பயன்படுத்தப்படும் - இப்போது வாதங்கள் மட்டுமே மேலும் குறிப்பிடப்பட வேண்டும்:

நிபந்தனையின்படி உரை பிணைப்பு

முறை 4. பவர் வினவலில் தொகுத்தல் மற்றும் ஒட்டுதல்

இலவச பவர் வினவல் ஆட்-இன் பயன்படுத்தினால், VBA இல் நிரலாக்கம் இல்லாமல் சிக்கலைத் தீர்க்கலாம். எக்செல் 2010-2013க்கு இதை இங்கே பதிவிறக்கம் செய்யலாம், மேலும் எக்செல் 2016 இல் இது ஏற்கனவே முன்னிருப்பாக கட்டமைக்கப்பட்டுள்ளது. செயல்களின் வரிசை பின்வருமாறு இருக்கும்:

பவர் வினவலுக்கு வழக்கமான அட்டவணைகளுடன் எவ்வாறு வேலை செய்வது என்று தெரியவில்லை, எனவே முதல் படியாக எங்கள் அட்டவணையை "ஸ்மார்ட்" ஆக மாற்ற வேண்டும். இதைச் செய்ய, அதைத் தேர்ந்தெடுத்து கலவையை அழுத்தவும் ctrl+T அல்லது தாவலில் இருந்து தேர்ந்தெடுக்கவும் முகப்பு - அட்டவணையாக வடிவமைக்கவும் (முகப்பு - அட்டவணையாக வடிவமைக்கவும்). பின்னர் தோன்றும் தாவலில் கன்ஸ்ட்ரக்டர் (வடிவமைப்பு) நீங்கள் அட்டவணையின் பெயரை அமைக்கலாம் (நான் தரநிலையை விட்டுவிட்டேன் டேபிள் 1):

நிபந்தனையின்படி உரை பிணைப்பு

இப்போது நமது அட்டவணையை Power Query add-in இல் ஏற்றுவோம். இதைச் செய்ய, தாவலில் தேதி (உங்களிடம் எக்செல் 2016 இருந்தால்) அல்லது பவர் வினவல் தாவலில் (உங்களிடம் எக்செல் 2010-2013 இருந்தால்) கிளிக் செய்யவும் மேஜையில் இருந்து (தரவு - அட்டவணையில் இருந்து):

நிபந்தனையின்படி உரை பிணைப்பு

திறக்கும் வினவல் எடிட்டர் சாளரத்தில், தலைப்பைக் கிளிக் செய்வதன் மூலம் நெடுவரிசையைத் தேர்ந்தெடுக்கவும் நிறுவனத்தின் மற்றும் மேலே உள்ள பொத்தானை அழுத்தவும் குழு (குழு மூலம்). குழுவில் புதிய நெடுவரிசையின் பெயரையும் செயல்பாட்டு வகையையும் உள்ளிடவும் - அனைத்து வரிகளும் (அனைத்து வரிசைகளும்):

நிபந்தனையின்படி உரை பிணைப்பு

சரி என்பதைக் கிளிக் செய்யவும், ஒவ்வொரு நிறுவனத்திற்கும் தொகுக்கப்பட்ட மதிப்புகளின் சிறிய அட்டவணையைப் பெறுவோம். இதன் விளைவாக வரும் நெடுவரிசையில் கலங்களின் வெள்ளை பின்னணியில் (உரையில் அல்ல!) இடது கிளிக் செய்தால் அட்டவணையின் உள்ளடக்கங்கள் தெளிவாகத் தெரியும்:

நிபந்தனையின்படி உரை பிணைப்பு

இப்போது மேலும் ஒரு நெடுவரிசையைச் சேர்ப்போம், அங்கு, செயல்பாட்டைப் பயன்படுத்தி, ஒவ்வொரு மினி-டேபிள்களிலும், காற்புள்ளிகளால் பிரிக்கப்பட்ட முகவரி நெடுவரிசைகளின் உள்ளடக்கங்களை ஒட்டுகிறோம். இதைச் செய்ய, தாவலில் நெடுவரிசையைச் சேர்க்கவும் நாங்கள் அழுத்துகிறோம் தனிப்பயன் நெடுவரிசை (நெடுவரிசையைச் சேர் - தனிப்பயன் நெடுவரிசை) தோன்றும் சாளரத்தில், புதிய நெடுவரிசையின் பெயரையும், பவர் வினவலில் கட்டமைக்கப்பட்ட M மொழியில் இணைக்கும் சூத்திரத்தையும் உள்ளிடவும்:

நிபந்தனையின்படி உரை பிணைப்பு

அனைத்து எம்-செயல்பாடுகளும் கேஸ் சென்சிட்டிவ் (எக்செல் போலல்லாமல்) என்பதை நினைவில் கொள்ளவும். கிளிக் செய்த பிறகு OK ஒட்டப்பட்ட முகவரிகளுடன் புதிய நெடுவரிசையைப் பெறுகிறோம்:

நிபந்தனையின்படி உரை பிணைப்பு

ஏற்கனவே தேவையற்ற நெடுவரிசையை அகற்ற இது உள்ளது அட்டவணை முகவரிகள் (தலைப்பில் வலது கிளிக் செய்யவும்) நெடுவரிசையை நீக்கு) மற்றும் டேப்பில் கிளிக் செய்வதன் மூலம் முடிவுகளை தாளில் பதிவேற்றவும் முகப்பு - மூடி பதிவிறக்கவும் (வீடு - மூடவும் ஏற்றவும்):

நிபந்தனையின்படி உரை பிணைப்பு

முக்கியமான நுணுக்கம்: முந்தைய முறைகள் (செயல்பாடுகள்) போலல்லாமல், பவர் வினவலில் இருந்து அட்டவணைகள் தானாக புதுப்பிக்கப்படாது. எதிர்காலத்தில் மூலத் தரவில் ஏதேனும் மாற்றங்கள் ஏற்பட்டால், முடிவுகள் அட்டவணையில் எங்கும் வலது கிளிக் செய்து கட்டளையைத் தேர்ந்தெடுக்க வேண்டும். புதுப்பித்து சேமிக்கவும் (புதுப்பிப்பு).

  • ஒரு நீண்ட உரை சரத்தை பகுதிகளாகப் பிரிப்பது எப்படி
  • வெவ்வேறு கலங்களிலிருந்து உரையை ஒன்றாக ஒட்டுவதற்கு பல வழிகள்
  • முகமூடிக்கு எதிராக உரையைச் சோதிக்க லைக் ஆபரேட்டரைப் பயன்படுத்துதல்

ஒரு பதில் விடவும்