Joukkotekstin korvaaminen kaavoilla

Oletetaan, että sinulla on luettelo, johon kirjoitetaan vaihtelevalla "suorallisuusasteella" alkutiedot - esimerkiksi osoitteet tai yritysten nimet:

Joukkotekstin korvaaminen kaavoilla            Joukkotekstin korvaaminen kaavoilla

On selvästi nähtävissä, että sama kaupunki tai yritys on läsnä täällä kirjavina muunnelmina, mikä luonnollisesti aiheuttaa paljon ongelmia näiden taulukoiden kanssa työskentelyssä tulevaisuudessa. Ja jos vähän ajattelet, voit löytää paljon esimerkkejä vastaavista tehtävistä muilta alueilta.

Kuvittele nyt, että tällaista kieroa dataa tulee sinulle säännöllisesti, eli tämä ei ole kertaluonteinen "korjaa se manuaalisesti, unohda se" -tarina, vaan ongelma säännöllisesti ja suuressa määrässä soluja.

Mitä tehdä? Älä vaihda vinoa tekstiä manuaalisesti 100500 kertaa oikealla "Etsi ja korvaa" -ruudun kautta tai napsauttamalla Ctrl+H?

Ensimmäinen asia, joka tulee mieleen tällaisessa tilanteessa, on tehdä massakorvaus ennalta laaditun hakukirjan mukaan, joka sisältää virheellisiä ja oikeita vaihtoehtoja - kuten tämä:

Joukkotekstin korvaaminen kaavoilla

Valitettavasti tällaisen tehtävän ilmeisen yleisyyden vuoksi Microsoft Excelissä ei ole yksinkertaisia ​​sisäänrakennettuja menetelmiä sen ratkaisemiseksi. Aluksi selvitetään, kuinka tämä tehdään kaavoilla käyttämättä "raskasta tykistöä" makrojen muodossa VBA:ssa tai Power Queryssä.

Tapaus 1. Kokonainen vaihto

Aloitetaan suhteellisen yksinkertaisesta tapauksesta – tilanteesta, jossa vanha kiero teksti on korvattava uudella. täysin.

Oletetaan, että meillä on kaksi pöytää:

Joukkotekstin korvaaminen kaavoilla

Ensimmäisessä – yritysten alkuperäiset kirjavat nimet. Toisessa - kirjeenvaihdon hakuteos. Jos löydämme ensimmäisen taulukon yrityksen nimestä minkä tahansa sanan sarakkeesta Löytää, sinun on korvattava tämä vino nimi kokonaan oikealla - sarakkeesta korvike toinen hakutaulukko.

Mukavuuden vuoksi:

  • Molemmat taulukot muunnetaan dynaamiksi ("älykkääksi") pikanäppäimen avulla Ctrl+T tai joukkue Lisää – Taulukko (Lisää - taulukko).
  • Näyttöön tulevalla välilehdellä Rakentaja (Design) ensimmäinen pöytä nimeltä Päiväysja toinen viitetaulukko – Pelaajavaihdot.

Selvitetään kaavan logiikkaa, mennään vähän kaukaa.

Otetaan esimerkkinä ensimmäinen yritys solusta A2 ja unohdetaan väliaikaisesti muut yritykset, yritetään määrittää sarakkeesta mikä vaihtoehto Löytää tapaa siellä. Voit tehdä tämän valitsemalla minkä tahansa tyhjän solun arkin vapaasta osasta ja kirjoittamalla funktion sinne LÖYTÄÄ (LÖYTÖ):

Joukkotekstin korvaaminen kaavoilla

Tämä funktio määrittää, sisältyykö annettu osamerkkijono (ensimmäinen argumentti on kaikki sarakkeen arvot Löytää) lähdetekstiin (ensimmäinen yritys tietotaulukosta), ja sen tulee tulostaa joko sen merkin järjestysnumero, josta teksti löydettiin, tai virhe, jos osamerkkijonoa ei löydy.

Temppu tässä on se, että koska emme määritelleet yhtä, vaan useita arvoja ensimmäiseksi argumentiksi, tämä funktio palauttaa tuloksena ei yhden arvon, vaan 3 elementin joukon. Jos sinulla ei ole Office 365:n uusinta versiota, joka tukee dynaamisia taulukoita, syötä tämä kaava ja napsauta enter näet tämän taulukon suoraan arkilla:

Joukkotekstin korvaaminen kaavoilla

Jos sinulla on aiemmat Excel-versiot, napsauta sen jälkeen enter näemme vain ensimmäisen arvon tulostaulukosta, eli virheen #ARVO! (#ARVO!).

Sinun ei pitäisi pelätä 🙂 Itse asiassa kaavamme toimii ja näet silti koko joukon tuloksia, jos valitset syötetyn funktion kaavapalkista ja painat näppäintä F9(älä vain unohda painaa escpalataksesi kaavaan):

Joukkotekstin korvaaminen kaavoilla

Tuloksena oleva tulosjoukko tarkoittaa, että alkuperäisessä vinossa yrityksen nimessä (GK Morozko OAO) kaikista sarakkeen arvoista Löytää löytyi vasta toinen (Morozko), ja alkaen 4. merkistä peräkkäin.

Lisätään nyt funktio kaavaamme KATSO(KATSO YLÖS):

Joukkotekstin korvaaminen kaavoilla

