• DİKKAT

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

Ardışık Tarihler ile ilgili Yardım

  • Konbuyu başlatan Konbuyu başlatan hbgny
  • Başlangıç tarihi Başlangıç tarihi
Tekrar merhaba.

Mevcut örnek belgede fazla seçenek yok.

Bence;
=> hem usta adına göre farklı seçeneklerin olduğu hem de ustaların her biri için;
-- aynı ürünün tek gün olması
-- izleyen iki gün tekrarlanması
-- izleyen daha fazla gün tekrarlanması
seçeneklerinin olmasını sağlayarak,

=> verilerinizin ay bazlı mı yoksa daha uzun süreleri mi içerdiğini netleştircek şekilde,

=> sonuçta ulaşılacak olması gereken tabloyu da elle yazarak,

örnek belgenizi yenilemelisiniz.
(aslında elinizdeki gerçek ham verilerin, yukarıda belirttiğim seçenekleri içeren bir parçasının olması daha doğru)

.
 
Merhaba.

Ekteki belgeyi inceleyiniz (BRN adlı sayfa) .
Belgeye buradan da erişebilirsiniz.
.
 

Ekli dosyalar

Olmuş. Çok teşekkür ederim. Eğer fazla olmazsa bir şey daha isteyebilir miyim? Ürün kısmını da açılır pencere yaparak 3 ürün sayfasını teke düşürebilir misiniz? Birde ben bu makroyu kendi çalışmama kopyaladığımda; veriler bir sayfada, bu yapmaya çalıştığım tablo başka bir sayfada. Bunun için makronuzdaki hangi formülleri değiştirmem gerekir?
 
Önceki cevabımı göncelledim.
Dosyayı tekrar indirerek kontrol edin.
Şu an biraz işim var, farklı sayfa olayına biraz sonra bakıp, dosyayı tekrar güncellerim.
Güncellemeyi yenilediğimde tekrar cevap yazarım.
.
 
Tam istediğim gibi olmuş. Size zahmet verdim. Diğer cevabınızı da müsait olduğunuzda yazarsınız. Kolay gelsin.
 
Önceki cevabımdaki belge yenilendi.
Sayfayı yenileyerek kontrol ediniz.

veriler sayfasındaki verilerden hareketle BRN sayfasında sonuç alınır.
BRN adlı sayfadan usta ve ürün adını seçmeniz yeterli olur.
.
 
Teşekkür ederim. Linkinize yeni bakabildim. Sizin yaptığınızı kendime uyarlamaya çalıştım. Veri sayfasıyla, sonuçları getireceği sayfanın adını sizin kodlarınızdan yerini bularak değiştirdim. Ama verileri yazacağı hücreyi bir türlü yapamadım. Verileri getireceği hücrelerin başlangıç yerini, hangi kodu değiştirerek yapabilirim?
 
Merhaba.

Dosyadaki kod'u aşağıdakiyle değiştirin.
Değişken adlarını işlevlerini anlatır tarzda belirledim ve kod satırlarına açıklamalar ekledim.

Kod'u aşağıdakiyle değiştirdiğinizde, mavi renkli kısımlar VBA ekranında yeşil renkli görünecek (kod'un çalışmasına engel değil)
.
Kod:
[B]Sub HBGNY_BRN()[/B]
Set v = Sheets("veriler"): Set b = Sheets("BRN")[COLOR="Blue"]   ' sayfa isimleri kısaltılmış olarak tanımlandı.[/COLOR]
b.Range("B5:D" & Rows.Count).ClearContents[COLOR="Blue"]   ' ilk işlem olarak, eski veriler yani B, C ve D sütunu temizlenir.[/COLOR]
usta = b.[B1]: ürün = b.[B2][COLOR="Blue"]   ' usta=B1 hücresindeki değer, ürün=B2'deki değer olarak tanımlandı.[/COLOR]
If usta = "" Or ürün = "" Then Exit Sub[COLOR="Blue"]   ' usta (B1) veya ürün (B2) hücresi boşsa, başka işlem yapmadan çık.[/COLOR]
    For vsat = 1 To v.Cells(Rows.Count, "A").End(3).Row[COLOR="Blue"]   ' veriler sayfasında 1'inci satırdan son dolu satıra kadar A sütununu kontrol etmek için döngüye başla.[/COLOR]
        If v.Cells(vsat, "B") = ürün And v.Cells(vsat, "C") = usta Then[COLOR="Blue"]   ' Eğer B sütunu ürün'e ve C sütunu usta'ya eşitse alt satıra geçerek işleme devam et.[/COLOR]
            ilktarih = v.Cells(vsat, "A")[COLOR="Blue"]   ' Kod'un Bir üst satırındaki koşullar tutuyorsa; ilk tarih, koşuyun tuttuğu satır A sütunundaki değerdir.[/COLOR]
            b.Cells(b.Cells(Rows.Count, "B").End(3).Row + 1, "B") = ilktarih[COLOR="Blue"]   ' b adlı sayfanın "B" sütunundaki ilk BOŞ satıra ilk tarihi yaz.[/COLOR]
                For bittarihsat = vsat + 1 To v.Cells(Rows.Count, "A").End(3).Row[COLOR="Blue"]   ' İlk tarihten 1 fazlası var mı diye bakmak için döngü başlangıcı.[/COLOR]
                    If v.Cells(bittarihsat, "A") = ilktarih + 1 And _
                        v.Cells(bittarihsat, "B") = ürün And _
                        v.Cells(bittarihsat, "C") = usta Then[COLOR="Blue"]   ' İlk tarihin 1 fazlasına rastlanırsa ve ürün/usta koşulu da tutuyorsa aşağıya devam,[/COLOR]
                            ilktarih = ilktarih + 1[COLOR="Blue"]   ' İlk tarihi 1 arttır.[/COLOR]
                            vsat = bittarihsat[COLOR="Blue"]   ' veri sayfasında bir sonraki satırı kontrol etmek için devam.[/COLOR]
                    End If
                Next[COLOR="Blue"]   ' koşullardan hiçbiri tutmuyorsa bir sonraki satıra bak.[/COLOR]
            Csat = b.Cells(Rows.Count, "C").End(3).Row + 1[COLOR="Blue"]   ' sonuç sayfası C sütunundaki ilk BOŞ satırın numarası.[/COLOR]
            b.Cells(Csat, "C") = ilktarih[COLOR="Blue"]   ' İlk tarihi C sütununa yaz.[/COLOR]
            b.Cells(Csat, "D") = b.Cells(Csat, "C") - b.Cells(Csat, "B") + 1[COLOR="Blue"]   ' D sütununa C ve B 'deki tarih farkının 1 fazlasını yaz.[/COLOR]
        End If
    Next[COLOR="Blue"]   ' Bir sonraki satır için başa dön.[/COLOR]
MsgBox "İşlem tamamlandı." & vbLf & _
    "Usta adını değiştirerek veya ürünü seçerek," & vbLf & _
    "yeni bilgileri listeleyebilirsiniz.", vbInformation, "..::.. ÖMER BARAN ..::.."
[B]End Sub[/B]
 
Merhaba,
Cevap vermekte geciktiğim için kusura bakmayın. Son derece ayrıntılı olarak açıklamışsınız. Çok teşekkür ederim.
 
Merhaba,
Cevap vermekte geciktiğim için kusura bakmayın. Son derece ayrıntılı olarak açıklamışsınız. Çok teşekkür ederim.
Maksatım ucundan kıyısından makro olayına bulaşmanızı sağlayabilmek idi.
Kolay gelsin.
.
 
Geri
Üst