• DİKKAT

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

worksheetfunction.small ve large sorusu

Katılım
7 Mart 2011
Mesajlar
184
Excel Vers. ve Dili
2007 TR
arkadaşlar merhaba;
ekli örnek dosyada da görebileceğiniz gibi yapmak istediğim olay şu:
sayfa 1 de müşterilerin tarih tarih satışları var. ben bunları ikinci sayfaya ilk satış tarihi ve son satış olarak almak istiyorum. aradaki tarihler önemli olmayacak.
Kod:
s.Cells(x, "f") = WorksheetFunction.Small(s3.Range("a3:a" & z), 1)
                s.Cells(x, "g") = WorksheetFunction.Large(s3.Range("a3:a" & z), 1)
iki for döngüsü ile bunları giriyorum. large olayı doğru sonuç döndürüyor ancak, small ilk tarihi vermiyor.
bunun nedeni ne olabilir ve nasıl düzeltebilirim.
saygılarımla...
 

Ekli dosyalar

Kod:
Sub İlkSon()
Sırala
For i = 2 To Sayfa2.[a65536].End(3).Row
b = WorksheetFunction.Match(Sayfa2.Cells(i, 1), Sayfa1.Range("b1:b" & Sayfa1.[a65536].End(3).Row), 0)
s = WorksheetFunction.Match(Sayfa2.Cells(i, 1), Sayfa1.Range("b1:b" & Sayfa1.[a65536].End(3).Row), 1)
Sayfa2.Cells(i, 2) = Sayfa1.Cells(b, 1)
Sayfa2.Cells(i, 3) = Sayfa1.Cells(s, 1)
Next
End Sub
Sub Sırala()
    ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Add Key:=Range("B2:B10") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Add Key:=Range("A2:A10") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sayfa1").Sort
        .SetRange Range("A1:C10")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub
 
Kod:
Sub İlkSon()
Sırala
For i = 2 To Sayfa2.[a65536].End(3).Row
b = WorksheetFunction.Match(Sayfa2.Cells(i, 1), Sayfa1.Range("b1:b" & Sayfa1.[a65536].End(3).Row), 0)
s = WorksheetFunction.Match(Sayfa2.Cells(i, 1), Sayfa1.Range("b1:b" & Sayfa1.[a65536].End(3).Row), 1)
Sayfa2.Cells(i, 2) = Sayfa1.Cells(b, 1)
Sayfa2.Cells(i, 3) = Sayfa1.Cells(s, 1)
Next
End Sub
Sub Sırala()
    ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Add Key:=Range("B2:B10") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Sayfa1").Sort.SortFields.Add Key:=Range("A2:A10") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Sayfa1").Sort
        .SetRange Range("A1:C10")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

Sayın Hamitcan
ilgilendiğiniz için teşekkür ederim. ancak data sayfasından verileri sıralatmam gerek sıralatmadığım zamn ise match özelliği alınamadı gibi bir hata verdi örnek dosyaya uyguladım sorun yok ama ana dosyaya entegre edemedim kodu. şöyle bir şey söyleyebilirim kolaylık olması açısından data sayfası da verileri başka bir sayfadan formülle alıyor ve tarih sıralı olarak geliyor müşteri/satıcı sıralı olmadığı için kanımca çalıştıramadım.
teşekkürler...
 
Dikkat edeceğiniz noktalar;
1-Sayfa2 A sütununa Satıcı isimlerini girmelisiniz.
2-Sayfa1 içindeki satır sayısı kadar sıralama makrosundaki aralığı genişletmelisiniz. Son satır şimdilik 10 olarak tanımlı.
 

Ekli dosyalar

Dikkat edeceğiniz noktalar;
1-Sayfa2 A sütununa Satıcı isimlerini girmelisiniz.
2-Sayfa1 içindeki satır sayısı kadar sıralama makrosundaki aralığı genişletmelisiniz. Son satır şimdilik 10 olarak tanımlı.

Sayın Hamitcan;
veri sayfasında sıralama yaptırmadan çözmek istemiştim ama olmadı sayfayı koda uydurdum. şu an sorunsuz çalışıyor teşekkürler.
iyi çalışmalar...
 
Geri
Üst