Szöveg cseréje a cellákban - Excel tippek

Tartalomjegyzék

Jean feltette az e heti Excel kérdést:

Megpróbálom konvertálni az Excel szállítói árkönyvét, hogy az UPC-kódjaikat illessze a UPC-kódrendszerünkhöz. Áraik könyvükben van egy oszlop az Excel-ben, számos számmal, pl. 000004560007 VAGY cel000612004. Amit tennem kell, az kétszeres. Az első három nullát ki kell vennem anélkül, hogy törölnék más cellákat. Ezután hozzá kell adnom egy 3 jegyű "upc" kódot a cellában az első numerikus szám előtt. Ez folyamatos igény lesz. Több embert kell kiképeznem az Excel rendszer használatára.

Úgy hangzik, hogy Jean már fontolóra vette az Edit-Replace használatát a három nullától való megszabaduláshoz. Ez nem működik, mert a "000004560007" szerkesztési helyettesítésével mindkét 000 000 előfordulás eltűnik.

Először azt szeretném javasolni, hogy Jean helyezzen be egy ideiglenes oszlopot az aktuális árkódok mellé, írjon egy képletet az átalakítás elvégzéséhez, majd a Szerkesztés-Másolás, Szerkesztés-BeillesztésSpeciális-Értékek segítségével másolja vissza a képletet az eredeti árkódokra.

A rosszul dokumentált REPLACE () függvény ebben az esetben trükközni fog. Csalódtam a REPLACE () megvalósításában. Azt hittem volna, hogy egy konkrét szöveget kéne cserélni, de ehelyett arra kéri a felhasználót, hogy találja ki a helyettesítendő karakterpozíciókat. A REPLACE a szöveges karakterlánc egy részét lecseréli egy új karakterláncra. A függvénynek átadott négy érv a régi szöveget tartalmazó cella, a helyettesíteni kívánt karakter helye a régi szövegben, a cserélendő karakterek száma és az új használandó szöveg.

Leegyszerűsítő feltételezésem az, hogy a három nulla az UPC-kód kezdetét jelenti a karakterláncban. Így nincs szükség az első numerikus karakter keresésére a cellában. Amint a képlet megtalálja a három nullát, helyettesítheti azt a három nullát az "upc" karakterlánccal.

A "000" első előfordulásának helyének megtalálásához használja a következő képletet:

=FIND(A2,"000")

A képlet, amelyet Jean-nak be kell írnia a B2 cellába, a következő lenne:

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

Azt gondolom, hogy az árelemzők elemezzenek egy sor cellát, majd hívják meg ezt a makrót. A makró egy ciklust fog használni, amelynek elején az "Minden kiválasztott cellához" felirat található. Ezzel a hurokkal a "cella" egy speciális tartományváltozóvá válik. A cell.cím vagy a cell.value vagy a cell.row segítségével megkeresheti az aktuális cella címét, értékét vagy sorát. Itt van a makró:

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

Vegye figyelembe, hogy ez egy destruktív típusú makró. Amikor a felhasználó kiemel egy cellatartományt és futtatja a makrót, akkor ezek a cellák megváltoznak. Magától értetődik, hogy alaposan tesztelni szeretné a makrót a tesztadatokon, mielőtt elengedné azokat a valós termelési adatokon. Ha olyan helyzetben van, mint Jeané, amikor állandóan egy oszlopot kell átalakítania egy összetett képlet segítségével, az itt bemutatotthoz hasonló egyszerű makró megírása hatékony és időtakarékos eszköz lehet.

érdekes cikkek...