Sisällysluettelo
Excelissä on kolme tapaa etsiä ja poistaa solun sisällä olevia kaksoiskappaleita. Valitse niistä sinulle parhaiten sopiva.
Kun kyse on päällekkäisten arvojen tai rivien poistamisesta, Microsoft Excel tarjoaa useita eri vaihtoehtoja. Mutta kun kyse on identtisen tekstin poistamisesta tietyssä solussa, Excel ei tarjoa... mitään. Ei työkaluja, ei ominaisuuksia, ei kaavoja, ei mitään. Estääkö se meitä saavuttamasta tavoitettamme? Ei missään tapauksessa. Jos Excelissä ei ole tarvitsemaamme funktiota, kirjoitetaan oma :)
Kuinka poistaa toistuvat sanat Excel-solussa
Ongelma : Sinulla on samoja sanoja tai tekstijonoja solussa ja haluat poistaa toisen ja kaikki seuraavat toistot.
Ratkaisu : mukautettu käyttäjän määrittelemä funktio tai VBA-makro.
Käyttäjän määrittelemä funktio, jolla poistetaan kaksoiskappaleet solun sisällä.
Jos haluat poistaa solun päällekkäisen tekstin, voit käyttää seuraavaa käyttäjän määrittelemää funktiota (UDF), nimeltään 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 FunctionMiten lisätä funktion koodi työkirjaan?
Voit lisätä yllä olevan koodin Exceliin seuraavasti:
- Avaa Visual Basic -editori painamalla Alt + F11.
- Napsauta vasemmassa ruudussa hiiren kakkospainikkeella ThisWorkbook ja valitse Lisää > Moduuli .
- Liitä yllä oleva koodi Koodi ikkuna.
Lisätietoja on kohdassa VBA-koodin lisääminen Exceliin.
RemoveDupeWords-funktion syntaksi
Äskettäin luomaamme funktiota, jolla poistetaan kaksoiskappaleet solusta, käytetään seuraavalla syntaksilla:
RemoveDupeWords(text, [delimiter])Missä:
- Teksti (pakollinen) - merkkijono tai solu, josta haluat poistaa toistuvan tekstin.
- Delimiter (valinnainen) - erotin, jolla toistuva teksti erotetaan toisistaan. Jos se jätetään pois, erotin merkitään välilyönnillä.
Toiminto on ei eroa isojen ja pienten kirjainten välillä , mikä tarkoittaa, että pieniä ja isoja kirjaimia käsitellään samoina merkkeinä.
RemoveDupeWords-toiminnon käyttäminen
Kun funktion koodi on lisätty työkirjaan, voit käyttää sitä kaavoissa samalla tavalla kuin Excelin sisäänrakennettuja funktioita.
Aloita vain kirjoittamaan funktion nimeä yhtäsuuruusmerkin jälkeen, ja se ilmestyy kaavan intellisense-ikkunaan. Kaksoisnapsauta funktiota, niin se lisätään soluun. Määritä argumentit, kirjoita sulkeutuva sulku, paina Enteriä , ja kaava on valmis.
Jos haluat esimerkiksi poistaa pilkulla ja välilyönnillä erotetut kaksoissanat A2:sta, kirjoita alla oleva kaava B2:een ja vedä sitä sitten alaspäin niin monta solua kuin on tarpeen:
=RemoveDupeWords(A2, ", ")
Tuloksena saat luettelon ainutlaatuisista sanoista tai osajonoista, jotka on erotettu toisistaan välilyönnillä pilkku ja välilyönti :
Jos haluat mieluummin pilkulla erotetun listan, käytä komentoa vain pilkku erotinmerkiksi:
=RemoveDupeWords(A2, ",")
Jos lähdetiedot on erotettu välilyönnillä avaruus , toisen argumentin olisi oltava " " tai se olisi jätettävä pois:
=RemoveDupeWords(A2)
Kuten mikä tahansa Excel-funktio, UDF-ohjelmamme laskee automaattisesti uudelleen, kun lähdetiedot muuttuvat, joten tuloksesi ovat aina ajan tasalla.
VBA-makro poistaa päällekkäisen tekstin useista soluista kerralla
Jos haluat poistaa toistuvan tekstin useista soluista kerralla, voit kutsua komentoa RemoveDupeWords funktio makron sisällä. Tällöin rajaaja on kovakoodattu, ja sinun on päivitettävä makron koodi aina, kun rajaaja muuttuu. Vaihtoehtoisesti voit kirjoittaa muutamia koodimuunnoksia yleisimmille rajaajille, esimerkiksi välilyönti, pilkku tai pilkku ja välilyönti, ja antaa makroillesi mielekkäät nimet, esim. RemoveDupesDelimSpace .
Makron koodi on seuraava:
Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End SubYllä olevassa koodissa erotin on merkintä pilkku ja välilyönti Jos haluat käyttää muuta erotinta, korvaa ", " toisella merkillä (muilla merkeillä) tällä koodirivillä:
cell.Value = RemoveDupeWords(cell.Value, ", ")
Huomautus: Jotta makro toimisi, sen koodi ja RemoveDupeWords-funktion koodi on sijoitettava samaan moduuliin.
Miten makroa käytetään
Aseta makron koodi omaan työkirjaasi tai avaa esimerkkityökirjamme, jossa on koodi, ja suorita sitten seuraavat vaiheet makron suorittamiseksi.
- Valitse solualue, josta haluat poistaa toistuvan tekstin.
- Paina Alt + F8 avataksesi Makro valintaikkuna.
- Valitse makrojen luettelosta RemoveDupeWords2 .
- Klikkaa Suorita .
Lisätietoja on kohdassa Makron suorittaminen Excelissä.
Huomautus. Koska makron toiminta ei voi perua Suosittelemme, että tallennat työkirjasi juuri ennen makron käyttöä. Jos jokin menee pieleen, voit yksinkertaisesti sulkea työkirjan ja avata sen uudelleen, jolloin pääset takaisin siihen, missä olit. Voit myös tehdä kopion työarkista (työarkkeista), joihin makro saattaa vaikuttaa.
Kuinka poistaa päällekkäiset merkit solusta?
Ongelma : Sinulla on useita saman merkin esiintymiä solussa, kun taas kussakin solussa pitäisi olla vain yksi kyseisen merkin esiintymä.
Ratkaisu : mukautettu käyttäjän määrittelemä funktio tai VBA-makro.
Käyttäjän määrittelemä toiminto toistuvien merkkien poistamiseksi
Jos haluat poistaa solun sisällä olevat päällekkäiset merkit ja säilyttää vain ensimmäiset esiintymät, voit käyttää seuraavaa käyttäjän määrittelemää funktiota, jonka nimi on 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 FunctionVoit lisätä funktion koodin työkirjaan täsmälleen samoin kuin edellisessä esimerkissä.
RemoveDupeChars-funktion syntaksi
Tämän mukautetun funktion syntaksi on niin yksinkertainen kuin se vain voi olla - tarvitaan vain yksi argumentti:
RemoveDupeChars(teksti)Missä teksti on merkkijono tai solu, josta haluat poistaa päällekkäiset merkit.
Toiminto on case-sensitive ja käsittelee pieniä ja isoja kirjaimia eri merkkeinä.
Miten RemoveDupeChars-funktiota käytetään
Kaikki, mitä sanoimme RemoveDupeWordsin käytöstä, pätee myös seuraavissa tapauksissa RemoveDupeChars Menemättä liikaa teoriaan, siirrymme suoraan esimerkkiin.
Jos haluat poistaa päällekkäiset merkit sarakkeesta A alkaen sarakkeesta A2, kirjoita tämä kaava kohtaan B2 ja kopioi se alaspäin:
=RemoveDupeChars(A2)
Kuten alla olevasta kuvasta näkyy, toiminto käsittelee onnistuneesti eri merkkityyppejä, kuten kirjaimia, numeroita ja erikoismerkkejä:
Vinkki. Jos hahmot ovat erillään toisistaan jonkin verran delimiter kuten välilyönti, pilkku tai yhdysmerkki, käytä sitten RemoveDupeWords toiminto, kuten edellisessä esimerkissä on esitetty.
VBA-makro, jolla poistetaan samat merkit solusta
Kuten RemoveDupeWords ... RemoveDupeChars funktiota voidaan kutsua myös makron sisältä:
Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End SubKoska tässä UDF-ohjelmassa ei käytetä mitään erottimia, sinun ei tarvitse tehdä mitään muutoksia koodiin.
Huomautus: Jotta makro toimisi, sen koodi ja RemoveDupeChars UDF:n koodi on sijoitettava samaan moduuliin VBA-editorissa.
Miten makroa käytetään
Olettaen, että olet jo lisännyt makron koodin työkirjaasi tai avannut koodin sisältävän esimerkkityökirjamme, käynnistä makro näin.
- Valitse solualue, josta haluat poistaa toistuvia merkkejä.
- Paina Alt + F8 avataksesi Makro valintaikkuna.
- Valitse makrojen luettelosta RemoveDupeChars2 .
- Klikkaa Suorita .
Poista päällekkäiset merkkijonot Ultimate Suiten avulla
Tämän ohjeen alussa mainittiin, että Microsoft Excelissä ei ole sisäänrakennettua ominaisuutta kaksoiskappaleiden poistamiseen solusta. Mutta Ultimate Suite -ohjelmassamme on!
Löydät sen osoitteesta Kaksoiskappaleiden poisto pudotusvalikosta Ablebits Data välilehdellä, kohdassa Dedupeeraus ryhmä. Jos Poista päällekkäiset merkkijonot vaihtoehtoa ei näy Excelissäsi, varmista, että sinulla on asennettuna Ultimate Suite -ohjelman uusin versio (ilmaisen kokeiluversion voit ladata täältä).
Voit poistaa toistuvia sanoja tai tekstiä useista soluista 5 sekunnissa (sekunti per vaihe :) seuraavasti:
- Valitse lähdetiedot ja käynnistä Poista päällekkäiset merkkijonot työkalu.
- Määritä delimiter .
- Määrittele, hoidetaanko peräkkäiset erottimet yksi (oletusarvo).
- Valitse, haluatko suorittaa case-sensitive tai case-insensitive etsintä.
- Klikkaa Poista .
Valmis! Ei VBA:n tai kaavojen kanssa näpertelyä, vain nopeat ja tarkat tulokset.
Jos haluat lisätietoja tästä mahtavasta lisäosasta, käy sen kotisivulla. Tai vielä parempi, lataa alla oleva kokeiluversio ja kokeile sitä!
Näin poistat päällekkäisen tekstin solusta. Kiitän sinua lukemisesta ja toivottavasti tapaamme blogissamme ensi viikolla!
Saatavilla olevat lataukset
Esimerkkejä kaksoiskappaleiden poistamisesta solusta (.xlsm-tiedosto)
Ultimate Suite 14 päivän täysin toimiva versio (.exe-tiedosto)