• DİKKAT

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

Kitabın tamamında sort yapmak? (Sıralamak)

  • Konbuyu başlatan Konbuyu başlatan s.savas
  • Başlangıç tarihi Başlangıç tarihi
Katılım
12 Ocak 2009
Mesajlar
838
Excel Vers. ve Dili
2003
Merhaba arkadaşlar.
Aşağıdaki kodu kitabın tamamında sorty yapabilmesi için nasıl düzenleriz.

Kod:
Range("B6:AR65536").Select
Selection.Sort Key1:=Range("B6"), Order1:=xlAscending, Key2:=Range("C6" _
), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _
False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2 _
:=xlSortNormal
 
Selamlar,

Sayfaları döngüye alarak bu işlemi yapabilirsiniz.

Kod:
Option Explicit
 
Sub TÜM_SAYFALARDA_SIRALAMA()
    Dim SAYFA As Worksheet
 
    For Each SAYFA In ThisWorkbook.Worksheets
        SAYFA.Range("B6:AR65536").Sort Key1:=SAYFA.Range("B6"), Order1:=xlAscending, _
        Key2:=SAYFA.Range("C6"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
        MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
    Next
 
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Selamlar,

Sayfaları döngüye alarak bu işlemi yapabilirsiniz.

Kod:
Option Explicit
 
Sub TÜM_SAYFALARDA_SIRALAMA()
    Dim SAYFA As Worksheet
 
    For Each SAYFA In ThisWorkbook.Worksheets
        SAAYFA.Range("B6:AR65536").Sort Key1:=SAYFA.Range("B6"), Order1:=xlAscending, _
        Key2:=SAYFA.Range("C6"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
        MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
    Next
 
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

Korhan hocam ilginize çok teşekkür ederim. Yazdığınız kodu aşağıdaki gibi kullanmak istediğim koda ekledim ancak sıralama yapmadı. Nerede hata yapıyorum anlamadım.

Kod:
Private Sub cmdYENİKAYIT_Click()

For Each bak In Range("B1:B" & WorksheetFunction.CountA(Range("B1:B65000")))
If bak.Value = TextBox2.Value Then
MsgBox "Bu Kayıt numarası bulundu."
Exit Sub
End If

If TextBox2.Text = "" Then
MsgBox "Lütfen önce Malzemenin / İlacın Adını Giriniz...", , "Kayıt Hatası!!!"
Exit Sub
End If

If TextBox6.Text = "" Then
MsgBox "Lütfen Kritik Seviye Bilgisini Giriniz...", , "Kayıt Hatası!!!"
Exit Sub
End If

Next bak
For Each bak In Range("C1:C" & WorksheetFunction.CountA(Range("C1:C65000")))
If StrConv(bak.Value, vbUpperCase) = StrConv(TextBox2.Value, vbUpperCase) Then
MsgBox "" & TextBox2.Value & "Bu isminde bir kaydınız zaten mevcut, aynı malzemeden mükerrer kayıt yapamazsınız!"
Exit Sub
End If

Next bak
n = Cells(65536, 3).End(xlUp).Row - 4
Label9 = n

For i = 1 To Worksheets.Count
    With Sheets(i)
        satır = .Cells(Rows.Count, "C").End(xlUp).Row + 1
        .Cells(satır, "B").Value = Label9 * 1
        .Cells(satır, "B").HorizontalAlignment = xlCenter
        .Cells(satır, "C").Value = TextBox2.Value
        .Cells(satır, "D").Value = TextBox8.Value
        '.Cells(satır, "E").Value = TextBox5.Value
        .Cells(satır, "AP").Value = TextBox6.Value
.Cells(satır, "A").Value = "=IF(RC[3]="""",0,RC[3]-R2C3)"
.Cells(satır, "AO").Value = "=SUM(RC[-5]:RC[-2])"
.Cells(satır, "AQ").Value = "=IF(AND(RC[-39]<=0),""Yok"",IF(AND(RC[-39]<RC[-1]),""Kritik"",IF(AND(RC[-39]>=RC[-1]),""Mevcut"")))"


End With
Next i


MsgBox "" & TextBox2.Value & " Malzemesine Ait Yeni Kayıt Başarıyla Yapılmıştır. İyi Çalışmalar Dilerim", vbInformation, "Sn.  " & Application.UserName
Label9 = WorksheetFunction.Count(Range("b1:b65500")) + 1

Dim SAYFA As Worksheet
For Each SAYFA In ThisWorkbook.Worksheets
SAYFA.Range("B6:AR65536").Sort Key1:=SAYFA.Range("B6"), Order1:=xlAscending, _
Key2:=SAYFA.Range("C6"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
Next


cmdTEMİZLE_Click
ComboBox2_Change
TextBox2.SetFocus
Unload UserForm1
UserForm1.Show
End Sub
 
Arkadaşlar kodu aşağıdaki gibi bir modüle ekleyip çalıştırdım. Tüm sayfalarda sıralama yapıyor fakat bir eksiği var, tüm sayfalarda B sütununda 6.satırdan itibaren 1 den başlayıp numaralandırması gerekiyor.
Kod:
Option Explicit

Sub TÜM_SAYFALARDA_SIRALAMA()
    Dim SAYFA As Worksheet
 
    For Each SAYFA In ThisWorkbook.Worksheets
        SAYFA.Range("B6:AR65536").Sort Key1:=SAYFA.Range("B6"), Order1:=xlAscending, _
        Key2:=SAYFA.Range("C6"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
        MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
    Next
MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

Tek sayfa için aşağıdaki kod B6 dan itibaren numara veriyor ancak kodu tüm sayfalara numara vermesi için düzenleyemedim.
Kod:
For i = 1 To say
Cells(i + 5, 2) = i
Next i
 
Selamlar,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub TÜM_SAYFALARDA_SIRALAMA()
    Dim SAYFA As Worksheet, Satır As Long
 
    For Each SAYFA In ThisWorkbook.Worksheets
        SAYFA.Range("B6:AR65536").Sort Key1:=SAYFA.Range("B6"), Order1:=xlAscending, _
        Key2:=SAYFA.Range("C6"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, _
        MatchCase:=False, Orientation:=xlTopToBottom, DataOption1:=xlSortNormal, DataOption2:=xlSortNormal
 
        Satır = SAYFA.Range("B65536").End(3).Row
        If Satır = 6 Then
            SAYFA.Cells(6, 2) = 1
        ElseIf Satır > 6 Then
            SAYFA.Cells(6, 2) = 1
            SAYFA.Range("B6:B" & Satır).DataSeries Rowcol:=xlColumns, Type:=xlLinear, Step:=1
        End If
    Next
 
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Korhan hocam çok teşekkürler. Yazdığınız makro harika iş yapıyor.
 
Geri
Üst