excel-vba
एक सीमा में डुप्लिकेट मान का पता लगाना
खोज…
परिचय
कुछ बिंदुओं पर, आप डेटा की एक श्रेणी का मूल्यांकन करेंगे और आपको इसमें डुप्लिकेट का पता लगाना होगा। बड़े डेटा सेट के लिए, कई दृष्टिकोण हैं जो आप VBA कोड या सशर्त फ़ंक्शन का उपयोग कर सकते हैं। यह उदाहरण एक साधारण अगर-तब की स्थिति के लिए दो नेस्टेड-नेक्स्ट लूप के भीतर परीक्षण करता है कि रेंज में प्रत्येक सेल रेंज में किसी भी अन्य सेल के मूल्य के बराबर है या नहीं।
एक सीमा में डुप्लिकेट का पता लगाएं
निम्नलिखित परीक्षण डुप्लिकेट मानों के लिए A2 से A7 तक होते हैं। टिप्पणी: यह उदाहरण एक समाधान के पहले दृष्टिकोण के रूप में एक संभावित समाधान दिखाता है। किसी श्रेणी की तुलना में सरणी का उपयोग करना तेज़ है और डुप्लिकेट की जांच के लिए संग्रह या शब्दकोश या xml विधियों का उपयोग किया जा सकता है।
Sub find_duplicates()
' Declare variables
Dim ws As Worksheet ' worksheet
Dim cell As Range ' cell within worksheet range
Dim n As Integer ' highest row number
Dim bFound As Boolean ' boolean flag, if duplicate is found
Dim sFound As String: sFound = "|" ' found duplicates
Dim s As String ' message string
Dim s2 As String ' partial message string
' Set Sheet to memory
Set ws = ThisWorkbook.Sheets("Duplicates")
' loop thru FULLY QUALIFIED REFERENCE
For Each cell In ws.Range("A2:A7")
bFound = False: s2 = "" ' start each cell with empty values
' Check if first occurrence of this value as duplicate to avoid further searches
If InStr(sFound, "|" & cell & "|") = 0 Then
For n = cell.Row + 1 To 7 ' iterate starting point to avoid REDUNDANT SEARCH
If cell = ws.Range("A" & n).Value Then
If cell.Row <> n Then ' only other cells, as same cell cannot be a duplicate
bFound = True ' boolean flag
' found duplicates in cell A{n}
s2 = s2 & vbNewLine & " -> duplicate in A" & n
End If
End If
Next
End If
' notice all found duplicates
If bFound Then
' add value to list of all found duplicate values
' (could be easily split to an array for further analyze)
sFound = sFound & cell & "|"
s = s & cell.Address & " (value=" & cell & ")" & s2 & vbNewLine & vbNewLine
End If
Next
' Messagebox with final result
MsgBox "Duplicate values are " & sFound & vbNewLine & vbNewLine & s, vbInformation, "Found duplicates"
End Sub
अपनी आवश्यकताओं के आधार पर, उदाहरण को संशोधित किया जा सकता है - उदाहरण के लिए, n की ऊपरी सीमा रेंज में डेटा के साथ अंतिम सेल की पंक्ति मान हो सकती है, या सही होने की स्थिति में कार्रवाई डुप्लिकेट निकालने के लिए संपादित की जा सकती है मूल्य कहीं और। हालांकि, दिनचर्या के यांत्रिकी में बदलाव नहीं होगा।
Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow