Korvaa teksti soluissa - Excel-vinkit

Sisällysluettelo

Jean esitti tämän viikon Excel-kysymyksen:

Yritän muuntaa toimittajan hintakirjan Excelissä vastaamaan heidän UPC-koodinsa UPC-koodijärjestelmäämme. Heidän hintakirjassaan on sarake Excelissä, jossa on joukko numeroita. 000004560007 TAI cel000612004. Minun on tehtävä kaksinkertainen. Minun täytyy ottaa kolme ensimmäistä nollaa poistamatta muita soluja. Seuraavaksi minun on liitettävä 3-numeroinen koodi "upc" solun ensimmäisen numeron eteen. Tämä on jatkuva tarve. Minun täytyy kouluttaa useita ihmisiä käyttämään Excel-järjestelmää.

Kuulostaa siltä, ​​että Jean on jo harkinnut Edit-Replace -toiminnon käyttämistä päästä eroon kolmesta nollasta. Tämä ei toimisi, koska muokkauksen korvaaminen tekemällä "000004560007" aiheuttaisi molempien 000 esiintymän katoamisen.

Ensin haluan ehdottaa, että Jean lisää väliaikaisen sarakkeen nykyisten hintakoodien viereen, kirjoita kaava muunnoksen tekemiseksi ja käytä sitten Edit-Copy, Edit-PasteSpecial-Values ​​kopioimaan kaava takaisin alkuperäisten hintakoodien päälle.

Huonosti dokumentoitu REPLACE () -toiminto tekee tempun tässä tapauksessa. Olin pettynyt REPLACE () -sovelluksen käyttöönottoon. Olisin uskonut, että se pyytää tiettyä tekstiä korvaamaan, mutta se pyytää käyttäjää sen sijaan selvittämään korvattavat merkkipaikat. REPLACE korvaa osan tekstimerkkijonosta uudella merkkijonolla. Neljä argumenttia, jotka välität funktiolle, ovat solu, joka sisältää vanhan tekstin, korvattavan vanhan tekstin merkin sijainnin, korvattavien merkkien määrän ja uuden käytettävän tekstin.

Yksinkertaistan olettamani, että kolme nollaa edustavat merkkijonon UPC-koodin alkua. Siksi solun ensimmäistä numeerista merkkiä ei tarvitse etsiä. Kun kaava löytää kolme nollaa, se voi korvata nämä kolme nollaa merkkijonolla "upc".

Löydät tekstin "000" ensimmäisen esiintymisen sijainnin käyttämällä tätä kaavaa:

=FIND(A2,"000")

Kaava, jonka Jeanin olisi syötettävä soluun B2, olisi:

=REPLACE(A2,FIND("000",A2),3,"upc")

Ajattelen, että hinnoitteluanalyytikot korostavat useita soluja ja käyttävät tätä makroa. Makro käyttää silmukkaa, jonka alussa on "Kullekin valinnan solulle". Tämän silmukan avulla "solusta" tulee erityinen alueen muuttuja. Voit käyttää solun osoitetta, solun arvoa tai solua. Rivin avulla löytääksesi nykyisen solun osoitteen, arvon tai rivin. Tässä on makro:

Public Sub Jean() ' This macro will replace the first occurrence of "000" ' in each selected cell with the string "upc" ' copyright 1999 www.MrExcel.com For Each cell In Selection cell.Value = Replace(cell.Value, "000", "upc", 1, 1, vbTextCompare) Next cell End Sub

Huomaa, että tämä on tuhoava makro. Kun käyttäjä korostaa solualueen ja suorittaa makron, nämä solut muuttuvat. On sanomattakin selvää, että haluat testata makrosi perusteellisesti testitiedoilla ennen kuin irrotat sen todellisista tuotantotiedoista. Kun sinulla on Jeanin kaltainen tilanne, jossa sinun on jatkuvasti muunnettava sarake monimutkaisella kaavalla, yksinkertaisen makron kirjoittaminen, kuten tässä kuvattu, voi olla tehokas ja aikaa säästävä työkalu.

Mielenkiintoisia artikkeleita...