Tällä funktiolla on kolme argumenttia:

  1. Haluttu arvo - voit käyttää mitä tahansa riittävän suurta numeroa (pääasia, että se ylittää minkä tahansa lähdetiedon tekstin pituuden)
  2. Katsottu_vektori – alue tai taulukko, josta etsimme haluttua arvoa. Tässä on aiemmin esitelty toiminto LÖYTÄÄ, joka palauttaa taulukon {#VALUE!:4:#VALUE!}
  3. Vektori_Tulokset – alue, josta haluamme palauttaa arvon, jos haluttu arvo löytyy vastaavasta solusta. Tässä ovat oikeat nimet sarakkeesta korvike referenssitaulukkomme.

Tärkein ja ei-ilmeinen ominaisuus tässä on toiminto KATSO jos tarkkaa vastaavuutta ei ole, etsii aina lähintä pienintä (edellistä) arvoa. Siksi pakotamme määrittämällä minkä tahansa ison luvun (esimerkiksi 9999) halutuksi arvoksi KATSO etsi solu, jolla on lähin pienin luku (4) taulukosta {#ARVO!:4:#ARVO!} ja palauta vastaava arvo tulosvektorista, eli oikea yrityksen nimi sarakkeesta korvike.

Toinen vivahde on, että teknisesti kaavamme on taulukkokaava, koska funktio LÖYTÄÄ palauttaa tuloksina yhden, vaan kolmen arvon joukon. Mutta koska toiminto KATSO tukee taulukoita valmiina, meidän ei tarvitse syöttää tätä kaavaa perinteisenä taulukkokaavana - käyttämällä pikanäppäintä Ctrl+siirtyminen+enter. Yksinkertainen riittää enter.

Siinä kaikki. Toivottavasti ymmärrät logiikan.

On vielä siirrettävä valmis kaava sarakkeen ensimmäiseen soluun B2 kiinteä – ja tehtävämme on ratkaistu!

Joukkotekstin korvaaminen kaavoilla

Tietysti myös tavallisilla (ei älykkäillä) taulukoilla tämä kaava toimii hyvin (älä vain unohda avainta). F4 ja asiaankuuluvien linkkien korjaaminen):

Joukkotekstin korvaaminen kaavoilla

Tapaus 2. Osallinen vaihto

Tämä tapaus on hieman hankalampi. Meillä on jälleen kaksi "älykästä" pöytää:

Joukkotekstin korvaaminen kaavoilla

Ensimmäinen taulukko, jossa on väärin kirjoitetut osoitteet, joka on korjattava (nimesin sen Data2). Toinen taulukko on hakuteos, jonka mukaan osoitteen sisällä oleva osamerkkijono on korvattava osittain (nimesin tätä taulukkoa Vaihtoehdot 2).

Olennainen ero tässä on, että sinun täytyy korvata vain osa alkuperäisestä tiedosta – esimerkiksi ensimmäisessä osoitteessa on virheellinen "St. Pietari” oikealla "St. Pietari”, jättäen loput osoitteesta (postinumero, katu, talo) ennalleen.

Valmis kaava näyttää tältä (havainnoinnin helpottamiseksi jaoin sen kuinka monta riviä käyttäen muut+enter):

Joukkotekstin korvaaminen kaavoilla

Päätyön täällä tekee standardi Excel-tekstitoiminto SUBSTITUTE (KORVAA), jolla on 3 argumenttia:

  1. Lähdeteksti – ensimmäinen vino osoite Osoite-sarakkeesta
  2. Mitä etsimme – tässä käytämme temppua toiminnon kanssa KATSO (KATSO YLÖS)edellisestä tavasta noutaa arvo sarakkeesta Löytää, joka sisältyy kaarevan osoitteen fragmenttina.
  3. Millä korvataan – samalla tavalla löydämme sarakkeesta sitä vastaavan oikean arvon korvike.

Syötä tämä kaava käyttämällä Ctrl+siirtyminen+enter ei tarvita myöskään tässä, vaikka se on itse asiassa taulukkokaava.

Ja on selvästi nähtävissä (katso #N/A-virheet edellisessä kuvassa), että tällaisella kaavalla on kaikesta tyylikkyydestään huolimatta pari haittapuolta:

  • Toiminto SUBSTITUTE on kirjainkoon erottelukyky, joten "Spb" toiseksi viimeisellä rivillä ei löytynyt korvaustaulukosta. Voit ratkaista tämän ongelman joko käyttämällä toimintoa ZAMENIT (KORVATA), tai tuo molemmat taulukot alustavasti samaan rekisteriin.
  • Jos teksti on alunperin oikein tai siinä korvattavaa fragmenttia ei ole (viimeinen rivi), kaavamme antaa virheen. Tämä hetki voidaan neutraloida sieppaamalla ja korvaamalla virheet toiminnolla IFERROR (IFERROR):

    Joukkotekstin korvaaminen kaavoilla

  • Jos alkuperäinen teksti sisältää useita fragmentteja hakemistosta kerralla, silloin kaavamme korvaa vain viimeisen (8. rivillä, Ligovsky «Katu« muutettiin "pr-t", Mutta "S-Pb" on "St. Pietari” ei enää, koska "S-Pb” on hakemiston yläpuolella). Tämä ongelma voidaan ratkaista ajamalla oma kaavamme uudelleen, mutta jo saraketta pitkin kiinteä:

    Joukkotekstin korvaaminen kaavoilla

Ei täydellinen ja paikoin hankala, mutta paljon parempi kuin sama manuaalinen vaihto, eikö niin? 🙂

PS

Seuraavassa artikkelissa selvitetään, kuinka tällainen joukkokorvaus toteutetaan makrojen ja Power Queryn avulla.

  • Miten SUBSTITUTE-toiminto korvaa tekstiä
  • Tarkkojen tekstiosumien etsiminen EXACT-funktiolla
  • Kirjainkoolla erottuva haku ja korvaaminen (VLOOKUP)

Jätä vastaus