İsimlere Göre Koşullu Sıralama

Katılım
26 Mart 2012
Mesajlar
8
Excel Vers. ve Dili
excel 2010
Altın Üyelik Bitiş Tarihi
27.05.2019
Arkadaşlar Merhaba,

Ekte gönderdiğim dosyadaki gibi, 1.sayfada dağınık halde bulunun farklı isimlerin altında rakamlar bulunmaktadır.

Benim amacım isimleri altındaki rakamlarla birlikte belirli bir sırada dizebilmek.

Bunu exceli her açtığımda 1.sayafaya tüm verileri kopyaladığımda 2.sayfada otomatik yaptırmak istiyorum.

Kolaylık olması için Kullanılan isimleri A,B,C yaptım. Normalde bağıntısız Ali,İstanbul,Erzincan gibi isimlerim mevcut.

yardımcı olabilirseniz sevinirim. Teşekkürler şimdiden.
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,267
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İkinci sayfanızın kod bölümüne aşağıdaki kodu uygulayınız. İkinci sayfayı tıkladığınızda kod devreye girecektir.

Kod:
Private Sub Worksheet_Activate()
    Worksheets("Sheet2").Range("A:G").Copy Range("A1")
    With Worksheets("Sheet3").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A1:G1"), _
         SortOn:=xlSortOnValues, _
         Order:=xlAscending, _
         DataOption:=xlSortNormal
        .SetRange Range("A:G")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 
Katılım
26 Mart 2012
Mesajlar
8
Excel Vers. ve Dili
excel 2010
Altın Üyelik Bitiş Tarihi
27.05.2019
Yardımınız için teşekkürler.

Dosyaya ekledim ancak çalıştıramadım. Ek'te macro'nun eklenmiş olduğu halini tekrar gönderiyorum. Neyi yanlış yaptığım konusunda yönlendirebilirseniz tekrar deneyeyim.

