فهرست مطالب
این آموزش نشان میدهد که چگونه کلمات تکراری یا رشتههای متنی را در یک سلول با استفاده از VBA برجسته کنید.
قالببندی شرطی اکسل این امکان را به شما میدهد تا موارد تکراری را به هر شکلی که فکر میکنید برجسته کنید: با یا بدون وقوع 1، در یک ستون یا چندین ستون، سلول های تکراری متوالی، و کل ردیف ها بر اساس مقادیر یکسان در یک ستون کلید. اما، طبق معمول، یک "اما" وجود دارد. قوانین قالب بندی شرطی در سطح سلول کار می کنند در حالی که ممکن است بخواهید متن تکراری را به جای کل سلول ها برجسته کنید. این کار فقط با ماکروها قابل انجام است. حتی اگر تجربه ای با VBA ندارید، لطفا برای بستن این صفحه عجله نکنید. در اینجا، نمونههای کد آماده استفاده و دستورالعملهای دقیق نحوه استفاده از آنها را در کاربرگهای خود خواهید یافت.
کلمات تکراری را در سلولی که حروف متنی را نادیده میگیرد برجسته کنید
این مثال نشان می دهد که چگونه کلمات تکراری یا رشته های متنی را در یک سلول با رنگ فونت قرمز مانند تصویر زیر سایه بزنید. لطفا توجه داشته باشید که حروف کوچک و بزرگ به عنوان یک کاراکتر در نظر گرفته می شوند. برای مثال، orange ، ORANGE و Orange یک کلمه در نظر گرفته میشوند.
کد ماکرو به شرح زیر است:
Public Sub HighlightDupesCaseInsensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "جداکننده ای را وارد کنید که مقادیر را در یک سلول جدا می کند" , "Delimiter" , ", " ) برای هر سلول درApplication.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False) انتهای بعدی Sub HighlightDupeWordsInCell(سلول به عنوان محدوده، جداکننده اختیاری به عنوان رشته = " "، اختیاری CaseSensitive به عنوان Boolean = True) متن کم نور به عنوان رشته کم نور کلمه (به عنوان کلمه کم رشته) String Dim wordIndex، matchCount، positionInText به عنوان عدد صحیح If CaseSensitive سپس کلمات = Split(Cell.Value، Delimiter) سایر کلمات = Split(LCase(Cell.Value)، Delimiter) End If For wordIndex = LBound (کلمات) به UBound (کلمات) - 1 کلمه = کلمه (wordIndex) matchCount = 0 برای nextWordIndex = wordIndex + 1 To UBound (کلمات) اگر کلمه = کلمات (nextWordIndex) سپس matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 سپس text = "" برای Index = LBound (کلمات) To UBound (کلمات) text = text & words(Index) If (words(Index) = word) then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Subمتن تکراری را در یک سلول حساس به حروف کوچک برجسته کنید
در اکثر شرایط، هنگام کار با ورودی های متنی در اکسل، حروف کوچک را نادیده می گیریم. با این حال، تحت شرایط خاص، مورد متن مهم است. برای مثال، اگر با شناسهها، گذرواژهها یا رکوردهای دیگری از این دست سر و کار دارید، رشتههایی مانند 1-AA ، 1-aa و 1-Aa تکراری نیستند و نباید برجسته شوند:
در این مورد،از نسخه زیر کد استفاده کنید:
Public Sub HighlightDupesCaseSensitive() Dim Cell As Range Dim Delimiter As String Delimiter = InputBox( "جداکننده ای را وارد کنید که مقادیر را در یک سلول جدا می کند" , "Delimiter" , ", " ) برای هر یک Cell In Application.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, True ) انتهای بعدی Sub HighlightDupeWordsInCell(سلول به عنوان محدوده، جداکننده اختیاری به عنوان رشته = " " , اختیاری CaseSensitive به عنوان Boolean = True ) تیره متن به عنوان رشته کم نور word As String Dim wordIndex, matchCount, positionInText as Integer If CaseSensitive then words = Split(Cell.Value, Delimiter) Other words = Split(LCase(Cell.Value), Delimiter) End If For wordIndex = LBound (کلمات) To UBound ( کلمات) - 1 کلمه = کلمات (wordIndex) matchCount = 0 برای nextWordIndex = wordIndex + 1 To UBound (کلمات) اگر کلمه = کلمات (nextWordIndex) سپس matchCount = matchCount + 1 End If Next nextWordIndex If matchCount > 0 سپس text = "" برای Index = LBound (کلمات) To UBound (کلمات) text = text & words(Index) If (words(Index) = word) then Cell.Characters(Len(text) - Len(word) + 1, Len(word)).Font.Color = vbRed End If text = text & Delimiter Next End If Next wordIndex End Subنحوه استفاده از ماکروها برای برجسته کردن کلمات تکراری در Excel
اگر در استفاده از VBA مبتدی هستید، دستورالعمل های گام به گام زیر به راحتی شما را راهنمایی می کند. . کاربران با تجربه ممکن استفقط لینک دانلود را انتخاب کنید و بقیه را رها کنید :)
کد را به کتاب کار خود اضافه کنید
با وارد کردن کد ماکرو در کتاب کار اکسل خود شروع می کنید. به این صورت است:
- کتاب کاری را که میخواهید موارد فریبنده را برجسته کنید باز کنید.
- Alt + F11 را فشار دهید تا ویرایشگر ویژوال بیسیک باز شود.
- در پنجره سمت چپ، روی ThisWorkbook کلیک راست کرده و Insert > Module را از منوی زمینه انتخاب کنید.
- کد را در پنجره Code جایگذاری کنید.
- برای نگه داشتن ماکرو برای استفاده در آینده، حتما کتاب کار خود را به عنوان یک فایل xlsm. دارای قابلیت ماکرو ذخیره کنید.
درعوض، می توانید نمونه کار ما را دانلود کرده و ماکرو را از آنجا اجرا کنید. کتاب کار نمونه حاوی ماکروهای زیر است:
- HighlightDupesCaseInsensitive - با نادیده گرفتن حروف، موارد تکراری را در یک سلول سایه می اندازد.
- HighlightDupesCaseSensitive - هایلایت ها با در نظر گرفتن حروف در یک سلول فریب می دهد.
برای اطلاعات بیشتر، لطفاً به نحوه درج کد VBA در اکسل مراجعه کنید.
ماکرو را اجرا کنید
با کد به کتاب کار خود اضافه شده یا فایل نمونه ما دانلود و باز شده است، ماکرو را به این صورت اجرا کنید:
- در کاربرگ خود، سلول هایی را انتخاب کنید که می خواهید متن تکراری را برجسته کنید. این می تواند یک محدوده یا چندین محدوده غیر مجاور باشد.
- Alt + F8 را فشار دهید.
- ماکرو مورد علاقه را انتخاب کنید و روی Run کلیک کنید.
- ماکرو از شما می خواهد که جداکننده را مشخص کنیدکه مقادیر موجود در سلول های انتخاب شده را از هم جدا می کند. جداکننده از پیش تعیین شده (یک کاما و یک فاصله در مورد ما) به طور خودکار در کادر ورودی ظاهر می شود. بسته به نیازتان، میتوانید جداکننده پیشفرض را رها کنید یا یکی دیگر را تایپ کنید، و سپس روی تأیید کلیک کنید.
یک لحظه بعد، همه رشتههای تکراری در قسمت انتخابی سلول ها با رنگ قرمز (یا هر رنگ قلمی که در کد شما تنظیم شده است) سایه می زنند.
نکته. برای حذف سریع موارد تکراری در یک سلول، می توانید از Remove Duplicate Substrings، یکی از چندین ابزار ذخیره زمان موجود در مجموعه Ultimate ما استفاده کنید.
چگونه کد را برای نیازهای خود تنظیم کنید
با این نکات استفاده و دانش بسیار ابتدایی VBA (یا فقط پیروی دقیق از دستورالعمل های زیر)، می توانید به راحتی کدها را مطابق با نیازهای خود تغییر دهید.
در همان ماژول قرار دهید
همانطور که متوجه شدید، هر دو ماکرو ( HighlightDupesCaseSensitive و HighlightDupesCaseInsensitive ) تابع HighlightDupeWordsInCell را فراخوانی می کنند. تفاوت بین دو ماکرو بالا فقط در پارامتر سوم (CaseSensitive) است که به تابع مذکور ارسال شده است.
برای جستجوی حساس به حروف بزرگ، آن را روی TRUE تنظیم می کنیم:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
برای جستجوی بدون حروف بزرگ، روی FALSE تنظیم شده است:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
برای اینکه ماکروها کار کنند، کد تابع HighlightDupeWordsInCell باید در آن قرار داده شود. همان ماژولماکروها.
Delimiter
هنگام اجرا، ماکرو از شما می خواهد که جداکننده ای را که کلمات/رشته ها را در سلول های انتخاب شده از هم جدا می کند، مشخص کنید. جداکننده پیشفرض یک کاما و یک فاصله (") است و در InputBox از پیش تعیین شده است:
Delimiter = InputBox("Specify the delimiter that separates values in a cell", "Delimiter", ", ")
در کد خود، میتوانید از هر کاراکتر دیگری استفاده کنید. به عنوان جداکننده از پیش تعریف شده.
Color
به طور پیش فرض، تابع HighlightDupeWordsInCell در رنگ فونت قرمز تکرار می شود. رنگ در این خط تعریف می شود:
Cell.Characters(positionInText, Len(word)).Font.Color = vbRed
در اینجا، vbRed نوعی ثابت رنگ VBA است. برای نمایش dupe ها با رنگ های مختلف، می توانید vbRed را با ثابت دیگری مانند vbGreen، vbYellow، vbBlue و غیره جایگزین کنید. T لیست ثابت های رنگی پشتیبانی شده را می توانید در اینجا پیدا کنید.
این نحوه هایلایت کردن کلمات تکراری در سلول های اکسل از خواندن شما سپاسگزارم و امیدوارم هفته آینده شما را در وبلاگ خود ببینیم!
دانلودهای موجود
نمونه های کد برای برجسته کردن موارد تکراری در یک سلول (فایل xlsm.)
Ultimate مجموعه نسخه 14 روزه کاملاً کاربردی (فایل exe)