Soru Ilişkili combobox'da Sıralama

Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
Merhaba

Ekteki dosyada combobox1'de seçilen veriye göre combobox2 listesi değişiyor. Benim istediğim combobox2'nin alfabetik sıralama değilde değerleri aldığı sutundaki sıralamaya göre listesini sıralaması. Dosyam ektedir

Combobox1 : A1'i seciniz
Combobox2 'nin listesindeki sıralama şu şekilde oluşuyor
10
100
20
200
30
40

Benim isteğim ise
10
20
30
40
100
200
 

Ekli dosyalar

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

ComboBox2.Column = con.Execute("select distinct HAT from [Ayarlar$] where ATÖLYE ='" & ComboBox1.Value & "'").getrows

satırını silin aşağıdakini kopyalayın.

ComboBox2.Column = con.Execute("select HAT from [Ayarlar$] where ATÖLYE ='" & ComboBox1.Value & "'").getrows
 
Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
teşekkür ederim sayın dalgalıkur
 
Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
sayın dalgalıkur
"distinct" silersek excel sütunlarındaki veriler birden fazla olduğu zaman, combobox listesinde veriler mükerrer olarak görünmüyor.

Excel shettindeki verileri aşağıdaki gibi olduğunu düşünelim
A1 10
A1 20
A1 30
A1 40
A1 100
A1 200
A1 200
A1 200
A2 AD
A2 AC
A2 AB

Combobox listesi şu şekilde görünüyor
10
20
30
40
100
200
200
200
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Evet "distinct" benzersiz kayıtları getirmek için kullanılıyor.
Satırda herhangi bir sıralama terimi de mevcut değil.
Ben sorunu çözemedim.
 
Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
Konu günceldir
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
userformdaki kodları silin bunları oraya yapıştırın

Kod:
Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, _
                                              ByVal bScan As Byte, _
                                              ByVal dwFlags As Long, _
                                              ByVal dwExtraInfo As Long)
Private Type evn
    X As Long
    Y As Long
End Type

Private evnMenum As Long
Const evnSol = &H0&
Const evnGeri = &H100&
Const evnSag = &H2&

Private Const VK_LMENU = &HA4
Private Const VK_SNAPSHOT = &H2C
Private Const VK_CONTROL = &H11
Private Const VK_V = &H56
Private Const VK_0x79 = &H79
Private Const KEYEVENTF_EXTENDEDKEY = &H1
Private Const KEYEVENTF_KEYUP = &H2
Private a As Long
Dim i As Long
Dim con As Object
Private Sub ComboBox1_Change()
On Error Resume Next
Label4.ForeColor = vbRed 'label kırmızı olur
If ComboBox1.Value = "" Then
Label4.ForeColor = &H808080    'label gri olur
Exit Sub
End If
ComboBox2.Clear
Set s1 = Sheets(ActiveSheet.Name)
For j = 2 To s1.Cells(Rows.Count, "f").End(3).Row
If ComboBox1.Text = s1.Cells(j, "f") Then
ComboBox2.AddItem s1.Cells(j, "g")
End If
Next j
End Sub

Private Sub UserForm_Initialize()

ComboBox1.Clear
Set s1 = Sheets(ActiveSheet.Name)
son1 = s1.Cells(Rows.Count, "f").End(3).Row
ReDim ara1(son1): ReDim ara2(son1)

For j = 2 To s1.Cells(Rows.Count, "f").End(3).Row
If s1.Cells(j, "f") <> "" Then
Say = Say + 1
ara1(Say) = WorksheetFunction.Trim(s1.Cells(j, "f"))
ara2(Say) = 1
End If
Next j
sat1 = 2

For r = 2 To Say
aranan1 = ara1(r)
If ara2(r) = 1 Then
For i = 2 To Say
If ara1(i) = aranan1 Then
ara2(i) = 0
End If
Next i
ComboBox1.AddItem aranan1
End If

Next r
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
.....
Benim istediğim combobox2'nin alfabetik sıralama değilde değerleri aldığı sutundaki sıralamaya göre listesini sıralaması. Dosyam ektedir
Gerçi Halit Bey bir öneride bulunmuş ancak, bence esas sorun; eğer bu tabloyu bir veri tabanı olarak kabul edersek, "HAT" alanındaki verilerin hem nümerik (A1 verileri) hem de metin (A2 verileri) olarak karışık bir şekilde aynı alanda olmalarından kaynaklanıyor. Öncelikle bu durumun düzeltilmesi gerekir, sonrası daha basit olacaktır.

