Tartalomjegyzék
Az Excelben háromféleképpen kereshet és törölhet duplikátumokat egy cellán belül. Csak válassza ki az Önnek legjobban megfelelőt.
Amikor a duplikált értékek vagy sorok eltávolításáról van szó, a Microsoft Excel számos különböző lehetőséget kínál. De amikor egy adott cellán belüli azonos szöveg eltávolításáról van szó, az Excel... semmit sem kínál. Semmi eszközt, sem funkciót, sem képletet, semmit. Ez megakadályoz minket a célunk elérésében? Semmiképpen. Ha az Excel nem rendelkezik a nekünk szükséges funkcióval, akkor írjunk sajátot :)
Hogyan lehet eltávolítani az ismétlődő szavakat az Excel-cellában
Probléma : Ugyanazok a szavak vagy szöveges karakterláncok vannak egy cellában, és szeretné eltávolítani a második és minden további ismétlést.
Megoldás : egy egyéni, felhasználó által definiált függvény vagy VBA makró.
Felhasználó által definiált függvény a cellán belüli duplikátumok eltávolítására
A cellában lévő duplikált szövegek kiküszöbölésére a következő, felhasználó által definiált függvényt (UDF) használhatja, amelynek neve RemoveDupeWords :
Function RemoveDupeWords(text As String , Optional delimiter As String = " " ) As String Dim dictionary As Object Dim x, part Set dictionary = CreateObject ( "Scripting.Dictionary" ) dictionary.CompareMode = vbTextCompare For Each x In Split(text, delimiter) part = Trim(x) If part "" And Not dictionary.Exists(part) Then dictionary.Add part, Nothing End If Next If dictionary.Count> 0 ThenRemoveDupeWords = Join(dictionary.keys, delimiter) Else RemoveDupeWords = "" End If Set dictionary = Nothing End FunctionA függvény kódjának beillesztése a munkafüzetbe
A fenti kód hozzáadásához az Excelhez a következőket kell tennie:
- Nyomja meg az Alt + F11 billentyűkombinációt a Visual Basic szerkesztő megnyitásához.
- A bal oldali ablaktáblán kattintson a jobb gombbal a ThisWorkbook és válassza a Beillesztés > Modul .
- Illessze be a fenti kódot a Kód: ablak.
További információért lásd: Hogyan illesszünk be VBA-kódot az Excelbe.
RemoveDupeWords függvény szintaxis
Az újonnan létrehozott függvényünk a cellában lévő duplikált szöveg eltávolítására a következő szintaxissal rendelkezik:
RemoveDupeWords(text, [delimiter])Hol:
- Szöveg (kötelező) - egy karakterlánc vagy cella, amelyből törölni szeretné az ismétlődő szöveget.
- Határolójel (opcionális) - az elhatárolójel, amellyel az ismétlődő szöveget elválasztjuk. Ha elhagyjuk, a rendszer szóközt használ az elhatárolójel helyett.
A funkció a következő nem nagy- és kisbetű-érzékeny , ami azt jelenti, hogy a kis- és nagybetűket ugyanolyan karakterként kezelik.
A RemoveDupeWords függvény használata
Miután a függvény kódját hozzáadta a munkafüzetéhez, ugyanúgy használhatja a képleteiben, mint az Excel beépített függvényeit.
Csak kezdje el begépelni a függvény nevét az egyenlőségjel után, és az megjelenik a képlet értelmezésében. Kattintson duplán a függvényre, és máris beillesztheti egy cellába. Adja meg az argumentumokat, írja be a záró zárójelet, nyomja meg az Entert , és a képlet elkészült.
Ha például az A2-ből szeretné törölni a vesszővel és szóközzel elválasztott szavak duplikátumát, írja be az alábbi képletet a B2-be, majd húzza lefelé annyi cellán keresztül, ahány cellán keresztül szükséges:
=RemoveDupeWords(A2, ", ")
Ennek eredményeként egy listát kapunk egyedi szavakból vagy részszavakból, amelyeket egy vessző és szóköz :
Ha inkább vesszővel elválasztott listát szeretne kapni, akkor használja a csak egy vessző az elhatárolójel:
=RemoveDupeWords(A2, ",")
Ha a forrásadatokat egy űr , a második argumentumnak " " -nek kell lennie, vagy el kell hagyni:
=RemoveDupeWords(A2)
Mint bármely más Excel-funkció, a mi UDF-ünk is automatikusan újraszámítja a forrásadatok változásakor, így eredményei mindig naprakészek lesznek.
VBA makró a duplikált szöveg törléséhez több cellából egyszerre
Ha egyszerre több cellából szeretné eltávolítani az ismétlődő szöveget, akkor hívja meg a RemoveDupeWords Ebben az esetben az elválasztójel keményen kódolt, és a makró kódját minden alkalommal frissítenie kell, amikor az elválasztójel megváltozik. Alternatívaként írhat néhány kódváltozatot a leggyakoribb elválasztójelekre, például szóköz, vessző vagy vessző és szóköz, és értelmes nevet adhat a makróknak, pl. RemoveDupesDelimSpace .
A makró kódja a következő:
Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End SubA fenti kódban az elhatároló egy vessző és szóköz Ha más elválasztójelet szeretne használni, helyettesítse a ", " karaktert más karakter(ek)kel ebben a kódsorban:
cell.Value = RemoveDupeWords(cell.Value, ", ")
Megjegyzés: Ahhoz, hogy a makró működjön, a kódjának és a RemoveDupeWords függvény kódjának ugyanabban a modulban kell lennie.
A makró használata
Helyezze be a makró kódját a saját munkafüzetébe, vagy nyissa meg a kódot tartalmazó mintamunkafüzetünket, majd a makró futtatásához hajtsa végre a következő lépéseket.
- Jelölje ki a cellák azon tartományát, amelyből az ismétlődő szöveget el kívánja távolítani.
- Nyomja meg az Alt + F8 billentyűkombinációt a Makró párbeszédpanel.
- A makrók listájában válassza a RemoveDupeWords2 .
- Kattintson a címre. Fuss .
További részletekért lásd: Hogyan futtassunk makrót az Excelben.
Megjegyzés: Mivel a makró művelete nem lehet visszacsinálni , javasoljuk, hogy közvetlenül a makró használata előtt mentse el a munkafüzetet. Így, ha valami rosszul sül el, egyszerűen bezárhatja és újra megnyithatja a munkafüzetet, és pontosan ott lesz, ahol volt. Vagy egyszerűen készítsen egy másolatot a makró által érintett munkalap(ok)ról.
Hogyan lehet eltávolítani a duplikált karaktereket egy cellában?
Probléma : Ugyanannak a karakternek többszörös előfordulása van egy cellában, miközben minden egyes cellában csak egy adott karakter egyetlen előfordulása lehet.
Megoldás : egy egyéni, felhasználó által definiált függvény vagy VBA makró.
Felhasználó által definiált funkció az ismétlődő karakterek törlésére
Ha egy cellán belül a duplikált karaktereket csak az első előfordulásukat megtartva szeretné eltávolítani, akkor a következő, felhasználó által definiált függvényt használhatja, amelynek neve RemoveDupeChars :
Function RemoveDupeChars(text As String ) As String Dim dictionary As Object Dim char As String Dim result As String Set dictionary = CreateObject ( "Scripting.Dictionary" ) For i = 1 To Len(text) char = Mid(text, i, 1) If Not dictionary.Exists(char) Then dictionary.Add char, Nothing result = result & char End If Next RemoveDupeChars = result Set dictionary = Nothing End FunctionA függvény kódjának a munkafüzetbe való beillesztéséhez a lépések pontosan ugyanazok, mint az előző példában.
RemoveDupeChars függvény szintaxis
Ennek az egyéni függvénynek a szintaxisa a lehető legegyszerűbb - csak egy argumentumra van szükség:
RemoveDupeChars(text)Hol szöveg egy karakterlánc vagy cella, amelyből a duplikált karaktereket el kívánja távolítani.
A funkció a következő case-sensitive és a kis- és nagybetűket különböző karakterekként kezeli.
A RemoveDupeChars funkció használata
Minden, amit a RemoveDupeWords használatáról mondtunk, igaz a következőkre is. RemoveDupeChars Tehát anélkül, hogy túlságosan belemennénk az elméletbe, térjünk rá egy példára.
Az A2-től kezdődő A oszlopból a duplikált karakterek törléséhez írja be ezt a képletet a B2-be, és másolja lefelé:
=RemoveDupeChars(A2)
Amint az alábbi képen látható, a funkció sikeresen kezeli a különböző karaktertípusokat, beleértve a betűket, számjegyeket és speciális szimbólumokat:
Tipp: Ha a karaktereket egymástól valamilyen távolság választja el. elhatároló mint például szóköz, vessző vagy kötőjel, akkor használja a RemoveDupeWords függvényt az előző példában bemutatott módon.
VBA makró az azonos karakterek eltávolításához egy cellából
Mint a RemoveDupeWords , a RemoveDupeChars függvényt egy makróból is meg lehet hívni:
Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End SubMivel ez az UDF nem használ semmilyen elválasztójelet, a kódban nem kell semmilyen módosítást végeznie.
Megjegyzés: Ahhoz, hogy a makró működjön, kódját és a RemoveDupeChars UDF kódját ugyanabban a modulban kell elhelyezni a VBA-szerkesztőben.
A makró használata
Feltételezve, hogy már beillesztette a makró kódját a munkafüzetébe, vagy megnyitotta a kódot tartalmazó mintamunkafüzetünket, indítsa el a makrót így.
- Jelölje ki a cellák azon tartományát, amelyből az ismétlődő karaktereket el kívánja távolítani.
- Nyomja meg az Alt + F8 billentyűkombinációt a Makró párbeszédpanel.
- A makrók listájában válassza a RemoveDupeChars2 .
- Kattintson a címre. Fuss .
Duplikált részláncok eltávolítása az Ultimate Suite segítségével
A bemutató elején említettük, hogy a Microsoft Excel nem rendelkezik beépített funkcióval a cellán belüli duplikációk eltávolítására. Az Ultimate Suite azonban igen!
Megtalálható a Duplikátum eltávolító legördülő menü a Ablebits adatok lapon, a Dedupe csoport. Ha a Duplikált részláncok eltávolítása opció nem jelenik meg az Excelben, győződjön meg róla, hogy telepítette az Ultimate Suite legújabb verzióját (az ingyenes próbaverzió letölthető innen).
Ha 5 másodperc alatt (lépésenként egy másodperc :) szeretné eltávolítani az ismétlődő szavakat vagy szöveget több cellából, a következőt kell tennie:
- Válassza ki a forrásadatokat, és indítsa el a Duplikált részláncok eltávolítása eszköz.
- Adja meg a elhatároló .
- Határozza meg, hogy kell-e kezelni egymást követő elválasztójelek egy (alapértelmezett).
- Válassza ki, hogy a case-sensitive vagy case-insensitive keresés.
- Kattintson a címre. Távolítsa el a .
Kész! Nincs VBA-val vagy képletekkel való babrálás, csak gyors és pontos eredmények.
Ha többet szeretne megtudni erről a fantasztikus bővítményről, látogasson el a honlapjára. Vagy még jobb, töltse le az alábbi tesztverziót, és próbálja ki!
Így lehet eltávolítani a duplikált szöveget egy cellában. Köszönöm, hogy elolvastad, és remélem, jövő héten találkozunk a blogon!
Elérhető letöltések
Példák a duplikátumok eltávolítására a cellában (.xlsm fájl)
Ultimate Suite 14 napos, teljesen funkcionális verzió (.exe fájl)