• DİKKAT

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

Siparişlerin gün gün toplanması

irfancantr

Altın Üye
Katılım
18 Haziran 2007
Mesajlar
625
Excel Vers. ve Dili
Excel 365 - İmngilizce
Herkese kolay gelsin,

Benim sorum şu;

* Bir aylık yemek menüsü hazırladım ve bu menüden bir kaçtane farklı farklı menüler mevcut. Burada gün içerisinde kaç farklı yemek varsa onların sayılarını belirliyor.

1- Ben gün gün malzemeleri SİPPARİŞ adlı sayfaya döktüm.Bunları yine gün gün malzeme miktarlarını toplamak istiyorum,
2- Gün gün topladığım bu malzemeleri kendi sayfalarının (01 - 02 - ..... - 31) Y ve Z sütunlarına toplam miktarlarını atayabilir miyiz?

İlgi ve alakanızdan şimdiden teşekkür ederim...
 

Ekli dosyalar

Selamlar,

Ayın 1. inde listelediğiniz UN,SALÇA,YAĞ gibi malzemelerin miktarları günlere ait sayfada nereye toplanacak?
 
Sayın hocam günlere ait sayfalarda y sütununda malzemelerin isimleri z sütununda miktarları görünse yeterli.
 
Son bir ricam olacak ;

Benim devamlı böyle sıkıntılarım oluyor, artık sormaktan utandığım için formüllerle yapmaya çalışıyorum ve bu yöntemde çok uzun, çok ağır işliyor.

Eğer kod yazmayı düşünüyorsanız bunların tercümesini gerçekleştirebilirseniz bende bundan sonra ki yapacağım hazırlıkları kendim gerçekleştirmeye çalışmak istiyorum.

Alakanız için teşekkür ederim.
 
Biraz sıkıntılı bir durum galiba, aceleci olduğum için kusura bakmayın!...
 
Selamlar,

Aşağıdaki kodu denermisiniz. Ayrıca neden soru sormaktan utanıyorsunuz anlam veremedim! Sorularınızı açık bir dille ifade ederseniz müsait olan arkadaşlarımız sizlere mutlaka destek vereceklerdir. Lütfen soru sormaktan çekinmeyin.

Kod:
Option Explicit
 
Sub SİPARİŞLERİ_GÜNLERE_AKTAR()
    [COLOR=red]'Tanımlamalarımızı yapıyoruz.[/COLOR]
    Dim X As Byte, BUL As Range, SS As Worksheet, Y As Long, SATIR As Long
 
    [COLOR=red]'SİPPARİŞ isimli sayfamızı SS kısa isim olarak hafızaya alıyoruz.[/COLOR]
    Set SS = Sheets("SİPPARİŞ")
 
    [COLOR=red]'X adında günleri ifade eden döngüyü başlatıyoruz.[/COLOR]
    For X = 1 To 31
        [COLOR=red]'İlgili güne ait Y-Z sütunlarındaki varsa eski bilgileri temizliyoruz.[/COLOR]
        Sheets(CStr(X)).Range("Y:Z").ClearContents
        [COLOR=red]'SİPPARİŞ isimli sayfada günlere ait bilgilerin hangi sütunda olduğunu BUL değişkenine hafızaya alarak tanımlıyoruz.[/COLOR]
        Set BUL = SS.Rows(3).Find(X & ". GÜN")
        [COLOR=red]'İlgili güne ait bilgi varmı sorgusunu soruyoruz.[/COLOR]
        If Not BUL Is Nothing Then
        [COLOR=red]'Siparişlerin aktarım yapılacağı başlangıç satırını belirliyoruz.[/COLOR]
        SATIR = 6
 
            [COLOR=red]'Y adında siparişlere ait verileri ifade eden döngüyü başlatıyoruz.[/COLOR]
