Замените текст у ћелијама - Екцел савети

Преглед садржаја

Јеан је поставио овонедељно Екцел питање:

Покушавам да претворим књигу цена добављача у Екцел како би се њихови УПЦ кодови подударали са нашим системом УПЦ кодова. Њихов ценовник има колону у Екцелу са низом бројева, нпр. 000004560007 ИЛИ цел000612004. Оно што морам да урадим је двоструко. Морам да извадим прве три нуле без брисања било којих других 0 у ћелији. Даље, морам да додам троцифрени код „упц“ пре прве нумеричке цифре у ћелији. Ово ће бити стална потреба. Мораћу да обучим неколико људи за употребу система Екцел.

Звучи као да је Јеан већ размишљао да користи Едит-Реплаце како би се решио три нуле. Ово не би успело, јер би замена измене на „000004560007“ проузроковала нестанак обе појаве 000.

Прво желим да предложим Јеан-у да убаци привремену колону поред тренутних кодова цена, напише формулу да изврши трансформацију, а затим користи Едит-Цопи, Едит-ПастеСпециал-Валуес за копирање формуле преко оригиналних кодова цена.

Лоше документована функција РЕПЛАЦЕ () у овом случају ће учинити трик. Био сам разочаран применом РЕПЛАЦЕ (). Помислио бих да ће тражити одређени текст који ће заменити, али уместо тога тражи да корисник схвати положаје знакова које треба заменити. РЕПЛАЦЕ ће заменити део текстуалног низа новим низом. Четири аргумента која прослеђујете функцији су ћелија која садржи стари текст, положај знака у старом тексту који желите заменити, број знакова који треба заменити и нови текст који треба користити.

Моја претпоставка поједностављења је да три нуле представљају почетак УПЦ кода у низу. Дакле, није потребно тражити први нумерички знак у ћелији. Једном када формула пронађе три нуле, може те три нуле заменити низом "упц".

Да бисте пронашли место првог појављивања „000“ у тексту, користили бисте ову формулу:

=FIND(A2,"000")

Формула коју би Јеан требало да унесе у ћелију Б2 била би:

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

Моја мисао је да аналитичари цена истакну читав низ ћелија, а затим да се позову на овај макро. Макро ће на почетку користити петљу са „За сваку ћелију у избору“. Помоћу ове петље „ћелија“ постаје посебна променљива опсега. Можете да користите целл.аддресс или целл.валуе или целл.ров да бисте пронашли адресу, вредност или ред тренутне ћелије у петљи. Ево макронаредбе:

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

Имајте на уму да је ово макро деструктивног типа. Када корисник истакне низ ћелија и покрене макро, те ћелије ће се променити. Подразумева се да желите темељно тестирати свој макро на тест подацима пре него што га ослободите стварних производних података. Када имате ситуацију попут Јеан-ове, од које ће се непрестано тражити да трансформишете колону користећи сложену формулу, писање једноставног макроа као што је овде илустровани може бити ефикасан алат који штеди време.

Занимљиви Чланци...