Мазмұны
Оқулық VBA көмегімен ұяшықтағы қайталанатын сөздерді немесе мәтін жолдарын бөлектеу жолын көрсетеді.
Excel шартты пішімдеуі көшірмелерді кез келген жолмен бөлектеуге мүмкіндік береді: 1-ші ретпен немесе онсыз, бір бағанда немесе бірнеше бағандарда, дәйекті қайталанатын ұяшықтарда және негізгі бағандағы бірдей мәндерге негізделген бүкіл жолдарда. Бірақ, әдеттегідей, «бірақ» бар. Шартты пішімдеу ережелері ұяшық деңгейінде жұмыс істейді, ал сіз бүкіл ұяшықтарды емес, қайталанатын мәтінді бөлектегіңіз келуі мүмкін. Мұны тек макростар арқылы жасауға болады. VBA-мен тәжірибеңіз болмаса да, бұл бетті жабуға асықпаңыз. Мұнда сіз пайдалануға дайын код мысалдарын және оларды жұмыс парақтарыңызда пайдалану туралы егжей-тегжейлі нұсқауларды таба аласыз.
Мәтін регистрін елемей ұяшықтағы қайталанатын сөздерді бөлектеңіз
Бұл мысал ұяшықтағы қайталанатын сөздерді немесе мәтін жолдарын төмендегі суретте көрсетілгендей қызыл қаріп түсімен қалай көлеңкелеу керектігін көрсетеді. Кіші және бас әріптер бірдей таңбалар ретінде қарастырылатынын ескеріңіз. Мысалы, қызғылт сары , қызғылт сары және қызғылт сары бір сөз болып саналады.
макрос коды келесідей:
Public Sub HighlightDupesCaseInsensitive() Диапазон ретінде күңгірт ұяшық Диапазон ретінде Dim Бөлгіш Жолды бөлгіш ретінде = InputBox( "Ұяшықтағы мәндерді бөлетін бөлгішті енгізіңіз" , "Бөлгіш" , ", " ) Әрбір ұяшық үшінApplication.Selection Қоңырауы HighlightDupeWordsInCell(Ұяшық, Бөлгіш, False ) Келесі Соңы Ішкі Ішкі БөлектеуDupeWordsInCell(Ауқым ретінде ұяшық, Жол ретінде қосымша бөлгіш = " " , Қосымша CaseSensitive Логикалық = True ) Мәтінді Жол ретінде күңгірттеу Dim сөздер() Жол ретінде Жол Dim wordIndex, matchCount, positionInText Integer Егер CaseSensitive болса бүтін сан Содан кейін сөздер = Бөлу(Ұяшық.Мәні, Бөлгіш) Басқа сөздер = Бөлу(LCase(Ұяшық.Мәні), Бөлгіш) Аяқтау If үшін wordIndex = LBound (сөздер) UBound (сөздер) - 1 сөз = сөздер(wordIndex) matchCount = 0 NextWordIndex үшін = wordIndex + 1 UBound (сөздер) Егер word = сөздер(nextWordIndex) болса matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Содан кейін text = "" Index үшін = LBound (сөздер) To UBound (сөздер) text = text & сөздер(Индекс) Егер (сөздер(Индекс) = сөз) Онда Ұяшық.Таңбалар(Len(мәтін) - Лен(сөз) + 1, Len(сөз)).Font.Color = vbRed End Егер мәтін = мәтін & Бөлгіш Келесі соңы If Next wordIndex End SubҰяшықтағы қайталанатын мәтінді регистрге сезімтал етіп бөлектеңіз
Көп жағдайда Excel бағдарламасындағы мәтіндік жазбалармен жұмыс істегенде біз әріп регистрін елемейміз. Дегенмен, белгілі бір жағдайларда мәтіндік жағдай маңызды. Мысалы, егер сіз идентификаторлармен, құпия сөздермен немесе осындай түрдегі басқа жазбалармен айналысатын болсаңыз, 1-AA , 1-aa және 1-Aa<сияқты жолдар 2> қайталанбаған және бөлектелмеген жөн:
Бұл жағдайда,кодтың келесі нұсқасын пайдаланыңыз:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "Ұяшықтағы мәндерді бөлетін бөлгішті енгізіңіз" , "Бөлгіш" , ", " ) Әрбір Application.Selection ішіндегі ұяшық HighlightDupeWordsInCell(Ұяшық, Бөлгіш, True ) Келесі Соңғы Ішкі Ішкі БөлектеуDupeWordsInCell(Ауқым ретіндегі ұяшық, Жол ретінде қосымша бөлгіш = " " , Логикалық ретіндегі қосымша регистрге сезімтал = True ) Жол ретінде күңгірт мәтін Dim ретінде Dim сөздер() word As String Dim wordIndex, matchCount, positionInText Integer As Integer If CaseSensitive Содан кейін сөздер = Split(Cell.Value, Delimiter) Басқа сөздер = Split(LCase(Cell.Value), Delimiter) End If for wordIndex = LBound (сөздер) To UBound ( сөздер) - 1 сөз = сөздер(wordIndex) matchCount = 0 NextWordIndex үшін = wordIndex + 1 UBound (сөздер) Егер word = сөздер (nextWordIndex) болса matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 Содан кейін text = "" Index үшін = LBound (сөздер) To UBound (сөздер) text = text & сөздер(Индекс) Егер (сөздер(Индекс) = сөз) Онда Ұяшық.Таңбалар(Len(мәтін) - Лен(сөз) + 1, Len(сөз)).Font.Color = vbRed End Егер мәтін = мәтін & Бөлгіш Next End If Next wordIndex End SubExcel бағдарламасында қайталанатын сөздерді бөлектеу үшін макростарды қалай пайдалану керек
Егер сіз VBA пайдалануды жаңадан бастаған болсаңыз, төмендегі қадамдық нұсқаулар сізге ыңғайлы түрде көмектеседі. . Тәжірибелі қолданушылар мүмкінжүктеп алу сілтемесін таңдап, қалғанын өткізіп жіберіңіз :)
Кодты жұмыс кітабыңызға қосыңыз
Сіз Excel жұмыс кітабына макрос кодын кірістіруден бастайсыз. Мынадай:
- Қайталарды бөлектегіңіз келетін жұмыс кітабын ашыңыз.
- Visual Basic өңдегішін ашу үшін Alt + F11 пернелер тіркесімін басыңыз.
- Сол жақ тақтада, ThisWorkbook түймесін тінтуірдің оң жақ түймешігімен басыңыз және контекстік мәзірден Insert > Модуль таңдаңыз.
- Код терезесіне кодты қойыңыз.
- Макросты болашақта пайдалану үшін сақтау үшін, жұмыс кітабыңызды макрос қосылған .xlsm файлы ретінде сақтауды ұмытпаңыз.
Баламалы түрде жұмыс кітабымыздың үлгісін жүктеп алып, макросты сол жерден іске қоса аласыз. Үлгі жұмыс кітабында келесі макростар бар:
- HighlightDupesCaseInsensitive - әріп регистрін елемейтін ұяшық ішіндегі көшірмелерді көлеңкелейді.
- HighlightDupesCaseSensitive - ерекшелеулер әріп регистрін ескере отырып, ұяшықтағы көшірмелер.
Қосымша ақпарат алу үшін Excel бағдарламасында VBA кодын енгізу жолын қараңыз.
Макросты іске қосыңыз
Кодпен өзіңіздің жұмыс кітабыңызға немесе жүктеп алынған үлгі файлымызға қосылды және ашыңыз, макросты мына жолмен іске қосыңыз:
- Жұмыс парағында қайталанатын мәтінді бөлектегіңіз келетін ұяшықтарды таңдаңыз. Бұл бір ауқым немесе бірнеше көрші емес ауқым болуы мүмкін.
- Alt + F8 пернелерін басыңыз.
- Қызықтыратын макросты таңдап, Орындау түймесін басыңыз.
- Макрос сізден бөлгішті көрсетуді сұрайдытаңдалған ұяшықтардағы мәндерді бөлетін. Алдын ала орнатылған бөлгіш (біздің жағдайда үтір және бос орын) енгізу жолағында автоматты түрде пайда болады. Қажеттіліктеріңізге байланысты әдепкі бөлгішті қалдыруға немесе басқасын теруге болады, содан кейін «Жарайды» түймесін басыңыз.
Біраз уақыттан кейін таңдалған жолдардағы барлық қайталанатын жолдар ұяшықтар қызыл түспен боялады (немесе кодыңызда кез келген қаріп түсі орнатылған).
Кеңес. Ұяшық ішіндегі көшірмелерді жылдам жою үшін Ultimate Suite құрамындағы көп уақытты үнемдейтін құралдардың бірі - Көшірме жолдарды жоюды пайдалануға болады.
Кодты қажеттіліктеріңізге сәйкес реттеу әдісі
Осы пайдалану ескертпелерімен және VBA туралы ең қарапайым біліммен (немесе жай ғана төмендегі нұсқауларды орындау арқылы) сіз кодтарды қажеттіліктеріңізге сәйкес оңай өзгерте аласыз.
Бір модульге орналастырыңыз
Байқағаныңыздай, макростардың екеуі де ( HighlightDupesCaseSensitive және HighlightDupesCaseInsensitive ) HighlightDupeWordsInCell функциясын шақырады. Жоғарыдағы екі макрос арасындағы айырмашылық аталған функцияға жіберілген 3-ші параметрде (CaseSensitive) ғана.
Регистрді ескере отырып іздеу үшін ол TRUE мәніне орнатылады:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
Ренгтерді ескермейтін іздеу үшін ол ЖАЛҒАН мәніне орнатылады:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
Макростар жұмыс істеуі үшін HighlightDupeWordsInCell функциясының коды келесіге орналастырылуы керек. сияқты модульмакростар.
Бөлгіш
Іске қосу кезінде макрос таңдалған ұяшықтардағы сөздерді/жолдарды бөлетін бөлгішті көрсетуді сұрайды. Әдепкі бөлгіш үтір және бос орын (", ") болып табылады және ол InputBox ішінде алдын ала орнатылған:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
Кодыңызда кез келген басқа таңба(лар)ды пайдалана аласыз. алдын ала анықталған бөлгіш ретінде.
Түс
Әдепкі бойынша, HighlightDupeWordsInCell функциясы қызыл қаріп түсінде қайталанады. Түс осы жолда анықталған:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
Мұнда vbRed - VBA түс тұрақтысының түрі. Көшірмелерді басқа түспен көрсету үшін vbRed-ді басқа тұрақтымен ауыстыра аласыз, мысалы, vbGreen, vbYellow, vbBlue, т.б. T қолдау көрсетілетін түс тұрақтыларының тізімін осы жерден табуға болады.
Бұл Excel ұяшықтарында қайталанатын сөздерді қалай ерекшелеуге болады. Оқығаныңыз үшін рахмет және келесі аптада блогымызда көреміз деп үміттенемін!
Қолжетімді жүктеп алулар
Ұяшықтағы көшірмелерді бөлектеуге арналған код мысалдары (.xlsm файлы)
Соңғы Suite 14 күндік толық жұмыс істейтін нұсқасы (.exe файлы)