Skip to main content

AccessTr.neT


Excel İstediğimiz Sayfanın İstediğimiz Sutundan Sıralı Filtreli Gruplanmış Liste

Excel İstediğimiz Sayfanın İstediğimiz Sutundan Sıralı Filtreli Gruplanmış Liste

#7
(17/01/2020, 10:48)accessman yazdı: Hayırlı cumalar

Sub cmbFill(cmb As ComboBox, cIndex)
    Dim i As Long
    For i = 1 To databaseSheet.Range("A1000").End(xlUp).Row
        cmb.AddItem databaseSheet.Cells(i, cIndex)
        cmb.List(cmb.ListCount - 1, cIndex) = databaseSheet.Cells(i, cIndex + 1)
    Next i
End Sub

bu kod ile listeyi alabiliyoruz ama istediğim şu
alfabetik sıralanmış
filtrelenmiş
her elemanın bir kez listelendiği
şekilde liste nasıl alabilirz

excel bubble sort combobox

Yukarıdaki gibi aratırsanız oldukça fazla çözüm var.
Tabii dosya eklemek en mantıklısı.

Biz eklersek dosya önce bir combo ekleyeceğiz bu combonun adını değiştireceğiz.Sayfanın afını değiştireceğiz.

Sayfaya veriler gireceğiz.Bu veriler metinmi sayısalmı olacak bilemeyeceğiz sizin verilere göre.

Görüldüğü gibi bir sürü işlem Img-grin
Cevapla
#8
ilginiz için teşekkürler
dediğiniz gibi aratacağım ve istediğim de genelde bu tarz cevaplar 
mesela şurasını bir de şöyle dene gibi genelde örnek hazırlamadan verilebilecek fikir yürütmede yardımcı olacak cevaplar
yoksa örneksiz yapılamayacağını düşünsem kendim eklerim
siz yeter ki yol gösterin ben deneyerek uygularım
Cevapla
#9
ferazın dediği şekilde arattım ve şu kodları buldum gayet güzel çalışıyor istediğiniz userforma yapıştırıp kullanabilirsiniz


Private Sub comboYukle(cmb As ComboBox)
    Dim varRange() As Variant
    Dim lngLastRow As Long

    lngLastRow = databaseSheet.Range("B:B").Find(What:="*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
   
    varRange = databaseSheet.Range("B:B").Resize(lngLastRow).Cells
    subQuickSort varRange
    cmb.List = varRange
End Sub

Public Sub subQuickSort(var1 As Variant, _
    Optional ByVal lngLowStart As Long = -1, _
    Optional ByVal lngHighStart As Long = -1)

    Dim varPivot As Variant
    Dim lngLow As Long
    Dim lngHigh As Long

    lngLowStart = IIf(lngLowStart = -1, LBound(var1), lngLowStart)
    lngHighStart = IIf(lngHighStart = -1, UBound(var1), lngHighStart)
    lngLow = lngLowStart
    lngHigh = lngHighStart

    varPivot = var1((lngLowStart + lngHighStart) \ 2, 1)

    While (lngLow <= lngHigh)
        While (var1(lngLow, 1) < varPivot And lngLow < lngHighStart)
            lngLow = lngLow + 1
        Wend

        While (varPivot < var1(lngHigh, 1) And lngHigh > lngLowStart)
            lngHigh = lngHigh - 1
        Wend

        If (lngLow <= lngHigh) Then
            subSwap var1, lngLow, lngHigh
            lngLow = lngLow + 1
            lngHigh = lngHigh - 1
        End If
    Wend

    If (lngLowStart < lngHigh) Then
        subQuickSort var1, lngLowStart, lngHigh
    End If
    If (lngLow < lngHighStart) Then
        subQuickSort var1, lngLow, lngHighStart
    End If

End Sub

Private Sub subSwap(var As Variant, lngItem1 As Long, lngItem2 As Long)
    Dim varTemp As Variant
    varTemp = var(lngItem1, 1)
    var(lngItem1, 1) = var(lngItem2, 1)
    var(lngItem2, 1) = varTemp
End Sub
Cevapla
#10
Bu kadar koda gerek yok Img-grin
Cevapla
#11
Recordset ile yapmayı denediniz mi?
Cevapla
#12
İlginiz için teşekkürler
stackoverflow da bu yöntem için arama yapayım bakalım neler çıkacak
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da