[COLOR=red]           'Sipariş bilgisi hangi sütunda ise o sütundaki en son veri olan satıra kadar döngümüzü yanımlıyoruz.[/COLOR]
            For Y = 4 To SS.Cells(65536, BUL.Column).End(3).Row
               [COLOR=red]'Siparişe ait satırdaki verinin boş olup olmadığını sorguluyoruz.[/COLOR]
                If SS.Cells(Y, BUL.Column) <> 0 And SS.Cells(Y, BUL.Column + 1) <> 0 Then
                    [COLOR=red]'Eğer sorgu sonucu olumlu ise ilgili verileri Y-Z sütunlarına aktarıyoruz.[/COLOR]
                    Sheets(CStr(X)).Cells(SATIR, "Y") = SS.Cells(Y, BUL.Column)
                    Sheets(CStr(X)).Cells(SATIR, "Z") = SS.Cells(Y, BUL.Column + 1)
                   [COLOR=red]'Koşulları sağlayan verileri üst üste yazmamak için SATIR isimli değişkenimize 1 ekliyoruz.[/COLOR]
                    SATIR = SATIR + 1
                [COLOR=red]'Sorgumuzu sonlandırıyoruz.[/COLOR]
                End If
            [COLOR=red]'Y döngüsüne devam ediyoruz.[/COLOR]
            Next
        [COLOR=red]'BUL ile ilgili sorgumuzu sonlandırıyoruz.[/COLOR]
        End If
    [COLOR=red]'X döngüsüne devam ediyoruz.[/COLOR]
    Next
 
    [COLOR=red]'Hafızadaki tanımlamalarımızı siliyoruz.[/COLOR]
    Set BUL = Nothing
    Set SS = Nothing
 
    [COLOR=red]'İşlemin bittiğine ilişkin kullanıcıya mesaj veriyoruz.[/COLOR]
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
 
[COLOR=red]'Makromuzu sonlandırıyoruz.[/COLOR]
End Sub
 
Sayın hocam elinize sağlık.Açıklama yapmanız çok güzel olmuş.Bizim gibi öğrenme aşamasındakilere ışık tutacak.Keşke hep böyle açıklamalı kodlar yazılsa.
Saygılar.
 
Elinize emeğinize sağlık,

Ben sizin hazırladığınız kodları hiç bozmadan HESAP adlı sayfaya yemek listelerini hazırladım. Mantık olarak baktığımızda sadece sayfa ismini ve sütun isimlerini değiştirmem yeterli olur diye düşünmüştüm ama bu seferde tüm isimleri hiç toplamadan olduğu gibi yazıyor.

Takıldığım bu noktayı açıklayarak yardımcı olabilir misiniz?
 

Ekli dosyalar

Selamlar,

Sanıyorum siz benzer yemeklerin üst üste eklenmesini istiyorsunuz. Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub YEMEKLERİ_GÜNLERE_AKTAR()
    [COLOR=red]'Tanımlamalarımızı yapıyoruz.[/COLOR]
    Dim X As Byte, BUL As Range, SS As Worksheet, Y As Long, SATIR As Long, YEMEK_BUL As Range
 
    [COLOR=red]'SİPPARİŞ isimli sayfamızı SS kısa isim olarak hafızaya alıyoruz.[/COLOR]
    Set SS = Sheets("HESAPLA")
 
    [COLOR=red]'X adında günleri ifade eden döngüyü başlatıyoruz.[/COLOR]
    For X = 1 To 31
        [COLOR=red]'İlgili güne ait Y-Z sütunlarındaki varsa eski bilgileri temizliyoruz.[/COLOR]
        Sheets(CStr(X)).Range("B:C").ClearContents
        [COLOR=red]'SİPPARİŞ isimli sayfada günlere ait bilgilerin hangi sütunda olduğunu BUL değişkenine hafızaya alarak tanımlıyoruz.[/COLOR]
        Set BUL = SS.Rows(3).Find(X & ". GÜN")
        [COLOR=red]'İlgili güne ait bilgi varmı sorgusunu soruyoruz.[/COLOR]
        If Not BUL Is Nothing Then
        [COLOR=red]'Siparişlerin aktarım yapılacağı başlangıç satırını belirliyoruz.[/COLOR]
        SATIR = 6
 
           [COLOR=red]'Y adında siparişlere ait verileri ifade eden döngüyü başlatıyoruz.[/COLOR]