.
 
Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
Sayın Halit3
Kodları yeni deneme fırsatım oldu. Listede mükerrer kayıtlar görünmekte

Combobox listesi şu şekilde görünüyor
10
20
30
40
100
200
200
200
 

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,632
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Eklediğiniz örnekte A1 sayıdan A2 ise sadece metinsel ifadelerden oluşuyor.
Bunun değişme ihtimali var mıdır? A1 için hem sayı hemde metin olabilir mi?
 
Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,632
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
İstediğiniz veritabanı mantığı ile örtüşen bir durum değil. Değişkenleri değiştirirseniz kodlaması ve raporlaması daha rahat olur.
Atölyeye karşılık gelen veri sadece sayı yada metinden oluşursa aşağıdaki kod işinizi görebilir.

Kod:
sorgu = "select f1,f2 from(select iif(isnumeric(left(yeni,1)),1*yeni) as f1,iif(not isnumeric(left(yeni,1)),yeni) as f2 from(select distinct hat as yeni from [Ayarlar$] where ATÖLYE ='" & ComboBox1.Value & "')) order by f1 , f2"
Set rs = con.Execute(sorgu)
veri = rs.getrows

For Each deg In veri
If deg <> "Null" Then ComboBox2.AddItem deg
Next deg
 
Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
Teşekkür ederim.
Kod çalışıyor, Atölyeye karşılık gelen verileri, metin yada sayı yaparsam
Yapabilirmiyim bi bakalım, yendien teşekkürler bütün emeği geçenelere
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Sayın Halit3
Kodları yeni deneme fırsatım oldu. Listede mükerrer kayıtlar görünmekte

Combobox listesi şu şekilde görünüyor
10
20
30
40
100
200
200
200
birde bu kodları dene

Kod:
Private Sub ComboBox1_Click()

ComboBox2.Clear
Set s1 = Sheets(ActiveSheet.Name)
son1 = s1.Cells(Rows.Count, "g").End(3).Row
ReDim ara1(son1): ReDim ara2(son1)
say = 1
For j = 2 To s1.Cells(Rows.Count, "g").End(3).Row


If s1.Cells(j, "g") <> "" Then
say = say + 1
ara1(say) = WorksheetFunction.Trim(s1.Cells(j, "g"))
ara2(say) = 1
End If
Next j
sat1 = 2

For r = 2 To say

If ComboBox1.Text = s1.Cells(r, "f") Then
aranan1 = ara1(r)
If ara2(r) = 1 Then
For i = 2 To say
If ara1(i) = aranan1 And ComboBox1.Text = s1.Cells(i, "f") Then
ara2(i) = 0

End If
Next i

ComboBox2.AddItem aranan1
End If
Else
ara2(r) = 0
End If
Next r
End Sub



Private Sub UserForm_Initialize()

ComboBox1.Clear
Set s1 = Sheets(ActiveSheet.Name)
son1 = s1.Cells(Rows.Count, "f").End(3).Row
ReDim ara1(son1): ReDim ara2(son1)
say = 1
For j = 2 To s1.Cells(Rows.Count, "f").End(3).Row
If s1.Cells(j, "f") <> "" Then
say = say + 1
ara1(say) = WorksheetFunction.Trim(s1.Cells(j, "f"))
ara2(say) = 1
End If
Next j
sat1 = 2

For r = 2 To say
aranan1 = ara1(r)
If ara2(r) = 1 Then
For i = 2 To say
If ara1(i) = aranan1 Then
ara2(i) = 0
End If
Next i
ComboBox1.AddItem aranan1
End If

Next r
End Sub
 

Ekli dosyalar

Katılım
24 Kasım 2007
Mesajlar
769
Excel Vers. ve Dili
Office 365 - Türkçe
Altın Üyelik Bitiş Tarihi
30-01-2024
Halit bey çalışıyor
Ellerinizi sağlık
 

halit3

Uzman
Uzman
Katılım
18 Ocak 2008
Mesajlar
12,798
Excel Vers. ve Dili
2003 excell türkçe
ve
2007 excell türkçe
Teşekkürler iyi çalışmalar
 
Üst