Notes in Hindi

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 तरीके से प्रस्तुत करना होता है।

FAQs

Array Sorting का मतलब होता है VBA में values को एक निश्चित क्रम जैसे Ascending (छोटे से बड़े) या Descending (बड़े से छोटे) क्रम में व्यवस्थित करना। इससे data को समझना और उपयोग करना आसान होता है।
Ascending order में sort करने के लिए आप nested loop और comparison logic का इस्तेमाल कर सकते हैं जहाँ आप छोटे elements को आगे और बड़े को पीछे swap करते हैं। Bubble Sort इसका सबसे सरल तरीका है।
Descending order में sort करने के लिए आप array के elements की तुलना करके बड़े elements को शुरुआत में और छोटे elements को अंत में रख सकते हैं। इसके लिए भी nested loop और swapping logic का प्रयोग होता है।
Bubble Sort एक आसान sorting technique है जिसमें adjacent elements की तुलना करके उन्हें सही क्रम में लाया जाता है। हर pass के बाद सबसे बड़ा या सबसे छोटा element अपने स्थान पर पहुंचता है, जैसे बबल ऊपर आता है।
हाँ, हम Excel sheet से data read करके उसे array में store कर सकते हैं और फिर VBA code से sort कर सकते हैं। इसके बाद sorted data को sheet में वापस लिख सकते हैं।
जब हमें large data sets पर custom logic या automation लागू करना हो, या data को memory में ही process करना हो बिना Excel cells को बार-बार access किए, तब array sorting बहुत उपयोगी होती है क्योंकि यह तेज़ और flexible होती है।

Please Give Us Feedback