• DİKKAT

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

Sayı ve Metin Gibi verileri sıralama sorunu

Katılım
6 Aralık 2009
Mesajlar
18
Excel Vers. ve Dili
2003
Ekte ki dosyada Sayı ve Rakamlardan oluşan bir örnek dosya var

A Hücresi

102L, 102L, 102R
1L, 1R, 1R
33L, 33L, 33R

Normal sıralama yaptığımda en üste 1L, 1R, 1R olması gerekirken 102 en başa gelio sonra 1 sonrada 33 bu şekilde 400 500 tane alt alta satır mevcut

Bunu makro yada formül ile nasıl sıralarım. yada formülsüz. Aşağıdaki gibi sıralansın.

1L, 1R, 1R
1L, 1R, 1R
1L, 1R, 1R
2L, 2R, 2R
2L, 2R, 2R
2L, 2R, 2R
2L, 2R, 2R
33L, 33L, 33R
33L, 33L, 33R
33L, 33L, 33R
102L, 102L, 102R
102L, 102L, 102R
102L, 102L, 102R
 

Ekli dosyalar

Merhaba,

Kod ve fonksiyon kullanmadan biraz uzun işlemle sıralama yaptırabilirsiniz.

A sütununu B sütununa aktarıp, B sütununu Metni sütunlara dönüştür ve ayraç olarak Virgülü seçiniz

B, C ve D sütununda da L ve R harfini kaldırıp (bul değiştir ile yapabilirsiniz) tüm sayfayı B, C ve D sütununa göre sıralama yaptırabilirsiniz.

Sonra B, C ve D sütunlarını silebilirsiniz.
 
Cevap için teşekkür ederim. Lakin verilerim şu şekilde olsa

001L, 001L, 001R

olsa normal a' dan z ye sıralamada istediğim gibi oluyor.
Mesela Makroda şöyle bir şey olamaz mı ?
ilk virgülden Önceki değeri Alıp önüne Aldığı değer 1L ise yani iki karakterse bunun önüne 00 ekleyip 001Ltamamlayıp yan sütuna yazdırsa Şayet alınacak değer 33L ise yani üç karakter ise tek 0 ekleyi 033L yapsa ? olmaz mı ? yani nasıl olur ? var mı bu şekilde yapabilme ihtimali ?
 
Merhaba,

Düşüncenizi sınırlamayınız, vba baya yeteneklidir.

Aşağıdaki kodları bir modüle kopyalayıp deneyiniz.

Kodlar son sütundan sonraki sütune dediğiniz gibi ilk gruba 0 ekler ve yazar. Bu sütuna göre de verileri sıralar ve eklediği sütunu siler.

Kod:
Sub Sirala()
    Dim i   As Long, _
        Sat As Long, _
        Kol As Integer, _
        a, _
        Deg As String
 
 
    Sat = Cells.Find("*", , , , xlByRows, xlPrevious).Row
    Kol = Cells.Find("*", , , , xlByColumns, xlPrevious).Column + 1
 
    Application.ScreenUpdating = False
 
    For i = 2 To Sat
        Deg = Split(Cells(i, "A"), ",")(0)
        Cells(i, Kol) = Application.WorksheetFunction.Rept("0", 8 - Len(Deg)) & Deg
    Next i
 
    Range(Cells(2, "A"), Cells(Sat, Kol)).Sort Key1:=Cells(1, Kol)
    Columns(Kol).Delete
 
End Sub
 

Ekli dosyalar

Necdet Yeşertener Hocam cevabınız için çok teşekkür ederim şayet benim verilerim tek A hücresinde olmasaydı Mesela
A B C D
Mehmet ÇAVDAR 22:00 33L, 33R, 33R
Keman KAZIM 05:00 103L, 103R, 103R
Veli ÇELİK 01:00 1L, 1R, 1R

gibi olsaydı D hücresine göre alfabetik sırayı nasıl yapabilirdim.

A B C D
Veli ÇELİK 01:00 1L, 1R, 1R
Mehmet ÇAVDAR 22:00 33L, 33R, 33R
Keman KAZIM 05:00 103L, 103R, 103R
Resimle belki daha iyi anlatabilirim

117qrh4.jpg


Bunun gibi ?
 
Son düzenleme:
Merhaba,

Örnek dosyanızı doğrudan D sütununa göre demiş olsaydınız çözüm anında bitmiş olacaktı.

Verdiğim Kodda :

Kod:
Deg = Split(Cells(i, "[B][COLOR=red]A[/COLOR][/B]"), ",")(0)

Kırmızı ile yazdığım sütun adını belirtir, siz onu D yapın gerisini kodlara bırakın. Allahtan son sütunu parametrik yapmıştım.
 
