• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

İsimlere Göre Koşullu Sıralama

  • Konbuyu başlatan Konbuyu başlatan bacik
  • Başlangıç tarihi Başlangıç tarihi
Katılım
26 Mart 2012
Mesajlar
8
Excel Vers. ve Dili
excel 2010
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

İ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
 
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

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.
 
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?
 
Ö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.
 
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
 
İ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;
attachment.php

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.
attachment.php


Sıralanmış Liste;
attachment.php


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

  • OzelListeleriDuzenle.jpg
    OzelListeleriDuzenle.jpg
    103.1 KB · Görüntüleme: 57
  • OzelSiralama kopya.jpg
    OzelSiralama kopya.jpg
    202.3 KB · Görüntüleme: 56
  • SiralanmisListe.jpg
    SiralanmisListe.jpg
    62.3 KB · Görüntüleme: 57
Teşekkürler arakdaşlar. İki yöntem ile de sonuca ulaşabildim.
 
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
 
Geri
Üst