Turinys
Yra trys būdai, kaip "Excel" ląstelėje rasti ir ištrinti dublikatus. Tiesiog pasirinkite jums tinkamiausią.
Kai reikia pašalinti pasikartojančias reikšmes ar eilutes, "Microsoft Excel" siūlo daugybę įvairių galimybių. Tačiau kai reikia pašalinti identišką tekstą tam tikroje ląstelėje, "Excel" nesiūlo... nieko. Jokių įrankių, jokių funkcijų, jokių formulių, nieko. Ar tai sutrukdys mums pasiekti tikslą? Jokiu būdu. Jei "Excel" neturi mums reikalingos funkcijos, eikime rašyti savo pačios :)
Kaip pašalinti pasikartojančius žodžius "Excel" ląstelėje
Problema : ląstelėje yra tų pačių žodžių arba teksto eilučių ir norite pašalinti antrąjį ir visus kitus pasikartojimus.
Sprendimas : pasirinktinę naudotojo apibrėžtą funkciją arba VBA makrokomandą.
Vartotojo apibrėžta funkcija, skirta dublikatams ląstelėje pašalinti
Norėdami pašalinti pasikartojantį tekstą ląstelėje, galite naudoti šią naudotojo apibrėžtą funkciją (UDF), pavadintą RemoveDupeWords :
Funkcija 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) Kitaip RemoveDupeWords = "" End If Set dictionary = Nothing End FunctionKaip įterpti funkcijos kodą į darbaknygę
Norėdami į "Excel" pridėti pirmiau nurodytą kodą, turite atlikti šiuos veiksmus:
- Paspauskite Alt + F11, kad atidarytumėte Visual Basic redaktorių.
- Kairiajame lange dešiniuoju pelės klavišu spustelėkite Ši darbo knyga ir pasirinkite Įdėkite > Modulis .
- Įkelkite pirmiau pateiktą kodą į Kodas langas.
Daugiau informacijos rasite skyriuje Kaip įterpti VBA kodą į "Excel".
Funkcijos RemoveDupeWords sintaksė
Mūsų naujai sukurta funkcija, skirta dubliuojančiam tekstui ląstelėje pašalinti, turi tokią sintaksę:
RemoveDupeWords(tekstas, [riboženklis])Kur:
- Tekstas (būtina) - eilutė arba langelis, iš kurio norite ištrinti pasikartojantį tekstą.
- Skirtukas (neprivaloma) - riboženklis, kuriuo atskiriamas pasikartojantis tekstas. Jei praleidžiama, kaip riboženklis naudojamas tarpas.
Funkcija yra neskiriama didžioji ir mažoji raidės , t. y. mažosios ir didžiosios raidės laikomos vienodais ženklais.
Kaip naudoti funkciją RemoveDupeWords
Kai funkcijos kodas bus įtrauktas į sąsiuvinį, galėsite jį naudoti formulėse taip pat, kaip ir "Excel" integruotas funkcijas.
Tiesiog pradėkite rašyti funkcijos pavadinimą po lygybės ženklo, ir jis pasirodys formulės intellisense. Dukart spustelėkite funkciją, ir ji bus įterpta į ląstelę. Apibrėžkite argumentus, įveskite uždaromuosius skliaustelius, paspauskite Enter , ir jūsų formulė bus baigta.
Pavyzdžiui, norėdami iš A2 ištrinti pasikartojančius žodžius, atskirtus kableliu ir tarpeliu, B2 langelyje įveskite toliau pateiktą formulę ir vilkite ją žemyn per tiek langelių, kiek reikia:
=PanaikintiDupeWords(A2, ", ")
Rezultatas - gausite unikalių žodžių arba posistemių, atskirtų ženklu kablelis ir tarpas :
Jei norite gauti kableliais atskirtą sąrašą, naudokite tik kablelis skyrybos ženklą:
=PanaikintiDupeWords(A2, ",")
Jei jūsų šaltinio duomenys atskirti ženklu erdvė , antrasis argumentas turėtų būti " " arba praleistas:
=PanaikintiDupeWords(A2)
Kaip ir bet kuri kita "Excel" funkcija, mūsų UDF perskaičiuoja automatiškai, kai pasikeičia šaltinio duomenys, todėl jūsų rezultatai visada bus aktualūs.
VBA makrokomandos, skirtos ištrinti pasikartojantį tekstą iš kelių ląstelių vienu metu
Jei norite pašalinti pasikartojantį tekstą iš kelių langelių vienu kartu, galite iškviesti RemoveDupeWords Šiuo atveju skirtukas yra užkoduotas, todėl kiekvieną kartą, kai skirtukas pasikeičia, turėsite atnaujinti makrokomandos kodą. Taip pat galite parašyti keletą dažniausiai pasitaikančių skirtukų, pavyzdžiui, tarpo, kablelio arba kablelio ir tarpo, kodo variantų ir suteikti makrokomandai prasmingus pavadinimus, pvz. RemoveDupesDelimSpace .
Makro kodas yra toks:
Public Sub RemoveDupeWords2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeWords(cell.Value, ", " ) Next End SubPirmiau pateiktame kode riboženklis yra kablelis ir tarpas Jei norite naudoti kitokį skirtuką, šioje kodo eilutėje ", " pakeiskite kitu (-iais) simboliu (-ais):
cell.Value = RemoveDupeWords(cell.Value, ", ")
Pastaba. Kad makrokomanda veiktų, jos kodas ir funkcijos RemoveDupeWords kodas turi būti patalpinti tame pačiame modulyje.
Kaip naudoti makrokomandą
Įterpkite makrokomandos kodą į savo darbaknygę arba atidarykite mūsų pavyzdinę darbaknygę su kodu ir atlikite toliau nurodytus veiksmus, kad paleistumėte makrokomandą.
- Pasirinkite ląstelių, iš kurių norite pašalinti pasikartojantį tekstą, intervalą.
- Paspauskite Alt + F8, kad atidarytumėte Makro dialogo langas.
- Makrokomandų sąraše pasirinkite RemoveDupeWords2 .
- Spustelėkite Paleisti .
Daugiau informacijos rasite skyriuje Kaip paleisti makrokomandą "Excel" programoje.
Pastaba. Kadangi makrokomandos veiksmas negali būti atšauktas , prieš pat naudojant makrokomandą, primygtinai rekomenduojame išsaugoti darbaknygę. Tokiu būdu, jei kas nors nepavyks, galėsite tiesiog uždaryti ir vėl atidaryti darbaknygę, ir grįšite ten, kur buvote. Arba galite tiesiog pasidaryti darbalapio (-ių), kuriam (-iems) makrokomanda gali turėti įtakos, kopiją.
Kaip pašalinti pasikartojančius simbolius ląstelėje
Problema : ląstelėje yra keli to paties simbolio pasikartojimai, nors kiekvienoje ląstelėje turėtų būti tik vienas konkretaus simbolio pasikartojimas.
Sprendimas : pasirinktinę naudotojo apibrėžtą funkciją arba VBA makrokomandą.
Vartotojo apibrėžta funkcija, skirta pasikartojantiems simboliams ištrinti
Norėdami pašalinti pasikartojančius simbolius ląstelėje, išsaugodami tik pirmuosius pasikartojimus, galite naudoti šią vartotojo apibrėžtą funkciją, pavadintą RemoveDupeChars :
Funkcija 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 FunctionNorėdami įterpti funkcijos kodą į sąsiuvinį, atlikite tuos pačius veiksmus kaip ir ankstesniame pavyzdyje.
Funkcijos RemoveDupeChars sintaksė
Šios pasirinktinės funkcijos sintaksė yra kuo paprasčiausia - reikalingas tik vienas argumentas:
RemoveDupeChars(tekstas)Kur tekstas yra eilutė arba ląstelė, iš kurios norite pašalinti pasikartojančius simbolius.
Funkcija yra , kai atsižvelgiama į mažąsias ir didžiąsias raides. ir mažąsias bei didžiąsias raides laiko skirtingais ženklais.
Kaip naudoti funkciją RemoveDupeChars
Viskas, ką sakėme apie RemoveDupeWords naudojimą, galioja ir RemoveDupeChars . Taigi, pernelyg nesileisdami į teoriją, iš karto pereikime prie pavyzdžio.
Norėdami ištrinti pasikartojančius simbolius iš A stulpelio, prasidedančio A2, įveskite šią formulę B2 ir nukopijuokite ją žemyn:
=PašalintiDupeChars(A2)
Kaip matote toliau pateiktame paveikslėlyje, funkcija sėkmingai apdoroja įvairių tipų simbolius, įskaitant raides, skaitmenis ir specialiuosius simbolius:
Patarimas. Jei jūsų veikėjus skiria skirtukas pavyzdžiui, tarpą, kablelį ar brūkšnelį, tada naudokite RemoveDupeWords funkciją, kaip parodyta ankstesniame pavyzdyje.
VBA makrokomandos, skirtos tiems patiems ženklams iš ląstelės pašalinti
Kaip RemoveDupeWords . RemoveDupeChars funkciją taip pat galima iškviesti iš makrokomandos:
Public Sub RemoveDupeChars2() Dim cell As Range For Each cell In Application.Selection cell.Value = RemoveDupeChars(cell.Value) Next End SubKadangi šioje UDF nenaudojamas joks skirtukas, jums nereikės atlikti jokių kodo pakeitimų.
Pastaba. Kad makrokomanda veiktų, jos kodas ir UDF RemoveDupeChars kodas turi būti patalpinti tame pačiame VBA redaktoriaus modulyje.
Kaip naudoti makrokomandą
Darant prielaidą, kad makrokomandos kodą jau įdėjote į sąsiuvinį arba atidarėte mūsų pavyzdinį sąsiuvinį, kuriame yra kodas, makrokomandą paleiskite tokiu būdu.
- Pasirinkite ląstelių, iš kurių norite pašalinti pasikartojančius simbolius, intervalą.
- Paspauskite Alt + F8, kad atidarytumėte Makro dialogo langas.
- Makrokomandų sąraše pasirinkite RemoveDupeChars2 .
- Spustelėkite Paleisti .
Pašalinkite pasikartojančias posričių eilutes naudodami "Ultimate Suite
Šios pamokos pradžioje buvo paminėta, kad "Microsoft Excel" neturi integruotos funkcijos, skirtos dublikatams ląstelėje pašalinti. Tačiau mūsų "Ultimate Suite" ją turi!
Jį galite rasti Dublikatų šalintuvas išskleidžiamajame meniu Ablebitų duomenys skirtuke Dedupe grupė. Jei Pašalinti pasikartojančias posričių eilutes parinktis "Excel" programoje nerodoma, įsitikinkite, kad turite įdiegtą naujausią "Ultimate Suite" versiją (nemokamą bandomąją versiją galite atsisiųsti čia).
Jei norite per 5 sekundes (po sekundę kiekvienam veiksmui :) iš kelių langelių pašalinti pasikartojančius žodžius ar tekstą, turite atlikti šiuos veiksmus:
- Pasirinkite šaltinio duomenis ir paleiskite Pašalinti pasikartojančias posričių eilutes įrankis.
- Nurodykite skirtukas .
- Apibrėžti, ar gydyti iš eilės einantys riboženkliai kaip vienetą (numatytoji reikšmė).
- Pasirinkite, ar atlikti , kai atsižvelgiama į mažąsias ir didžiąsias raides. arba Atskirų raidžių ieškoti.
- Spustelėkite Pašalinti .
Atlikta! Jokių VBA ar formulių, tik greiti ir tikslūs rezultatai.
Jei norite daugiau sužinoti apie šį nuostabų priedą, apsilankykite jo pagrindiniame puslapyje. Arba dar geriau - atsisiųskite toliau pateiktą bandomąją versiją ir išbandykite ją!
Štai kaip pašalinti pasikartojantį tekstą ląstelėje. Dėkoju, kad perskaitėte, ir tikiuosi, kad kitą savaitę susitiksime mūsų tinklaraštyje!
Galimi atsisiuntimai
Pavyzdžiai, kaip pašalinti dublikatus ląstelėje (.xlsm faile)
"Ultimate Suite" 14 dienų pilnai veikianti versija (.exe failas)