Bir de bahsettiğim gibi isimlerim (A,B,C değil de Ali veli istanbul gibi isimler olacak makro'd bu değişikliği yapabileceğim kısım tam olarak hangi satır olacak?)
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Kodları modüle yapıştırmışsınız. Korhan Bey'in de belirttiği gibi kodları doğrudan sayfanın kod bölümüne yapıştırmalısınız. bu durumda Sheet2'yi her açtığınızda kodlar otomatik çalışacaktır.

Kod bölümüne yapıştırabilmek için Sheet2'nin sekmesine sağ tıklayıp Kod görüntüle deyin ve açılan sayfaya kodları yapıştırın.
 
Katılım
26 Mart 2012
Mesajlar
8
Excel Vers. ve Dili
excel 2010
Altın Üyelik Bitiş Tarihi
27.05.2019
teşekkürler arkadaşlar. Yönlendirdiğiniz şekilde yaparak İstediğim şekilde bir sonuç elde ettim. Yalnız ufak bir değişikliğe ihtiyacım var.

Benim bu kodu kullanmak istediğim excel sayfasına A,B,C şeklinde alfabetik bir sıra bulunmuyor.

örnek : ali , istanbul , ankara , mehmet , excelweb ( Bunlar dağınık hali.)
excelweb, istanbul,mehmet,ali,ankara (her seferinde bu sıraya göre dizmem gerekiyor.)

Bunu sağlayabilmem için Kod içerisinde hangi bölümü düzenlemem gerekir?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,267
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önerdiğim kod excelin standart sıralama özelliğidir. Yani alfabetik sıralama yapıyor. Son mesajınızdaki sıralama ise özel bir sıralamadır. Farklı kod uygulamak gerekiyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,267
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodu aşağıdaki şekilde düzenleyip deneyiniz.

Kırmızı satırdaki listeyi kendi verilerinizde ki listeye göre düzenleyiniz.

Kod:
Private Sub Worksheet_Activate()
    [COLOR="Red"]Application.AddCustomList ListArray:=Array("D", "B", "E", "A", "F", "C", "G")[/COLOR]
    Worksheets("Sheet2").Range("A:G").Copy Range("A1")
    With Worksheets("Sheet3").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A1:G1"), _
         SortOn:=xlSortOnValues, _
         Order:=xlAscending, _
         CustomOrder:=Application.CustomListCount, _
         DataOption:=xlSortNormal
        .SetRange Range("A:G")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 

aerten

Altın Üye
Katılım
23 Ağustos 2011
Mesajlar
230
Excel Vers. ve Dili
Excel 2019 TR
Excel 365 TR
Altın Üyelik Bitiş Tarihi
15-02-2027
İsteğe göre özel sıralama

Makro dışında da bir yol önereyim. "Özel Liste" ile Sıralama
Excel 2010 TR için
Dosya
**Seçenekler
****Gelişmiş
******Özel Listeleri Düzenle
Sırasını izledikten sonra
Verilerinizi istediğiniz sırada "Liste Girdileri:"ne sıra ile yazın ve ekleyin.
Örneğin;

Genel Müdür, Genel Müdür Yardımcısı, Daire Başkanı, Şube Müdürü, Şef, Teknisyen
biçiminde bir liste girildiğinde, "Sırala ve Filtre Uygula" aracı, "Özel Sıralama" yapıldıktan sonra Sıralama için Unvan sütunu, Düzen için de "Özel Liste", Özel Listede de yaptığınız sırayı seçerek ona göre sıralanmasını sağlayabilirsiniz.


Sıralanmış Liste;


teşekkürler arkadaşlar. Yönlendirdiğiniz şekilde yaparak İstediğim şekilde bir sonuç elde ettim. Yalnız ufak bir değişikliğe ihtiyacım var.

Benim bu kodu kullanmak istediğim excel sayfasına A,B,C şeklinde alfabetik bir sıra bulunmuyor.

örnek : ali , istanbul , ankara , mehmet , excelweb ( Bunlar dağınık hali.)
excelweb, istanbul,mehmet,ali,ankara (her seferinde bu sıraya göre dizmem gerekiyor.)

Bunu sağlayabilmem için Kod içerisinde hangi bölümü düzenlemem gerekir?
 

Ekli dosyalar

Katılım
26 Mart 2012
Mesajlar
8
Excel Vers. ve Dili
excel 2010
Altın Üyelik Bitiş Tarihi
27.05.2019
Teşekkürler arakdaşlar. İki yöntem ile de sonuca ulaşabildim.
 
Katılım
26 Mart 2012
Mesajlar
8
Excel Vers. ve Dili
excel 2010
Altın Üyelik Bitiş Tarihi
27.05.2019
Kodu aşağıdaki şekilde düzenleyip deneyiniz.

Kırmızı satırdaki listeyi kendi verilerinizde ki listeye göre düzenleyiniz.

Kod:
Private Sub Worksheet_Activate()
    [COLOR="Red"]Application.AddCustomList ListArray:=Array("D", "B", "E", "A", "F", "C", "G")[/COLOR]
    Worksheets("Sheet2").Range("A:G").Copy Range("A1")
    With Worksheets("Sheet3").Sort
        .SortFields.Clear
        .SortFields.Add Key:=Range("A1:G1"), _
         SortOn:=xlSortOnValues, _
         Order:=xlAscending, _
         CustomOrder:=Application.CustomListCount, _
         DataOption:=xlSortNormal
        .SetRange Range("A:G")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub


Korhan Bey,

Kod içinde kullandığımız Array komutunun karakter sınırı mı var? Ben belirli bir karakter sayısını geçemedim.

Private Sub Worksheet_Activate()
Application.AddCustomList ListArray:=Array("ActMod_trqCrS", "AFR", "AFS_dm", "AFS_mAirPerCyl", "Air_pIntkVUs", "Air_tAFS", "Air_tCACDs", "ALPHA", "APP_r", "APOLLO1", "APOLLO2", "APOLLO3", "APOLLO4", "Apollo_Bas1", "Apollo_Bas2", "Apollo_Bas3", "Apollo_Bas4", "ASMod_dmEGRDs", "ASMod_dmExhMnfDs", "ASMod_dmIndAirRef", "ASMod_dmIntMnfDs", "ASMod_pExhMnf", "BLOW_VAL", "CEngDsT_t", "TWO", "TWI", "CIMEP1", "CIMEP2", "CIMEP3", "CIMEP4", "EBP_TARGET", "P_TUR_O", "EXH_FLOW", "AIRFLOW", "AFS_dm", "EM_CH4_1", "EM_CH4_2", "EM_CO2_1", "EM_CO2_2", "EM_CO_1", "EM_CO_2", "EM_COH_1", "EM_COH_2", "EM_COL_1", "EM_COL_2", "EM_NO_1", "EM_NO_2", "EM_NOX_1", "EM_NOX_2", "EM_O2_1", "EM_O2_2", "EM_THC_1", "EM_THC_2", "Epm_nEng", "SPEED", "FuelT_t", "T_FUEL_I", "IFQ", "IMEP1", "IMEP2", "IMEP3", "IMEP4", "InjCrv_qMI1Des", "InjSys_qTot", "InjCtl_qSetUnBal", "LAMBDA", "LAMBDA_SPINDT", "LAMBDA_SPINDT_2", "M_ENGINE_I", "MFB10_1", "MFB10_2", "MFB10_3", "MFB10_4", "MFB50_1", "MFB50_1", "MFB50_2", "MFB50_3", "MFB50_4", "NOX_1_SENS",
Worksheets("Sheet3").Range("A:AFX").Copy Range("A1")
With Worksheets("Sheet3").Sort
.SortFields.Clear
.SortFields.Add Key:=Range("A1:G1"), _
SortOn:=xlSortOnValues, _
Order:=xlAscending, _
CustomOrder:=Application.CustomListCount, _
DataOption:=xlSortNormal
.SetRange Range("A:AFX")
.Header = xlYes
.MatchCase = False
.Orientation = xlLeftToRight
.SortMethod = xlPinYin
.Apply
End With
End Sub
 
Üst