பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

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

அடிக்கடி நடப்பது போல செய்ய இந்த பணி விளக்குவதை விட மிகவும் எளிதானது ஏன் இது வேலை செய்கிறது, ஆனால் இரண்டையும் செய்ய முயற்சிப்போம் 🙂

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

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

நான் முதல் மேசையை அழைத்தேன் தேதி, இரண்டாவது அட்டவணை - அடைவுபுலத்தைப் பயன்படுத்துதல் அட்டவணை பெயர் (அட்டவணை பெயர்) தாவல் கன்ஸ்ட்ரக்டர் (வடிவமைப்பு).

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

படி 1. கோப்பகத்தை பவர் வினவலில் ஏற்றி அதை பட்டியலாக மாற்றவும்

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

பவர் வினவல் வினவல் எடிட்டரில் குறிப்பு அட்டவணை ஏற்றப்படும்:

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

தலையிடாமல் இருக்க, தானாக சேர்க்கப்பட்ட படி மாற்றியமைக்கப்பட்ட வகை (வகை மாற்றப்பட்டது) வலது பேனலில், பயன்படுத்தப்பட்ட படிகளை பாதுகாப்பாக நீக்கலாம், படியை மட்டும் விட்டுவிடலாம் மூல (மூலம்):

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

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

பாடல் திசைதிருப்பல்

தொடர்வதற்கு முன், முதலில் விதிமுறைகளைப் புரிந்துகொள்வோம். பவர் வினவல் பல வகையான பொருள்களுடன் வேலை செய்ய முடியும்:
  • மேசை பல வரிசைகள் மற்றும் நெடுவரிசைகளைக் கொண்ட இரு பரிமாண வரிசை ஆகும்.
  • பதிவு (பதிவு) - ஒரு பரிமாண வரிசை-சரம், பல புலங்கள்-உறுப்புகள் பெயர்களைக் கொண்டது, எடுத்துக்காட்டாக [பெயர் = "மாஷா", பாலினம் = "எஃப்", வயது = 25]
  • பட்டியல் - ஒரு பரிமாண வரிசை-நெடுவரிசை, எடுத்துக்காட்டாக, பல கூறுகளைக் கொண்டுள்ளது {1, 2, 3, 10, 42} or { “நம்பிக்கை நம்பிக்கை அன்பு”}

எங்கள் சிக்கலைத் தீர்க்க, நாங்கள் முதன்மையாக வகை மீது ஆர்வமாக இருப்போம் பட்டியல்.

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