[COLOR=red]           'Sipariş bilgisi hangi sütunda ise o sütundaki en son veri olan satıra kadar döngümüzü yanımlıyoruz.[/COLOR]
            For Y = 4 To SS.Cells(65536, BUL.Column).End(3).Row
               [COLOR=red]'Siparişe ait satırdaki verinin boş olup olmadığını sorguluyoruz.[/COLOR]
                If SS.Cells(Y, BUL.Column) <> 0 And SS.Cells(Y, BUL.Column + 1) <> 0 Then
                    [COLOR=red]'Aktarılacak yemek adı güne ait sayfaya daha önce aktarıldıysa bu satırı tesbit etmek için yemek adını arıyoruz.[/COLOR]
                    Set YEMEK_BUL = Sheets(CStr(X)).Range("B:B").Find(SS.Cells(Y, BUL.Column))
                    [COLOR=red]'Eğer yemek adı sayfada varsa sorgusunu soruyoruz.[/COLOR]
                    If Not YEMEK_BUL Is Nothing Then
                    [COLOR=red]'İlgili satırdaki miktarın üzerine yeni yemek miktarını ekliyoruz.[/COLOR]
                    Sheets(CStr(X)).Cells(YEMEK_BUL.Row, "C") = Sheets(CStr(X)).Cells(YEMEK_BUL.Row, "C") + SS.Cells(Y, BUL.Column + 1)
                    [COLOR=red]'Eğer yemek adı ilgili güne ait sayfada yoksa ilgili verileri B-C sütunlarına aktarıyoruz.[/COLOR]
                    Else
                    Sheets(CStr(X)).Cells(SATIR, "B") = SS.Cells(Y, BUL.Column)
                    Sheets(CStr(X)).Cells(SATIR, "C") = SS.Cells(Y, BUL.Column + 1)
                    [COLOR=red]'Koşulları sağlayan verileri üst üste yazmamak için SATIR isimli değişkenimize 1 ekliyoruz.[/COLOR]
                    SATIR = SATIR + 1
                    [COLOR=red]'Sorgumuzu sonlandırıyoruz.[/COLOR]
                    End If
                [COLOR=red]'Sorgumuzu sonlandırıyoruz.[/COLOR]
                End If
            [COLOR=red]'Y döngüsüne devam ediyoruz.[/COLOR]
            Next
        [COLOR=red]'BUL ile ilgili sorgumuzu sonlandırıyoruz.[/COLOR]
        End If
    [COLOR=red]'X döngüsüne devam ediyoruz.[/COLOR]
    Next
 
    [COLOR=red]'Hafızadaki tanımlamalarımızı siliyoruz.[/COLOR]
    Set BUL = Nothing
    Set SS = Nothing
 
    [COLOR=red]'İşlemin bittiğine ilişkin kullanıcıya mesaj veriyoruz.[/COLOR]
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
 
[COLOR=red]'Makromuzu sonlandırıyoruz.[/COLOR]
End Sub
 
Evet çok güzel oldu hocam ama şimdide başka bir sorun çıktı :)
Öncelikle yemekleri bulup ayırma toplama işlemini çok güzel yapıyor, burada bir sıkıntı yok,
daha sonra siparişleri ayırması için makroyu çalıştırıyorum bu sefer ne var ne yok hepsini sıralamaya başlıyor.

İlk hazırladığınız makroda bu sıkıntı yoktu, ben nerede bir değişiklik yapım acaba? :S

İşin ters tarafı anlamaya çalışırken kafam aşure kazanına döndü...
 
Sayın Korhan hocam son verdiğiniz kodu ürünlere göre düzenledim oldu :)

Tekrardan emekleriniz için çok teşekkür ederim.
 
Geri
Üst