همه در یک زمان به حذف ورودی های تکراری از لیست ورودی های متنی نیاز دارند. فرض کنید مقادیر متنی را در ستون A یک کاربرگ دارید و آنها برای حدود 500 سطر اجرا می شوند. اگر می خواهید موارد تکراری موجود در لیست را حذف کنید، ممکن است به دنبال ساده ترین راه برای انجام آن باشید. در واقع چندین راه وجود دارد که می توانید این کار را در اکسل انجام دهید.
با استفاده از ابزار Delete Duplicates
شاید ساده ترین روش این باشد که داده هایی را انتخاب کنید که می خواهید موارد تکراری را از آنها حذف کنید و سپس تب Data را در نوار نمایش دهید. روی ابزار Remove Duplicates در گروه Data Tools کلیک کنید. اکسل کادر محاوره ای Remove Duplicates را نمایش می دهد.
نکته جالب در مورد کادر محاوره ای Remove Duplicates این است که نام هر ستون را در داده های شما فهرست می کند. (این ابزار فرض می کند که شما برچسب های عنوان را در ردیف اول داده های خود دارید.) سپس می توانید مطمئن شوید که یک علامت تیک در کنار هر ستونی که می خواهید برای موارد تکراری بررسی شود وجود دارد. هنگامی که روی دکمه OK کلیک می کنید، داده های شما تجزیه و تحلیل شده و ردیف های تکراری حذف می شوند. (باز هم، موارد تکراری بر اساس ستون های انتخاب شده در کادر محاوره ای Remove Duplicates تعیین می شوند.)
استفاده از فیلترینگ داده ها
روش دستی دیگر استفاده از فیلتر کردن داده ها برای تعیین مقادیر منحصر به فرد است. اطمینان حاصل کنید که ستون دارای یک برچسب در بالای آن است، سپس یک سلول در ستون را انتخاب کنید. تب Data روبان را نمایش دهید و در گروه Sort & Filter روی Advanced کلیک کنید. از کنترل های موجود در کادر محاوره ای به دست آمده استفاده کنید تا مشخص کنید که می خواهید مقادیر منحصربه فرد را در مکان دیگری که مشخص می کنید کپی کنید.
با استفاده از یک فرمول
همچنین می توانید از یک فرمول برای تعیین دستی موارد تکراری در لیست استفاده کنید. مقادیر موجود در ستون را مرتب کنید و سپس فرمول زیر را در سلول B2 وارد کنید:
=IF(A2=A1,"Duplicate","")
فرمول را در تمام سلول های ستون B که دارای مقدار متناظر در ستون A هستند کپی کنید. همه مقادیر ستون B را انتخاب کنید و Ctrl+C را فشار دهید . از Paste Special برای چسباندن فقط مقادیر در همان سلول های انتخاب شده استفاده کنید. اکنون فرمول ها را به نتایج آنها تبدیل کرده اید. دو ستون را بر اساس محتویات ستون B مرتب کنید و تمام ردیف های تکراری شما در یک ناحیه قرار می گیرند. این ردیف ها را حذف کنید، و لیست تمام شده خود را از مقادیر منحصر به فرد خواهید داشت.
استفاده از ماکرو
رویکردهای دستی سریع و آسان هستند، اما اگر به طور معمول مجبور به حذف مقادیر تکراری از یک ستون هستید، یک ماکرو ممکن است سبک شما باشد. ماکرو زیر مانند روش دستی قبلی به فیلتر کردن داده ها متکی است:
Sub CreateUniqueList()
Dim rData As Range
Dim rTemp As Range
Set rData = Range(Range("a1"), Range("A1048576").End(xlUp))
rData.EntireColumn.Insert
Set rTemp = rData.Offset(0, -1)
rData.AdvancedFilter _
Action:=xlFilterCopy, _
CopyToRange:=rTemp, _
Unique:=True
rTemp.EntireColumn.Copy _
rData.EntireColumn
Application.CutCopyMode = False
rTemp.EntireColumn.Delete
Set rData = Nothing
Set rTemp = Nothing
End Sub
ماکرو یک ستون موقت ایجاد می کند، از فیلتر پیشرفته برای کپی کردن مقادیر منحصر به فرد در آن ستون استفاده می کند، سپس ستون داده اصلی را حذف می کند. نتیجه فقط مقادیر منحصربه فرد در ستون A است. اگر نمی خواهید ماکرو شما از ویژگی فیلتر کردن داده اکسل استفاده کند، ماکرو بسیار کوتاه تر زیر این کار را انجام می دهد:
Sub RemoveDups()
Dim rData As Range
Set rData = Range(Range("a1"), Range("A1048576").End(xlUp))
rData.RemoveDuplicates Columns:=Array(1), Header:=xlYes
End Sub
کلید در این ماکرو استفاده از روش RemoveDuplicates است که به آرایه ای متکی است که شامل شماره ستون هایی است که می خواهید برای موارد تکراری بررسی کنید. ماکرو نشان داده شده در اینجا فقط روی محتویات ستون A عمل می کند، اما می توانید به راحتی آن را تغییر دهید تا روی داده ها در بیش از یک ستون کار کند. تنها کاری که باید انجام دهید این است که rData را طوری تغییر دهید که نشان دهنده ناحیه داده بزرگتر باشد و سپس پارامتر ستون ها را طوری تغییر دهید که به ستون هایی که می خواهید بررسی شوند اشاره کند:
rData.RemoveDuplicates Columns:=Array(1,4), Header:=xlYes
یکی دیگر از رویکردهای مبتنی بر کلان این است که کد خود را برای بررسی مقادیر موجود در مجموعه داده به این روش توسعه دهید:
Sub DelDups()
Dim rngSrc As Range
Dim NumRows As Integer
Dim ThisRow As Integer
Dim ThatRow As Integer
Dim ThisCol As Integer
Dim J As Integer, K As Integer
Application.ScreenUpdating = False
Set rngSrc = ActiveSheet.Range(ActiveWindow.Selection.Address)
NumRows = rngSrc.Rows.Count
ThisRow = rngSrc.Row
ThatRow = ThisRow + NumRows - 1
ThisCol = rngSrc.Column
Start wiping out duplicates
For J = ThisRow To (ThatRow - 1)
If Cells(J, ThisCol) > "" Then
For K = (J + 1) To ThatRow
If Cells(J, ThisCol) = Cells(K, ThisCol) Then
Cells(K, ThisCol) = ""
End If
Next K
End If
Next J
Remove cells that are empty
For J = ThatRow To ThisRow Step -1
If Cells(J, ThisCol) = "" Then
Cells(J, ThisCol).Delete xlShiftUp
End If
Next J
Application.ScreenUpdating = True
End Sub
ماکرو روی انتخابی که قبل از فراخوانی انتخاب می کنید کار می کند. بنابراین، اگر نیاز به حذف سلول های تکراری از محدوده A2:A974 دارید، به سادگی آن محدوده را انتخاب کرده و سپس ماکرو را اجرا کنید. وقتی ماکرو کامل شد، سلول های تکراری و سلول های خالی حذف می شوند.