Zamenjaj besedilo v celicah - Excel Nasveti

Kazalo

Jean je ta teden postavil vprašanje Excel-a:

Poskušam pretvoriti cenik dobaviteljev v Excelu, da se njihove kode UPC ujemajo z našim sistemom kod UPC. Njihov cenik ima stolpec v Excelu z vrsto številk, npr. 000004560007 ALI cel000612004. Kar moram storiti, je dvakrat. Moram odstraniti prve tri ničle, ne da bi v celici izbrisal druge 0. Nato moram dodati prvo 3-mestno kodo "upc" pred prvo številčno številko v celici. To bo stalna potreba. Za uporabo sistema Excel bom moral usposobiti več ljudi.

Sliši se, kot da je Jean že razmišljal, da bi se znebil treh ničel z Edit-Replace. To ne bi delovalo, ker bi zamenjava urejanja na "000004560007" povzročila, da bi oba pojavljanja 000 izginila.

Najprej predlagam, da Jean vstavi začasni stolpec poleg trenutnih cenovnih kod, napiše formulo za izvedbo preoblikovanja, nato pa z Edit-Copy, Edit-PasteSpecial-Values ​​skopira formulo nazaj na prvotne cenovne kode.

Slabo dokumentirana funkcija REPLACE () bo v tem primeru naredila trik. Bil sem razočaran nad izvajanjem REPLACE (). Mislil bi, da bo zahteval določeno besedilo, ki ga je treba zamenjati, vendar namesto tega zahteva, da uporabnik ugotovi položaje znakov, ki jih bo zamenjal. REPLACE bo del besedilnega niza zamenjal z novim nizom. Štirje argumenti, ki jih posredujete funkciji, so celica, ki vsebuje staro besedilo, položaj znaka v starem besedilu, ki ga želite zamenjati, število znakov, ki jih želite nadomestiti, in novo besedilo, ki ga želite uporabiti.

Moja poenostavitvena predpostavka je, da tri ničle predstavljajo začetek kode UPC v nizu. Tako v celici ni treba iskati prvega številskega znaka. Ko formula najde tri ničle, jih lahko nadomesti z nizom "upc".

Če želite poiskati lokacijo prvega pojavljanja "000" v besedilu, uporabite naslednjo formulo:

=FIND(A2,"000")

Formula, ki bi jo moral Jean vnesti v celico B2, bi bila:

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

Moja misel je, da analitiki za določanje cen poudarijo vrsto celic in nato prikličejo ta makro. Makro bo na začetku uporabil zanko z napisom »Za vsako celico v izboru«. S to zanko "celica" postane posebna spremenljivka obsega. Za iskanje naslova, vrednosti ali vrstice trenutne celice v zanki lahko uporabite cell.address ali cell.value ali cell.row. Tu je 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

Upoštevajte, da je to makro uničujočega tipa. Ko uporabnik označi obseg celic in zažene makro, se te celice spremenijo. Samoumevno je, da želite temeljito preizkusiti makro na preskusnih podatkih, preden ga sprostite na resničnih proizvodnih podatkih. Kadar imate situacijo, kot je Jean, ko boste morali nenehno pretvarjati stolpec z zapleteno formulo, je lahko pisanje preprostega makra, kot je prikazan tukaj, učinkovito in prihranek časa.

Zanimive Članki...