Zamjena teksta u stanicama - Excel savjeti

Sadržaj

Jean je ovotjedno postavila Excel pitanje:

Pokušavam pretvoriti cjenik dobavljača u Excel kako bi se njihovi UPC kodovi podudarali s našim UPC sustavom kodova. Njihov cjenik sadrži stupac u Excelu s nizom brojeva, npr. 000004560007 ILI cel000612004. Ono što moram učiniti je dvostruko. Moram izvaditi prve tri nule bez brisanja bilo kojih drugih 0 u ćeliji. Dalje, moram dodati 3-znamenkasti kod "upc" prije prve numeričke znamenke u ćeliji. To će biti stalna potreba. Morat ću obučiti nekoliko ljudi za korištenje sustava Excel.

Zvuči kao da je Jean već razmišljao da se koristi Edit-Replace kako bi se riješio tri nule. To ne bi uspjelo, jer bi zamjena uređivanja na "000004560007" uzrokovala nestanak obje pojave 000.

Prvo želim predložiti da Jean umetne privremeni stupac pored trenutnih cjenovnih kodova, napiše formulu za transformaciju, a zatim koristi Uredi-Kopiraj, Uredi-Zalijepi-Posebne vrijednosti kako bi kopirao formulu natrag preko izvornih cjenovnih kodova.

Loše dokumentirana funkcija REPLACE () u ovom će slučaju uspjeti. Bio sam razočaran provedbom REPLACE (). Pomislio bih da će tražiti određeni tekst koji će zamijeniti, ali umjesto toga traži da korisnik shvati položaje znakova koje treba zamijeniti. REPLACE zamijenit će dio tekstnog niza novim nizom. Četiri argumenta koja prosljeđujete funkciji su ćelija koja sadrži stari tekst, položaj znaka u starom tekstu koji želite zamijeniti, broj znakova koji treba zamijeniti i novi tekst koji želite koristiti.

Moja pojednostavljujuća pretpostavka je da tri nule predstavljaju početak UPC koda u nizu. Dakle, nema potrebe za traženjem prvog numeričkog znaka u ćeliji. Jednom kada formula pronađe tri nule, može zamijeniti te tri nule nizom "upc".

Da biste pronašli mjesto prvog pojavljivanja "000" u tekstu, upotrijebili biste ovu formulu:

=FIND(A2,"000")

Formula koju bi Jean trebao unijeti u ćeliju B2 bila bi:

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

Moja je misao da analitičari za cijene istaknu čitav niz ćelija, a zatim se pozovu na ovu makronaredbu. Makronaredba će na početku koristiti petlju s "Za svaku ćeliju u izboru". Pomoću ove petlje "ćelija" postaje posebna varijabla raspona. Možete koristiti cell.address ili cell.value ili cell.row da biste pronašli adresu, vrijednost ili red trenutne ćelije u petlji. Evo makronaredbe:

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

Imajte na umu da je ovo makro destruktivnog tipa. Kad korisnik istakne raspon stanica i pokrene makronaredbu, te će se stanice promijeniti. Podrazumijeva se da želite temeljito testirati makronaredbu na testnim podacima prije nego što je oslobodite stvarnih proizvodnih podataka. Kada imate situaciju poput Jean-ove, od koje će se neprestano tražiti da transformirate stupac koristeći složenu formulu, pisanje jednostavne makronaredbe poput one ilustrirane ovdje može biti učinkovit i štedi vrijeme.

Zanimljivi članci...