Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Jinsi ya haraka na kwa wingi kuchukua nafasi ya maandishi kulingana na orodha ya kumbukumbu na fomula - tayari tumeipanga. Sasa hebu tujaribu kuifanya katika Hoja ya Nguvu.

Kama kawaida hutokea kufanya kazi hii ni rahisi zaidi kuliko kuelezea kwa nini inafanya kazi, lakini wacha tujaribu kufanya zote mbili 🙂

Kwa hivyo, tuna meza mbili za "smart" zenye nguvu zilizoundwa kutoka safu za kawaida na njia ya mkato ya kibodi Ctrl+T au timu Nyumbani - Fomati kama meza (Nyumbani - Umbizo kama Jedwali):

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Niliita meza ya kwanza DataJedwali la pili - Sarakakutumia shamba Jina la jedwali (Jina la jedwali) tab kuujenga (Ubunifu).

Kazi: badilisha katika anwani kwenye jedwali Data matukio yote kutoka kwa safu Kutafuta Kitabu kwa wenzao sahihi kutoka kwa safu Msaada. Maandishi mengine kwenye seli yanapaswa kubaki bila kuguswa.

Hatua ya 1. Pakia saraka kwenye Hoja ya Nguvu na uigeuze kuwa orodha

Baada ya kuweka kisanduku amilifu mahali popote kwenye jedwali la marejeleo, bofya kwenye kichupo Data (Tarehe)au kwenye kichupo Hoja ya Nguvu (ikiwa una toleo la zamani la Excel na umesakinisha Power Query kama nyongeza kwenye kichupo tofauti) kwenye kitufe Kutoka kwa meza / safu (Kutoka kwa Jedwali/Safu).

Jedwali la marejeleo litapakiwa kwenye kihariri cha hoja ya Nguvu:

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Ili usiingiliane, hatua iliyoongezwa kiotomatiki aina iliyobadilishwa (Aina Iliyobadilishwa) katika jopo la kulia, hatua zilizotumiwa zinaweza kufutwa kwa usalama, na kuacha tu hatua chanzo (Chanzo):

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Sasa, ili kufanya mabadiliko zaidi na uingizwaji, tunahitaji kugeuza jedwali hili kuwa orodha (orodha).

Ukandamizaji wa kijinga

Kabla ya kuendelea, hebu kwanza tuelewe masharti. Hoja ya Nguvu inaweza kufanya kazi na aina kadhaa za vitu:
  • Meza ni safu ya pande mbili inayojumuisha safu na safu wima kadhaa.
  • Rekodi (Rekodi) - safu ya safu-moja, inayojumuisha sehemu-vipengele kadhaa vilivyo na majina, kwa mfano. [Jina = “Masha”, Jinsia = “f”, Umri = 25]
  • orodha - safu ya safu-ya mwelekeo mmoja, inayojumuisha vipengele kadhaa, kwa mfano {1, 2, 3, 10, 42} or {“Imani Tumaini Upendo” }

Ili kutatua tatizo letu, tutapendezwa hasa na aina orodha.

Ujanja hapa ni kwamba vipengee vya orodha katika Hoja ya Nguvu vinaweza kuwa sio nambari za banal tu au maandishi, lakini pia orodha au rekodi zingine. Ni katika orodha ya hila (orodha), inayojumuisha rekodi (rekodi) ambayo tunahitaji kugeuza saraka yetu. Katika nukuu ya kisintaksia ya Hoja ya Nguvu (viingizo katika mabano ya mraba, orodha kwenye mabano yaliyopinda) hii ingeonekana kama:

{

    [ Tafuta = “St. Petersburg", Badilisha = "St. Petersburg”] ,

    [ Tafuta = “St. Petersburg", Badilisha = "St. Petersburg”] ,

    [ Tafuta = “Peter”, Replace = “St. Petersburg”] ,

nk

}

Mabadiliko kama haya hufanywa kwa kutumia kazi maalum ya lugha ya M iliyojengwa katika Hoja ya Nguvu - Table.ToRecords. Ili kuitumia moja kwa moja kwenye upau wa fomula, ongeza kitendakazi hiki kwa msimbo wa hatua hapo chanzo.

Ilikuwa:

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Baada ya:

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Baada ya kuongeza kazi ya Table.ToRecords, kuonekana kwa meza yetu itabadilika - itageuka kuwa orodha ya rekodi. Yaliyomo kwenye rekodi za kibinafsi yanaweza kuonekana chini ya kidirisha cha kutazama kwa kubofya usuli wa seli karibu na neno lolote. rekodi (lakini sio kwa neno moja!)