Ekte ki dosyada Sayı ve Rakamlardan oluşan bir örnek dosya var

A Hücresi

102L, 102L, 102R
1L, 1R, 1R
33L, 33L, 33R

Normal sıralama yaptığımda en üste 1L, 1R, 1R olması gerekirken 102 en başa gelio sonra 1 sonrada 33 bu şekilde 400 500 tane alt alta satır mevcut

Bunu makro yada formül ile nasıl sıralarım. yada formülsüz. Aşağıdaki gibi sıralansın.

1L, 1R, 1R
1L, 1R, 1R
1L, 1R, 1R
2L, 2R, 2R
2L, 2R, 2R
2L, 2R, 2R
2L, 2R, 2R
33L, 33L, 33R
33L, 33L, 33R
33L, 33L, 33R
102L, 102L, 102R
102L, 102L, 102R
102L, 102L, 102R

.

B2 hücresine;

Kod:
=--LEFT(A2;FIND("L";A2)-1)

yazıp, yeterince aşağıya kopyaladıktan sonra, bu sütuna göre sıralayınız.


Dosyanız ekte.

.
.
 

Ekli dosyalar

Merhaba,

Örnek dosyanızı doğrudan D sütununa göre demiş olsaydınız çözüm anında bitmiş olacaktı.

Verdiğim Kodda :

Kod:
Deg = Split(Cells(i, "[B][COLOR=red]A[/COLOR][/B]"), ",")(0)

Kırmızı ile yazdığım sütun adını belirtir, siz onu D yapın gerisini kodlara bırakın. Allahtan son sütunu parametrik yapmıştım.

Çok teşekkür ederim hocam ;)
 
.

B2 hücresine;

Kod:
=--LEFT(A2;FIND("L";A2)-1)

yazıp, yeterince aşağıya kopyaladıktan sonra, bu sütuna göre sıralayınız.


Dosyanız ekte.

.
.

Öncelikle ilgin için teşekkür ederim ;) ama örneğin
32L, 32L, 32R değeri : 32
32L, 32L, 33R değeri: 32
102L, 102L, 102R değeri: 33 olması lazımken 102 yazıyor.


36L , 36L , 36R 36
36L , 36L , 36R 36
36L , 36L , 36R 36
36L , 36L , 36R 36
102L , 102L , 102R 102 bu 37 olacak
102L , 102L , 102R 102
102L , 102L , 102R 102
102L , 102L , 102R 102
103L , 103L , 103R 103 bu 38
103L , 103L , 103R 103
103L , 103L , 103R 103
104L , 104L , 104R 104 bu 39 gibi
 
Öncelikle ilgin için teşekkür ederim ;) ama örneğin
32L, 32L, 32R değeri : 32
32L, 32L, 33R değeri: 32
102L, 102L, 102R değeri: 33 olması lazımken 102 yazıyor.

Doğal olarak 102 yazacak tabi, L den önceki rakamları alıyor. :)
 
Doğal olarak 102 yazacak tabi, L den önceki rakamları alıyor. :)

Doğrudur. ama benim istediğim L den önceki rakamları alması değil :) Örneğin

D Hücrem E Hücrem
1-------------1
1-------------1
2-------------2
2-------------2
3-------------3
3-------------3
4-------------4
33------------5
33------------6
102-----------7
102-----------7

gibi olması yani e hücresi 1 den başlayacak mesela D2 deki değeri aldı D3 teki aynı ise E3 te karşısına E2 deki değeri yazcak farklı ise 1 arttırcak.

Sanırım demek istediğim bir döngü olacak ve D hücresindeki bir önceki değeri karşılaştırıp aynıysa E hücresine üstekinin aynı değerini değilse bir fazlasını yazacak. Anlatamamışken bile yardım istemek ne berbat bir şey :(
 
Merhaba,

Dosyayı inceleyiniz.

B2
Kod:
1

B3
Kod:
=EĞER(A3=A2;B2;B2+1)
 

Ekli dosyalar

Evet hocam sıralama yapıyor istediğim gibi çok çok teşekkür ederim.
eğer bunu be İlk baştaki Sırala örneğine monte etmek istesem yani Sizin yaptığınız ilk dosyada sırala tuşuna bastığında ne yapmam gerek ordaki döngünün içine bu kodu yazsam olmaz sanırım
Kod:
=EĞER(A3=A2;B2;B2+1)
bu kodu excel yorumlar sanırım vba değil ?
 
Yaptığımın ne kadar doğru olduğunu bilmiyorum ama istediğim sonucu elde edebildim ;) yardımlarınız için teşekkür ederim...
 
Geri
Üst