استیو آدرس های ایمیل را در یک سند Word نگه می دارد. برای یافتن و حذف آدرس های تکراری، او باید آدرس ها را به یک کتاب کار اکسل منتقل کند. استیو متعجب است که آیا راهی برای حذف موارد تکراری در Word وجود دارد.
برای اهداف این نکته، من فرض میکنم که هر آدرس ایمیل در پاراگراف خودش است، به این معنی که در انتهای هر آدرس یک بازگشت سخت وجود دارد. همچنین، آدرسها در متن معمولی هستند، نه در داخل. یک میز.
با در نظر گرفتن این موضوع، ماکرو زیر می تواند کمک بزرگی باشد. از دو حلقه For...Next برای گام برداشتن در پاراگراف های جداگانه در یک سند به عقب استفاده می کند. هنگامی که یک پاراگراف تکراری قرار می گیرد، تکراری حذف می شود. ماکرو نیازی به مرتب سازی آدرس های ایمیل ندارد.
Sub DelDupesFull()
Dim J As Long
Dim K As Long
Application.ScreenUpdating = False
With ActiveDocument
For J = .Paragraphs.Count - 1 To 1 Step -1
For K = .Paragraphs.Count To J + 1 Step -1
If .Paragraphs(J).Range.Text = _
.Paragraphs(K).Range.Text Then _
.Paragraphs(K).Range.Delete
Next K
Next J
End With
Application.ScreenUpdating = True
End Sub
توجه داشته باشید که دو پاراگراف باید دقیقاً یکسان باشند. برای مثال، اگر یک پاراگراف در ابتدا یا انتهای آن یک فضای اضافی داشته باشد یا یکی با حروف بزرگ متفاوت باشد، آنها یکسان در نظر گرفته نمیشوند و یکی حذف نمیشود. ماکرو همچنین روی تمام پاراگراف های یک سند کار می کند، نه فقط روی بخشی از آنها.
اگر تغییری را ترجیح می دهید که فقط بر روی متن انتخاب شده کار کند، موارد زیر برای شما کار خواهند کرد:
Sub DelDupesSec()
Dim J As Long
Dim K As Long
Application.ScreenUpdating = False
With Selection
For J = .Paragraphs.Count - 1 To 1 Step -1
For K = .Paragraphs.Count To J + 1 Step -1
If .Paragraphs(J).Range.Text = _
.Paragraphs(K).Range.Text Then _
.Paragraphs(K).Range.Delete
Next K
Next J
End With
Application.ScreenUpdating = True
End Sub
برای استفاده از ماکرو، کافی است پاراگراف هایی را که می خواهید تحت تأثیر قرار دهید انتخاب کنید و سپس آن را اجرا کنید. هیچ چیز خارج از پاراگراف های انتخابی شما اصلاح نخواهد شد.
من راه حل های ممکن مبتنی بر کلان را ابتدا با این فرض ارائه کردم که حذف موارد تکراری کاری است که باید به طور منظم یا روی چندین فایل انجام شود. در حقیقت، نیازی به استفاده از ماکرو نیست. روشی وجود دارد که میتوانید از آن استفاده کنید که بر قابلیتهای عام قابلیتهای Find and Replace Word تکیه دارد. این مراحل را دنبال کنید:
- پاراگراف های حاوی آدرس های ایمیل را مرتب کنید.
- Ctrl+H را فشار دهید تا تب Replace در کادر محاوره ای Find and Replace نمایش داده شود.
- در صورت موجود بودن دکمه More را کلیک کنید.
- مطمئن شوید که تیک Use Wildcards انتخاب شده باشد.
- در کادر Find What، " (*^13)@ " (بدون علامت نقل قول) را وارد کنید.
- در کادر Replace With، " 1 " را وارد کنید (دوباره بدون علامت نقل قول).
- روی Replace All کلیک کنید.
- کادر گفتگوی Find and Replace را ببندید.
این به دلیل نحوه تنظیم الگوی موجود در کادر Find What (مرحله 5) کار می کند. قسمت اول، در داخل پرانتز، هر چیزی (ستاره) را پیدا می کند که به یک بازگشت سخت ختم می شود ( ^13 ). قسمت دوم علامت @ است که به معنای "یافتن یک یا چند مورد از موارد قبلی" است. بنابراین، پاراگراف های تکراری را پیدا می کند که یکی پس از دیگری هستند. (به همین دلیل است که مرحله اول، مرتب سازی آدرس های ایمیل، ضروری است.) سپس با هر آنچه در پرانتز در مرحله 5 بود، جایگزین می شوند.
این ممکن است کمک کند که چه چیزی در حال وقوع است کمی بهتر توضیح دهد. بیایید بگوییم که پس از مرتب سازی، لیست آدرس های ایمیل شما به شکل زیر است:
1 allen@abcd.com
2 bill@efgh.com
3 bill@efgh.com
4 bill@efgh.com
5 cari@ijkl.com
توجه داشته باشید که من اعداد اصلی را اینجا اضافه کردم تا فقط به توضیح کمک کنم. آنها بخشی از لیست آدرس های ایمیل نیستند.
الگوی Find What، (*^13)@ با پاراگراف های 2-4 مطابقت دارد زیرا پاراگراف 2 که با بخشی از الگوی داخل پرانتز مطابقت دارد، دو بار دیگر در خطوط 3 و 4 تکرار می شود. (به یاد داشته باشید که نماد @ مطابقت دارد . "یک یا چند مورد از موارد فوق.") سپس این تطابق سه پاراگراف با آنچه که در ابتدا با بخش *^13 الگوی Find What مطابقت داشت جایگزین می شود، که به معنای محتوای خط 2 است. بنابراین، اثر این است که پاراگراف های 2-4 با بند 2 جایگزین می شوند و موارد تکراری حذف می شوند.