Introduction to Sorting an Array in VBA in Hindi
Makhanlal Chaturvedi University / BCA / VBA programming
Sorting Array in Excel VBA - Complete Guide in Hindi
Introduction to Sorting an Array in VBA in Hindi
जब हम Excel VBA में काम करते हैं, तो अक्सर हमें data को किसी निश्चित क्रम (जैसे कि छोटे से बड़े या बड़े से छोटे) में व्यवस्थित करने की ज़रूरत होती है। इसे ही **Array Sorting** कहते हैं। Sorting का उपयोग डेटा को पढ़ने और समझने में आसान बनाने के लिए किया जाता है।
VBA में Arrays एक प्रकार का container होता है जो एक ही प्रकार के कई values को स्टोर कर सकता है। जब इन values को किसी logic के अनुसार क्रमबद्ध किया जाता है, तो उसे हम Sorting कहते हैं।
Sorting के दो मुख्य प्रकार होते हैं:
- Ascending Order (छोटे से बड़े क्रम में)
- Descending Order (बड़े से छोटे क्रम में)
Array को sort करने के लिए हम manual logic का उपयोग करते हैं क्योंकि VBA में built-in sorting method नहीं होता (जैसे JavaScript या Python में होता है)। इसलिए हमें खुद से sorting logic लिखनी होती है। इसके लिए सबसे सामान्य तरीका है **Bubble Sort**, जिस पर हम नीचे विस्तार से चर्चा करेंगे।
Sorting Array in Ascending and Descending Order in Hindi
Ascending Order (छोटे से बड़े क्रम में)
जब हम Array को Ascending Order में sort करते हैं तो उसका मतलब होता है कि सबसे छोटा value पहले आए और सबसे बड़ा value बाद में आए। जैसे यदि हमारे पास array है:
Dim arr() As Integer
arr = Array(5, 3, 8, 1, 4)
Sorting के बाद यह array बनेगा: 1, 3, 4, 5, 8
Descending Order (बड़े से छोटे क्रम में)
Descending Order में सबसे बड़ा value पहले आता है और सबसे छोटा value अंत में। ऊपर दिए गए array को descending करने पर result होगा: 8, 5, 4, 3, 1
Ascending Order के लिए Code
Sub SortArrayAscending()
Dim arr() As Integer
Dim i As Integer, j As Integer, temp As Integer
arr = Array(5, 3, 8, 1, 4)
For i = LBound(arr) To UBound(arr) - 1
For j = i + 1 To UBound(arr)
If arr(i) > arr(j) Then
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
End If
Next j
Next i
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
Descending Order के लिए Code
Sub SortArrayDescending()
Dim arr() As Integer
Dim i As Integer, j As Integer, temp As Integer
arr = Array(5, 3, 8, 1, 4)
For i = LBound(arr) To UBound(arr) - 1
For j = i + 1 To UBound(arr)
If arr(i) < arr(j) Then
temp = arr(i)
arr(i) = arr(j)
arr(j) = temp
End If
Next j
Next i
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
Using Bubble Sort for Array Data in VBA in Hindi
Bubble Sort एक बहुत ही आसान sorting technique है जिसमें adjacent elements की तुलना करके उन्हें आपस में swap किया जाता है अगर वो गलत क्रम में हों। यह प्रक्रिया तब तक दोहराई जाती है जब तक पूरा array sort न हो जाए।
Bubble Sort कैसे काम करता है?
- पहले दो elements की तुलना की जाती है
- अगर पहले वाला बड़ा है तो उन्हें swap कर दिया जाता है
- फिर अगली pair की तुलना होती है
- हर बार सबसे बड़ा element अंत में पहुंचता है (जैसे bubble ऊपर आता है)
- यह प्रक्रिया बार-बार होती है जब तक पूरा array sorted न हो जाए
Bubble Sort का VBA Code
Sub BubbleSortArray()
Dim arr() As Integer
Dim i As Integer, j As Integer, temp As Integer
arr = Array(7, 2, 9, 1, 5)
For i = LBound(arr) To UBound(arr) - 1
For j = 0 To UBound(arr) - i - 1
If arr(j) > arr(j + 1) Then
temp = arr(j)
arr(j) = arr(j + 1)
arr(j + 1) = temp
End If
Next j
Next i
For i = LBound(arr) To UBound(arr)
Debug.Print arr(i)
Next i
End Sub
Practical Use Case of Array Sorting in Excel VBA in Hindi
अब हम समझते हैं कि हम Sorting को Excel के किसी Practical Example में कैसे प्रयोग कर सकते हैं। मान लीजिए आपके पास Excel की किसी Sheet में एक Student की Marks List है, और आप उन Marks को highest से lowest क्रम में दिखाना चाहते हैं।
Example Scenario
- Column A में Student के नाम हैं
- Column B में उनके Marks हैं
- हमें Marks को Descending Order में sort करना है
VBA Code for Sorting Marks Descending Order
Sub SortStudentMarks()
Dim ws As Worksheet
Dim lastRow As Long, i As Long, j As Long
Dim tempMark As Double, tempName As String
Set ws = ThisWorkbook.Sheets("Sheet1")
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
For i = 2 To lastRow - 1
For j = i + 1 To lastRow
If ws.Cells(i, 2).Value < ws.Cells(j, 2).Value Then
tempMark = ws.Cells(i, 2).Value
tempName = ws.Cells(i, 1).Value
ws.Cells(i, 2).Value = ws.Cells(j, 2).Value
ws.Cells(i, 1).Value = ws.Cells(j, 1).Value
ws.Cells(j, 2).Value = tempMark
ws.Cells(j, 1).Value = tempName
End If
Next j
Next i
End Sub
यह Code Sheet1 में Students के Marks को Descending क्रम में sort करता है और उनके नाम को भी उसी के अनुसार swap करता है ताकि नाम और अंक का मिलान सही रहे।
इस प्रकार, Sorting Array in VBA एक बहुत ही उपयोगी और आवश्यक तकनीक है, खासकर जब हमें data को meaningful और user-friendly तरीके से प्रस्तुत करना होता है।