ZDIRY-TUFWT-EBONM-EYJ00-IDBLANTER.COM
ZDIRY-TUFWT-EBONM-EYJ00
BLANTERWISDOM105

VBA Macro Excel Untuk Sort Array Variabel New Collection

9/20/2018

Pendahuluan - VBA Quicksort

VBA Macro Excel Quicksort adalah cara cepat untuk mengurutkan array VBA pada Variabel New Collection. VBA Macro Excel Quicksort dalam tutorial ini lebih mudah untuk digunakan dan berhasil di eksekusi daripada makro jenis macro sort yang ditunjukkan pada situs-situs tutorial excel lainnya.

Pemahaman Algoritma - VBA Quicksort

Agar memahami proses Coding Vba Macro Excel QuickSort, akan lebih baik jika kita memahami dulu proses Algoritma sehingga pada saat penerapannya tidak bingung. Adapun langkah-langkah Algoritma yang dimaksuda adalah:

Data pertama akan dibandingkan dengan data kedua hingga data terakhir jika data pertama tersebut lebih kecil daripada data kedua maka data pertama akan dijadikan sebagai data temporary (vTemp). 

Setelah itu data pertama tadi akan dihapus pada Collection sedangkan vTemp akan disimpan sebelum data terbesar.

Proses penghapusan data tadi mengakibatkan proses perbandingan tidak akan dibandingkan keseluruh susunan data awal karena salah satu data telah dihapus atau di remove. Namun bukan berarti dihapus data Arraynya hanya untuk disimpan sementara.

Demikianlah Algoritma garis besarnya, mohon maaf tidak dapat diterangkan seluruhnya dikarenakan sebuah proses tidak mudah untuk dijelaskan.

Contoh Kasus - VBA Quicksort


Contoh sederhannya yang mungkin dapat dipahami dengan mudah adalah pengurutan huruf-huruf yang tersusun pada Range "A2" hingga "A13" akan di simpan hasilnya ke Range "B2" hingga "B13" atau pada kolom DATA HASIL SORT.



Script untuk Quicksort VBA Macro Excelnya adalah sebagai berikut:

'SORT HTTPS://AGUNGPANDUAN.COM  
 Public Sub QuickSort(coll As Collection, first As Long, last As Long)  
  Dim vCentreVal As Variant, vTemp As Variant  
  Dim lTempLow As Long  
  Dim lTempHi As Long  
  lTempLow = first  
  lTempHi = last  
  'Inputkan index item pertama (1+1/2) = 1  
  vCentreVal = coll((first + last) \ 2)  
  'jalankan proses do while pada saat lTempLow lebih kecil atau sama dengan lTempHi (index terakhir)  
  Do While lTempLow <= lTempHi  
   'membandingkan data kedua hingga terakhir terhadap data pertama  
   Do While coll(lTempLow) < vCentreVal And lTempLow < last  
   'ditemukanlah jumlah data yang paling kecil pada hingga index terakhir  
    lTempLow = lTempLow + 1  
   Loop  
   'membandingkan data terakhir hingga kedua terhadap data pertama  
   Do While vCentreVal < coll(lTempHi) And lTempHi > first  
   'ditemukanlah jumlah data yang paling besar  
    lTempHi = lTempHi - 1  
   Loop  
   'jika jumlah data paling kecil lebih kecil atau sama dengan jumlah data paling besar maka  
   If lTempLow <= lTempHi Then  
    ' Swap values  
    vTemp = coll(lTempLow)  
    coll.Add coll(lTempHi), After:=lTempLow  
    coll.Remove lTempLow  
    coll.Add vTemp, Before:=lTempHi  
    coll.Remove lTempHi + 1  
    ' Move to next positions  
    lTempLow = lTempLow + 1  
    lTempHi = lTempHi - 1  
   End If  
  Loop  
  If first < lTempHi Then QuickSort coll, first, lTempHi  
  If lTempLow < last Then QuickSort coll, lTempLow, last  
 End Sub  


Sedangkan Script untuk mengperlihatkan hasilnya dengan mengklik cell pada Range "B1" adalah sebagai berikut:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)  
   Dim CollectionBaru As New Collection  
   If Not Intersect(Target, Range("B1")) Is Nothing Then  
     For Each Value In Range("A2:A13")  
       CollectionBaru.Add (Value)  
     Next Value  
     'SORT  
     QuickSort CollectionBaru, 1, CollectionBaru.Count  
     For i = 1 To CollectionBaru.Count  
       Cells(i + 1, 2) = CollectionBaru.Item(i)  
     Next i  
   End If  
 End Sub 





Semoga Bermanfaat

Thank you for visiting https://www.agungpanduan.com situs belajar Bordir Wilcom e dan Tajima
Share This :

8 Comments

  1. Tingkatan excell yg lebih tinggi nih..

    BalasHapus
  2. Terimakasih gan,sangat bermanfaat,jadi tambah semangat belajarnya...hehe

    Kunjungi juga..
    Harunup.blogspot.com

    BalasHapus
  3. Mantap gan. Saya request donk buat program vb net

    BalasHapus
  4. Jujur pak saya masih bingung, tapi setelah saya membaca artikel ini lumayan laah dapet pembelajaran

    BalasHapus