Mbali na hayo hapo juu, ni mantiki kuongeza kiharusi kimoja zaidi - kwenye cache (buffer) orodha yetu iliyoundwa. Hii italazimisha Hoja ya Nishati kupakia orodha yetu ya utafutaji mara moja kwenye kumbukumbu na si kuihesabu tena tutakapoifikia baadaye ili kuibadilisha. Ili kufanya hivyo, funga fomula yetu katika utendaji mwingine - Orodha.Bafa:

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Caching hiyo itatoa ongezeko kubwa la kasi (kwa mara kadhaa!) Kwa kiasi kikubwa cha data ya awali kufutwa.

Hii inakamilisha utayarishaji wa kitabu cha mwongozo.

Inabakia kubofya Nyumbani - Funga na Pakia - Funga na Pakia kwa... (Nyumbani — Funga&Pakia — Funga&Pakia kwa..), chagua chaguo Unda tu muunganisho (Unda muunganisho pekee) na kurudi kwa Excel.

Hatua ya 2. Inapakia jedwali la data

Kila kitu ni shwari hapa. Kama hapo awali na kitabu cha kumbukumbu, tunafika mahali popote kwenye jedwali, bonyeza kwenye kichupo Data kifungo Kutoka kwa Jedwali/Safu na meza yetu Data inaingia kwenye Swala la Nguvu. Hatua iliyoongezwa kiotomatiki aina iliyobadilishwa (Aina Iliyobadilishwa) unaweza pia kuondoa:

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Hakuna vitendo maalum vya maandalizi vinavyohitajika kufanywa nayo, na tunaendelea kwa jambo muhimu zaidi.

Hatua ya 3. Fanya uingizwaji kwa kutumia kitendakazi cha Orodha.Kusa

Wacha tuongeze safu iliyohesabiwa kwenye jedwali letu la data kwa kutumia amri Kuongeza Safu - Safu Wima Maalum (Ongeza safu wima - Safu wima maalum): na ingiza jina la safu wima iliyoongezwa kwenye dirisha linalofungua (kwa mfano, anwani iliyosahihishwa) na kazi yetu ya uchawi Orodha.Kusa:

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Inabakia kubofya OK - na tunapata safu na uingizwaji uliofanywa:

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Kumbuka kwamba:

  • Kwa kuwa Hoja ya Nguvu ni nyeti kwa kesi, hakukuwa na uingizwaji katika mstari wa mwisho, kwa sababu katika saraka tunayo "SPb", si "SPb".
  • Ikiwa kuna vijisehemu vidogo kadhaa vya kubadilisha mara moja kwenye data ya chanzo (kwa mfano, katika mstari wa 7 unahitaji kubadilisha "S-Pb" na "Prospectus"), basi hii haileti matatizo yoyote (tofauti na kubadilisha na fomula kutoka. njia ya awali).
  • Ikiwa hakuna kitu cha kuchukua nafasi katika maandishi ya chanzo (mstari wa 9), basi hakuna makosa yanayotokea (tofauti, tena, kutoka kwa uingizwaji na fomula).

Kasi ya ombi kama hilo ni nzuri sana. Kwa mfano, kwa jedwali la data ya awali yenye ukubwa wa safu mlalo 5000, hoja hii ilisasishwa kwa chini ya sekunde moja (bila kuakibisha, kwa njia, kama sekunde 3!)

Jinsi kitendakazi cha List.Accumulate kinavyofanya kazi

Kimsingi, hii inaweza kuwa mwisho (kwa mimi kuandika, na kwako kusoma) nakala hii. Ikiwa unataka sio tu kuwa na uwezo, lakini pia kuelewa jinsi inavyofanya kazi "chini ya kofia", basi utakuwa na kupiga mbizi kidogo ndani ya shimo la sungura na kukabiliana na Orodha.Kukusanya kazi, ambayo ilifanya uingizwaji wote wa wingi. kazi kwa ajili yetu.

Sintaksia ya chaguo hili la kukokotoa ni:

=Orodha.Kusa (orodha, mbegu, mkusanyaji)

ambapo

  • orodha ni orodha ambayo vipengele vyake tunarudia. 
  • mbegu - hali ya awali
  • mkusanyaji - kazi ambayo hufanya operesheni fulani (hisabati, maandishi, nk) kwenye kipengele kinachofuata cha orodha na kukusanya matokeo ya usindikaji katika kutofautiana maalum.

Kwa ujumla, syntax ya kazi za uandishi katika Hoja ya Nguvu inaonekana kama hii:

(hoja1, hoja2, … hojaN) => baadhi ya vitendo vyenye hoja

Kwa mfano, kazi ya kujumlisha inaweza kuwakilishwa kama:

(a, b) => a + b