{

    [ கண்டுபிடி = “செயின்ட். பீட்டர்ஸ்பர்க்", மாற்று = "செயின்ட். பீட்டர்ஸ்பர்க்"] ,

    [ கண்டுபிடி = “செயின்ட். பீட்டர்ஸ்பர்க்", மாற்று = "செயின்ட். பீட்டர்ஸ்பர்க்"] ,

    [ கண்டுபிடி = "பீட்டர்", மாற்று = "செயின்ட். பீட்டர்ஸ்பர்க்"] ,

முதலியன

}

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

அது:

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

பிறகு:

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

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

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

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

இத்தகைய தேக்ககமானது, அதிக அளவு ஆரம்பத் தரவுகளை அழிக்க வேண்டிய வேகத்தில் (பல மடங்கு!) குறிப்பிடத்தக்க அதிகரிப்பைக் கொடுக்கும்.

இது கையேட்டின் தயாரிப்பை நிறைவு செய்கிறது.

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

படி 2. தரவு அட்டவணையை ஏற்றுகிறது

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

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

அதனுடன் சிறப்பு ஆயத்த நடவடிக்கைகள் எதுவும் செய்யத் தேவையில்லை, நாங்கள் மிக முக்கியமான விஷயத்திற்கு செல்கிறோம்.

படி 3. List.Acumulate செயல்பாட்டைப் பயன்படுத்தி மாற்றீடுகளைச் செய்யவும்

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

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

அதை கிளிக் செய்ய உள்ளது OK - மற்றும் செய்யப்பட்ட மாற்றங்களுடன் ஒரு நெடுவரிசையைப் பெறுகிறோம்:

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

குறிப்பு:

  • பவர் வினவல் கேஸ் சென்சிட்டிவ் என்பதால், இறுதி வரியில் மாற்றீடு எதுவும் இல்லை, ஏனெனில் கோப்பகத்தில் "SPb" உள்ளது, "SPb" இல்லை.
  • மூலத் தரவில் ஒரே நேரத்தில் பல சப்ஸ்ட்ரிங்ஸ்களை மாற்றினால் (உதாரணமாக, 7 வது வரியில் நீங்கள் "S-Pb" மற்றும் "Prospectus" இரண்டையும் மாற்ற வேண்டும்), இது எந்த சிக்கலையும் உருவாக்காது (இதிலிருந்து சூத்திரங்களை மாற்றுவது போலல்லாமல் முந்தைய முறை).
  • மூல உரையில் (9 வது வரி) மாற்றுவதற்கு எதுவும் இல்லை என்றால், பிழைகள் எதுவும் ஏற்படாது (மீண்டும், சூத்திரங்களால் மாற்றுவது போலல்லாமல்).

அத்தகைய கோரிக்கையின் வேகம் மிக மிக ஒழுக்கமானது. எடுத்துக்காட்டாக, 5000 வரிசைகள் கொண்ட ஆரம்ப தரவுகளின் அட்டவணைக்கு, இந்த வினவல் ஒரு வினாடிக்கும் குறைவான நேரத்தில் புதுப்பிக்கப்பட்டது (தாக்குதல் இல்லாமல், சுமார் 3 வினாடிகள்!)

List.Acumulate செயல்பாடு எவ்வாறு செயல்படுகிறது

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

இந்தச் செயல்பாட்டிற்கான தொடரியல்:

=பட்டியல். திரட்டு(பட்டியலில், விதை, திரட்டல்)

எங்கே

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

பொதுவாக, பவர் வினவலில் செயல்பாடுகளை எழுதுவதற்கான தொடரியல் இது போல் தெரிகிறது:

(argument1, argument2, … argumentN) => வாதங்களுடன் சில செயல்கள்

எடுத்துக்காட்டாக, கூட்டுத்தொகை செயல்பாட்டை இவ்வாறு குறிப்பிடலாம்:

(a, b) => a + b

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

  • இருந்து - முடிவு திரட்டப்பட்ட ஒரு மாறி (அதன் ஆரம்ப மதிப்பு மேலே குறிப்பிட்டது விதை)
  • தற்போதைய - பட்டியலிலிருந்து அடுத்த மறுமதிப்பீடு மதிப்பு பட்டியலில்

எடுத்துக்காட்டாக, பின்வரும் கட்டுமானத்தின் தர்க்கத்தின் படிகளைப் பார்ப்போம்:

=பட்டியல். திரட்டு({3, 2, 5}, 10, (நிலை, தற்போதைய) => நிலை + மின்னோட்டம்)

  1. மாறி மதிப்பு இருந்து ஆரம்ப வாதத்திற்கு சமமாக அமைக்கப்பட்டுள்ளது விதைIe மாநிலம் = 10
  2. நாங்கள் பட்டியலின் முதல் உறுப்பை எடுத்துக்கொள்கிறோம் (தற்போதைய = 3) மற்றும் அதை மாறியில் சேர்க்கவும் இருந்து (பத்து). நாம் பெறுகிறோம் மாநிலம் = 13.
  3. நாங்கள் பட்டியலின் இரண்டாவது உறுப்பை எடுத்துக்கொள்கிறோம் (தற்போதைய = 2) மற்றும் மாறியில் உள்ள தற்போதைய திரட்டப்பட்ட மதிப்பைக் கூட்டவும் இருந்து (பத்து). நாம் பெறுகிறோம் மாநிலம் = 15.
  4. நாங்கள் பட்டியலில் மூன்றாவது உறுப்பை எடுத்துக்கொள்கிறோம் (தற்போதைய = 5) மற்றும் மாறியில் உள்ள தற்போதைய திரட்டப்பட்ட மதிப்பைக் கூட்டவும் இருந்து (பத்து). நாம் பெறுகிறோம் மாநிலம் = 20.

இது சமீபத்திய திரட்டப்பட்டது இருந்து மதிப்பானது எங்களின் பட்டியல். அதன் விளைவாக செயல்பாடு மற்றும் வெளியீடுகளை குவித்தல்:

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

நீங்கள் கொஞ்சம் கற்பனை செய்தால், List.Acumulate செயல்பாட்டைப் பயன்படுத்தி, நீங்கள் எக்செல் செயல்பாடு CONCATENATE ஐ உருவகப்படுத்தலாம் (பவர் வினவலில், அதன் அனலாக் அழைக்கப்படுகிறது. உரை.ஒருங்கிணைக்கவும்) வெளிப்பாட்டைப் பயன்படுத்துதல்:

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

அல்லது அதிகபட்ச மதிப்பைத் தேடவும் (எக்செல் இன் மேக்ஸ் செயல்பாட்டின் பிரதிபலிப்பு, இது பவர் வினவலில் அழைக்கப்படுகிறது List.Max):

பட்டியல் மூலம் பவர் வினவலில் மொத்த உரை மாற்றீடு. செயல்பாடு குவியும்

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

எங்கள் சிக்கலில் மாற்றீட்டைச் செய்த கட்டுமானத்தை மீண்டும் பார்ப்போம்:

பட்டியல். திரட்டு(அடைவு, [முகவரி], (நிலை, நடப்பு) => உரை.மாற்று(நிலை, நடப்பு[கண்டுபிடி], நடப்பு[மாற்று]) )

உண்மையில் இங்கு என்ன நடக்கிறது?

  1. ஆரம்ப மதிப்பாக (விதை) நெடுவரிசையிலிருந்து முதல் விகாரமான உரையை எடுக்கிறோம் [முகவரி] எங்கள் அட்டவணை: 199034, செயின்ட் பீட்டர்ஸ்பர்க், str. பெரிங்கா, டி. 1
  2. பின்னர் List.Acumulate பட்டியலின் கூறுகளை ஒவ்வொன்றாக மீண்டும் செய்கிறது – கையேடு. இந்தப் பட்டியலின் ஒவ்வொரு உறுப்பும் ஒரு ஜோடி புலங்கள் "என்ன கண்டுபிடிப்பது - எதை மாற்றுவது" அல்லது வேறுவிதமாகக் கூறினால், கோப்பகத்தில் அடுத்த வரியைக் கொண்ட பதிவாகும்.
  3. திரட்டி செயல்பாடு ஒரு மாறியில் வைக்கிறது இருந்து ஆரம்ப மதிப்பு (முதல் முகவரி 199034, செயின்ட் பீட்டர்ஸ்பர்க், str. பெரிங்கா, டி. 1) மற்றும் அதன் மீது ஒரு குவிப்பான் செயல்பாட்டைச் செய்கிறது - நிலையான M- செயல்பாட்டைப் பயன்படுத்தி மாற்று செயல்பாடு உரை.மாற்று (எக்செல் இன் SUBSTITUTE செயல்பாட்டிற்கு ஒப்பானது). அதன் தொடரியல்:

    Text.Replace (அசல் உரை, எதைத் தேடுகிறோம், எதை மாற்றுகிறோம்)

    இங்கே எங்களிடம் உள்ளது:

    • இருந்து எங்கள் அழுக்கு முகவரி, அதில் உள்ளது இருந்து (அங்கிருந்து வருவது விதை)
    • தற்போதைய[தேடல்] - புல மதிப்பு கண்டுபிடிக்க பட்டியலின் அடுத்த மறுமுறை உள்ளீட்டிலிருந்து அடைவு, இது மாறியில் உள்ளது தற்போதைய
    • தற்போதைய[மாற்று] - புல மதிப்பு பதிலாக பட்டியலின் அடுத்த மறுமுறை உள்ளீட்டிலிருந்து அடைவுஉள்ளே கிடக்கிறது தற்போதைய

இவ்வாறு, ஒவ்வொரு முகவரிக்கும், கோப்பகத்தில் உள்ள அனைத்து வரிகளின் முழு சுழற்சி ஒவ்வொரு முறையும் இயக்கப்படுகிறது, [கண்டுபிடி] புலத்திலிருந்து உரையை [மாற்று] புலத்தின் மதிப்புடன் மாற்றுகிறது.

உங்களுக்கு யோசனை கிடைத்திருக்கும் என்று நம்புகிறேன் 🙂

  • சூத்திரங்களைப் பயன்படுத்தி பட்டியலில் உள்ள உரையை மொத்தமாக மாற்றவும்
  • பவர் வினவலில் வழக்கமான வெளிப்பாடுகள் (RegExp).

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