فہرست کا خانہ
ٹیوٹوریل دکھاتا ہے کہ VBA کا استعمال کرتے ہوئے سیل کے اندر ڈپلیکیٹ الفاظ یا ٹیکسٹ سٹرنگز کو کیسے ہائی لائٹ کیا جائے۔
ایکسل کنڈیشنل فارمیٹنگ ہر ممکن طریقے سے ڈپلیکیٹ کو ہائی لائٹ کرنا ممکن بناتا ہے جس کے بارے میں آپ سوچ سکتے ہیں: پہلی وقوع کے ساتھ یا اس کے بغیر، ایک کالم یا ایک سے زیادہ کالموں میں، لگاتار ڈپلیکیٹ سیلز، اور کلیدی کالم میں یکساں اقدار پر مبنی پوری قطاریں۔ لیکن، ہمیشہ کی طرح، ایک "لیکن" ہے. مشروط فارمیٹنگ کے اصول سیل کی سطح پر کام کرتے ہیں جب کہ آپ پورے سیل کے بجائے ڈپلیکیٹ متن کو نمایاں کرنا چاہتے ہیں۔ یہ صرف میکرو کے ساتھ کیا جا سکتا ہے۔ یہاں تک کہ اگر آپ کو VBA کے ساتھ کوئی تجربہ نہیں ہے، تو براہ کرم اس صفحہ کو بند کرنے میں جلدی نہ کریں۔ یہاں، آپ کو استعمال کے لیے تیار کوڈ کی مثالیں اور انہیں اپنی ورک شیٹس میں استعمال کرنے کے بارے میں تفصیلی ہدایات ملیں گی۔
ٹیکسٹ کیس کو نظر انداز کرتے ہوئے سیل میں ڈپلیکیٹ الفاظ کو نمایاں کریں
یہ مثال دکھاتی ہے کہ سیل کے اندر ڈپلیکیٹ الفاظ یا ٹیکسٹ سٹرنگ کو سرخ فونٹ کے رنگ میں شیڈ کرنے کا طریقہ جیسا کہ ذیل کی تصویر میں دکھایا گیا ہے۔ براہ کرم نوٹ کریں کہ چھوٹے اور بڑے حروف کو ایک ہی حروف کی طرح سمجھا جاتا ہے۔ مثال کے طور پر، اورنج ، ORANGE اور Orange کو ایک ہی لفظ سمجھا جاتا ہے۔
The میکرو کا کوڈ درج ذیل ہے:
Public Sub HighlightDupesCaseInsensitive() Dim Cell as رینج Dim Delimiter as String Delimiter = InputBox( "وہ ڈیلیمیٹر درج کریں جو سیل میں اقدار کو الگ کرتا ہے" , "delimiter" , " , " ) ہر سیل کے لیےApplication.Selection Call HighlightDupeWordsInCell(Cell, Delimiter, False ) اگلا اینڈ Sub Sub HighlightDupeWordsInCell(Cell As Range, Optional Delimiter as String = "" , اختیاری CaseSensitive As Boolean = True ) ڈِم ٹیکسٹ As String As( لفظ کے طور پر Dim) String Dim wordIndex، matchCount، positionInText بطور عدد اگر CaseSensitive پھر الفاظ = Split(Cell.Value، Delimiter) Else words = Split(LCase(Cell.Value), Delimiter) End If for wordIndex = LBound (الفاظ) سے UBound (الفاظ) - 1 لفظ = الفاظ(wordIndex) matchCount = 0 for nextWordIndex = wordIndex + 1 سے UBound (الفاظ) اگر لفظ = الفاظ (nextWordIndex) تو matchCount = matchCount + 1 End اگر اگلا nextWordIndex اگر matchCount > 0 پھر ٹیکسٹ = "" انڈیکس کے لیے = ایل باؤنڈ (الفاظ) سے یو باؤنڈ (الفاظ) ٹیکسٹ = ٹیکسٹ & الفاظ (انڈیکس) اگر (الفاظ (انڈیکس) = لفظ) پھر سیل۔ حروف (لین (متن) - لین (لفظ) + 1، لین (لفظ))۔ فونٹ۔ رنگ = vbRed اختتام اگر متن = متن اور amp؛ ڈیلیمیٹر اگلا اینڈ اگر اگلا ورڈ انڈیکس اینڈ ذیلیسیل کیس حساس میں ڈپلیکیٹ ٹیکسٹ کو نمایاں کریں
زیادہ تر حالات میں، ہم ایکسل میں ٹیکسٹ اندراجات کے ساتھ کام کرتے وقت لیٹر کیس کو نظر انداز کرتے ہیں۔ بعض حالات میں، تاہم، ٹیکسٹ کیس اہمیت رکھتا ہے۔ مثال کے طور پر، اگر آپ IDs، پاس ورڈز، یا اس قسم کے دیگر ریکارڈز کے ساتھ کام کر رہے ہیں، تو تاریں جیسے 1-AA ، 1-aa اور 1-Aa ڈپلیکیٹ نہیں ہیں اور ان کو نمایاں نہیں کیا جانا چاہئے:
اس صورت میں،کوڈ کے درج ذیل ورژن کا استعمال کریں:
Public Sub HighlightDupesCaseSensitive() Dim Cell as Range Dim Delimiter as String Delimiter = InputBox( "وہ حد بندی درج کریں جو سیل میں اقدار کو الگ کرتا ہے" , "delimiter" , ", " ) ہر ایک کے لیے ایپلی کیشن میں سیل۔ سلیکشن کال ہائی لائٹDupeWordsInCell(Cell, Delimiter, True) اگلا اینڈ ذیلی Sub HighlightDupeWordsInCell(سیل بطور رینج، اختیاری ڈیلیمیٹر بطور اسٹرنگ = "" , اختیاری کیس حساس جیسا کہ بولین = ٹرو) ڈِم ٹیکسٹ ڈائم (String کے طور پر) لفظ اسٹرنگ کے طور پر مدھم wordIndex، matchCount، positionInText بطور عدد اگر CaseSensitive تو الفاظ = Split(Cell.Value، Delimiter) باقی الفاظ = Split(LCase(Cell.Value)، Delimiter) End If for wordIndex = LBound (الفاظ) سے UBound ( الفاظ) - 1 لفظ = الفاظ (ورڈ انڈیکس) میچ کاؤنٹ = 0 اگلا کے لیے 0 پھر ٹیکسٹ = "" انڈیکس کے لیے = ایل باؤنڈ (الفاظ) سے یو باؤنڈ (الفاظ) ٹیکسٹ = ٹیکسٹ & الفاظ (انڈیکس) اگر (الفاظ (انڈیکس) = لفظ) پھر سیل۔ حروف (لین (متن) - لین (لفظ) + 1، لین (لفظ))۔ فونٹ۔ رنگ = vbRed اختتام اگر متن = متن اور amp؛ ڈیلیمیٹر اگلا اینڈ اگر اگلا ورڈ انڈیکس اینڈ سبایکسل میں ڈپلیکیٹ الفاظ کو نمایاں کرنے کے لیے میکروز کا استعمال کیسے کریں
اگر آپ VBA استعمال کرنے کے ابتدائی ہیں، تو ذیل میں مرحلہ وار ہدایات آپ کو آرام سے لے جائیں گی۔ . تجربہ کار صارفین کر سکتے ہیں۔بس ڈاؤن لوڈ کا لنک منتخب کریں اور باقی کو چھوڑ دیں :)
اپنی ورک بک میں کوڈ شامل کریں
آپ اپنی ایکسل ورک بک میں میکرو کا کوڈ داخل کرنے کے ساتھ شروع کرتے ہیں۔ یہ طریقہ ہے:
- ورک بک کو کھولیں جہاں آپ ڈوپس کو ہائی لائٹ کرنا چاہتے ہیں۔
- بصری بنیادی ایڈیٹر کو کھولنے کے لیے Alt + F11 دبائیں۔
- بائیں پین پر، یہ ورک بک پر دائیں کلک کریں اور سیاق و سباق کے مینو سے داخل کریں > ماڈیول کو منتخب کریں۔
- کوڈ ونڈو میں کوڈ چسپاں کریں۔ 13 نمونے کی ورک بک میں درج ذیل میکرو ہوتے ہیں:
- HighlightDupesCaseInsensitive - لیٹر کیس کو نظر انداز کرتے ہوئے سیل کے اندر ڈپلیکیٹ شیڈز۔
- HighlightDupesCaseSensitive - ہائی لائٹس لیٹر کیس پر غور کرتے ہوئے سیل میں دھوکہ دہی۔
- اپنی ورک شیٹ میں، وہ سیل منتخب کریں جہاں آپ ڈپلیکیٹ ٹیکسٹ کو نمایاں کرنا چاہتے ہیں۔ یہ ایک رینج یا متعدد غیر ملحقہ رینجز ہو سکتی ہیں۔
- Alt + F8 دبائیں۔
- دلچسپی کا میکرو منتخب کریں اور چلائیں پر کلک کریں۔
- میکرو آپ سے حد بندی کی وضاحت کرنے کو کہے گا۔جو منتخب سیلز میں اقدار کو الگ کرتا ہے۔ پیش سیٹ ڈیلیمیٹر (ہمارے معاملے میں ایک کوما اور ایک جگہ) ان پٹ باکس میں خود بخود ظاہر ہو جائے گا۔ آپ کی ضروریات پر منحصر ہے، آپ پہلے سے طے شدہ حد بندی کو چھوڑ سکتے ہیں یا کوئی مختلف ٹائپ کر سکتے ہیں، اور پھر ٹھیک ہے پر کلک کر سکتے ہیں۔
مزید معلومات کے لیے، براہ کرم ایکسل میں VBA کوڈ داخل کرنے کا طریقہ دیکھیں۔
میکرو کو چلائیں
کوڈ کے ساتھ آپ کی اپنی ورک بک میں شامل کریں یا ہماری نمونہ فائل ڈاؤن لوڈ اور کھولی گئی، میکرو کو اس طرح چلائیں:
ایک لمحے بعد، منتخب کردہ تمام ڈپلیکیٹ سٹرنگز سیلز سرخ رنگ میں شیڈ کیے جائیں گے (یا آپ کے کوڈ میں فونٹ کا جو بھی رنگ سیٹ کیا گیا ہے)۔
ٹپ۔ سیل کے اندر تیزی سے ڈپلیکیٹس کو ہٹانے کے لیے ، آپ ڈپلیکیٹ سبسٹرنگز کو ہٹانے کے لیے استعمال کر سکتے ہیں، جو ہمارے الٹیمیٹ سویٹ میں شامل کئی اوقات بچانے والے ٹولز میں سے ایک ہے۔
اپنی ضروریات کے لیے کوڈ کو کیسے ایڈجسٹ کریں
استعمال کے ان نوٹوں اور VBA کی بنیادی معلومات کے ساتھ (یا نیچے دی گئی ہدایات پر قریب سے عمل کرتے ہوئے)، آپ آسانی سے اپنی ضروریات کے مطابق کوڈز میں ترمیم کر سکتے ہیں۔
اسی ماڈیول پر رکھیں
جیسا کہ آپ دیکھ سکتے ہیں، دونوں میکرو ( HighlightDupesCaseSensitive اور HighlightDupesCaseInsensitive ) HighlightDupeWordsInCell فنکشن کو کال کرتے ہیں۔ مذکورہ بالا دو میکروز کے درمیان فرق صرف تیسرے پیرامیٹر (کیس سینسیٹو) میں ہے جو مذکورہ فنکشن کو دیا گیا ہے۔
کیس حساس تلاش کے لیے، یہ درست ہے:
Call HighlightDupeWordsInCell(Cell, Delimiter, True)
کیس غیر حساس تلاش کے لیے، یہ FALSE پر سیٹ ہے:
Call HighlightDupeWordsInCell(Cell, Delimiter, False)
میکروز کے کام کرنے کے لیے، HighlightDupeWordsInCell فنکشن کا کوڈ اس پر رکھا جانا چاہیے۔ کے طور پر ایک ہی ماڈیولmacros.
delimiter
جب چلایا جائے گا، میکرو آپ سے اس حد بندی کی وضاحت کرنے کو کہے گا جو منتخب سیلز میں الفاظ/سٹرنگ کو الگ کرتا ہے۔ پہلے سے طے شدہ حد بندی ایک کوما اور ایک اسپیس (", ") ہے اور یہ ان پٹ باکس میں پہلے سے سیٹ ہے:
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 وہ سپورٹڈ رنگ کنسٹینٹ کی فہرست یہاں دیکھی جا سکتی ہے۔
یہ ہے ایکسل سیلز میں ڈپلیکیٹ الفاظ کو کیسے نمایاں کریں۔ میں پڑھنے کے لیے آپ کا شکریہ ادا کرتا ہوں اور امید کرتا ہوں کہ آپ کو اگلے ہفتے ہمارے بلاگ پر ملوں گا!
دستیاب ڈاؤن لوڈز
سیل میں ڈپلیکیٹس کو نمایاں کرنے کے لیے کوڈ کی مثالیں (.xlsm فائل)
Ultimate سویٹ 14 دن کا مکمل طور پر فعال ورژن (.exe فائل)