Kwa List.Accumulate , kitendaji hiki cha kikusanyaji kina hoja mbili zinazohitajika (zinaweza kutajwa chochote, lakini majina ya kawaida ni walikuwa и sasa, kama katika usaidizi rasmi wa kazi hii, ambapo:

  • walikuwa - kutofautisha ambapo matokeo yamekusanywa (thamani yake ya awali ni ile iliyotajwa hapo juu mbegu)
  • sasa - thamani inayofuata iliyorudiwa kutoka kwenye orodha orodha

Kwa mfano, hebu tuangalie hatua za mantiki ya ujenzi ufuatao:

=Orodha.Kusa ({3, 2, 5}, 10, (hali, sasa) => hali + sasa)

  1. Thamani inayoweza kubadilika walikuwa imewekwa sawa na hoja ya awali mbeguIe jimbo = 10
  2. Tunachukua kipengele cha kwanza cha orodha (sasa = 3) na uiongeze kwa kutofautisha walikuwa (kumi). Tunapata jimbo = 13.
  3. Tunachukua kipengele cha pili cha orodha (sasa = 2) na kuiongezea kwa thamani ya sasa iliyokusanywa katika kutofautisha walikuwa (kumi). Tunapata jimbo = 15.
  4. Tunachukua kipengele cha tatu cha orodha (sasa = 5) na kuiongezea kwa thamani ya sasa iliyokusanywa katika kutofautisha walikuwa (kumi). Tunapata jimbo = 20.

Hii ni kusanyiko la hivi punde walikuwa thamani ni List.Kusanya chaguo za kukokotoa na matokeo kama matokeo:

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Ikiwa unafikiria kidogo, basi kwa kutumia Orodha.Kusanya kazi, unaweza kuiga, kwa mfano, kazi ya Excel CONCATENATE (katika Swala la Nguvu, analog yake inaitwa. Maandishi.Unganisha) kwa kutumia usemi:

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Au hata utafute dhamana ya juu (kuiga kazi ya MAX ya Excel, ambayo katika Swala la Nguvu inaitwa Orodha.Upeo):

Ubadilishaji wa maandishi mengi katika Hoja ya Nishati na kitendakazi cha List.Accumulate

Hata hivyo, kipengele kikuu cha List.Kusanya ni uwezo wa kuchakata sio tu maandishi rahisi au orodha za nambari kama hoja, lakini vitu changamano zaidi - kwa mfano, orodha-kutoka-orodha au orodha-kutoka-rekodi (hujambo, Saraka!)

Wacha tuangalie tena ujenzi ambao ulifanya uingizwaji katika shida yetu:

Orodha.Kusanya(Saraka, [Anwani], (hali, sasa) => Maandishi. Badilisha (hali, sasa[Tafuta], sasa[Badilisha]) )

Ni nini hasa kinaendelea hapa?

  1. Kama thamani ya awali (mbegu) tunachukua maandishi ya kwanza magumu kutoka kwa safu [Anwani] meza yetu: 199034, St. Petersburg, St. Beringa, d. 1
  2. Kisha List.Jikusanye inasisitiza juu ya vipengele vya orodha moja baada ya nyingine - Kitabu. Kila kipengele cha orodha hii ni rekodi inayojumuisha jozi ya sehemu "Nini cha kupata - Nini cha kuchukua" au, kwa maneno mengine, mstari unaofuata kwenye saraka.
  3. Kazi ya kikusanyaji huweka katika kigezo walikuwa thamani ya awali (anwani ya kwanza 199034, St. Petersburg, St. Beringa, d. 1) na hufanya kazi ya mkusanyiko juu yake - operesheni ya uingizwaji kwa kutumia M-kazi ya kawaida Maandishi.Badilisha (sawa na kitendakazi cha SUBSTITUTE cha Excel). Syntax yake ni:

    Text.Replace( maandishi asilia, kile tunachotafuta, kile tunachobadilisha)

    na hapa tunayo:

    • walikuwa ni anwani yetu chafu, ambayo iko ndani walikuwa (kutoka hapo mbegu)
    • sasa[Tafuta] - thamani ya shamba Kutafuta kutoka kwa ingizo linalofuata la orodha Saraka, ambayo iko katika kutofautisha sasa
    • sasa[Badilisha] - thamani ya shamba Msaada kutoka kwa ingizo linalofuata la orodha Sarakaamelala ndani sasa

Kwa hivyo, kwa kila anwani, mzunguko kamili wa kuhesabu mistari yote kwenye saraka huendeshwa kila wakati, ikibadilisha maandishi kutoka kwa sehemu ya [Tafuta] na thamani kutoka kwa [Badilisha] shamba.

Natumai umepata wazo 🙂

  • Wingi hubadilisha maandishi katika orodha kwa kutumia fomula
  • Maneno ya Kawaida (RegExp) katika Hoja ya Nishati

Acha Reply