• DİKKAT

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

verileri mükerer olanları toplatıp, sıralama yaparak ; ilgili sayfalara aktarmak

Katılım
23 Temmuz 2010
Mesajlar
3
Excel Vers. ve Dili
2010
Merhaba herkese,
açıkçası konuyu açmadan önce uzun bir süre daha önceki konuları aradım, denedim ancak bir sonuca varamadım.

Excelde size yolladığım tablo aylık olarak hazırlanan bir rapor.

Raporda müşterilere ait ülkelere yapılmış yükler mevcut . bu yükleri yapan şube bazında sayfalara aktarmak istiyorum. ancak müşterilerin ülkelere kaç tane yük yaptıkları gibi verileri satırlara uzanan bir tablo şeklinde iki aylık raporlamam gerekiyor. Verileri şube bazında sayfalara aktarırken aynı firmanın verilerinin toplanması gerekmekte. burda bir diğer önemli konu, brüt karı küçükten büyüğe sıralamam ve her sayfanın en altına da toplam aldırmam lazım.

eğer bunu yapabilecek bir makro varsa , gerçekten büyük bir kazanç sağlatacak.

yardımcı olabilirseniz sevinirim.
 

Ekli dosyalar

Selamlar,

Forumumuza hoşgeldiniz.

İstediğiniz işlem makro ile kolaylıkla yapılabilir. Hangi sütun sayfalarda hangi sütunlara aktarılacak detaylıca açıklamısınız.
 
aslında konuyu buraya yazarken umutsuzdum. biraz karmaşık bir rapor ve nasıl anlatacağımı bilememiştim! sizin mesajınızı görünce biraz umutlandım aslında :)

excel sayfası içinde gerekli açıklamaları yaptım! aslında bu tabloya eklenecek - çıkacak alanlar olsa da ben mantığını oturttuktan sonra artı olacak olan verileri tabloya ekleyebilirim diye düşünüyorum!

bir de kod yazımında hangi kodların hangi alanları tetiklediğini belirten açıklamalar koyabilirseniz, sizi bir daha rahatsız etme olsalığım düşecektir.

şimdiden çok teşekkür ederim :)
 

Ekli dosyalar

Selamlar,

Sanıyorum mesajımı yanlış anladınız.

izmir-35 sayfası için örneklersek;

MT-SON (B SÜTUNU) - Bu sütuna VERİ sayfasındaki hangi sütundaki veri gelecek? Bir koşul varmı?
YÜK ADEDİ (C SÜTUNU) - Bu sütuna VERİ sayfasındaki hangi sütundaki veri gelecek? Bir koşul varmı?
ÜCRET AĞIRLIĞI (D SÜTUNU) - Bu sütuna VERİ sayfasındaki hangi sütundaki veri gelecek? Bir koşul varmı?
M3 NAVLUN FİYATI (E SÜTUNU) - Bu sütuna VERİ sayfasındaki hangi sütundaki veri gelecek? Bir koşul varmı?
ALACAK (F SÜTUNU) - Bu sütuna VERİ sayfasındaki hangi sütundaki veri gelecek? Bir koşul varmı?
BORÇ (G SÜTUNU) - Bu sütuna VERİ sayfasındaki hangi sütundaki veri gelecek? Bir koşul varmı?
BRÜT K-Z (H SÜTUNU) - Bu sütuna VERİ sayfasındaki hangi sütundaki veri gelecek? Bir koşul varmı?
NET K-Z (I SÜTUNU) - Bu sütuna VERİ sayfasındaki hangi sütundaki veri gelecek? Bir koşul varmı?
NET K-Z ORANI (J SÜTUNU) - Bu sütuna VERİ sayfasındaki hangi sütundaki veri gelecek? Bir koşul varmı?
 
Açıkçası formülasyon ile anlatmak biraz zor, gerçekten sütun olarak uzayan bir yapısı var. Bu yüzden Özet Tablodan hangi verilerin hangi şekilde geldiğini görülmesinin daha kolay olacağını düşünmüştüm!

Aşağıda sorularınıza kısaca cevap vermeye çalıştım, ancak her sütunu bu şekilde anlatmam gerçekten çok zor! umarım aşağıdaki açıklamalar az çok kafanızda bir şeyler oluşturmuştur.

NOT: karışık olan bu süreç zamanınızı çok alacak gibi, bunun yerine bana verileri mükerer olanları toplatırarak , kriterlere göre diğer sayfalara aktarabileceğim kod örnekleri yollayabilirseniz , ben de sürece daha katkı sağlayabilirim.

________________________________________________________________

MT-SON (B SÜTUNU) - Veri sayfası W sütunu. Her müşterinin tek 1 MT'si var
Bundan sonraki diğer sütunlarda koşullar;

İzmir-35 sayfasındaki C-D-E-F-G-H-J sütunları için;

ilk koşul Veri sayfası A sütunundaki verinin İzmir Olması,

-Veri sayfasındaki T sürunundaki değerin "ALM" , V sütunundaki değerin "5", U sütunundaki değerin "CIF" olması gerekmektedir. Bu her Yük adedi için 1. satırda yazan ülke ve 2. satırda yazılan Ay koşulu vardır

YÜK ADEDİ (C SÜTUNU) - Veri sayfasındaki N sütunundaki sayıların koşullar çerçevesinde saydırılması
ÜCRET AĞIRLIĞI (D SÜTUNU) - Veri sayfasındaki Q sütunundaki değerlerin koşullara göre toplanması
M3 NAVLUN FİYATI (E SÜTUNU) - Veri sayfasındaki J sütunundaki değerlerin koşullara göre toplanması
ALACAK (F SÜTUNU) - Veri sayfasındaki O sütunundaki değerlerin koşullara göre toplanması
BORÇ (G SÜTUNU) -Veri sayfasındaki P sütunundaki değerlerin koşullara göre toplanması
BRÜT K-Z (H SÜTUNU) - Veri sayfasındaki D sütunundaki değerlerin koşullara göre toplanması
NET K-Z (I SÜTUNU) -Veri sayfasındaki E sütunundaki değerlerin koşullara göre toplanması
NET K-Z ORANI (J SÜTUNU) -Veri sayfasındaki G sütunundaki değerlerin koşullara göre toplanması
 
Selamlar,

Verdiğiniz bilgiler doğrultusunda aşağıdaki kod oluştu. Denermisiniz.

NET K-Z ORANI (J SÜTUNU) -Veri sayfasındaki G sütunundaki değerlerin koşullara göre toplanması


NET K-Z ORANI için "G" sütunu aktarılacak demişsiniz. Fakat bu bilgi VERİ sayfasında "H" sütununda bulunmaktadır. Ben kodu "H" sütununa göre ayarladım.

YÜK ADEDİ sütunu için koşullar çerçevesinde saydırılması şeklinde bir ifade kullanmışsınız. Bu koşullar nelerdir.

Sıralama işlemi için BRÜT KARI küçükten büyüğe sıralamam gerekli ifadesini kullanmışsınız. Bir müşteri adı aynı il içinde birden fazla ülke kodunda geçiyorsa sıralamada problem oluşur. Bu sebeple sıralama işlemini koda eklemedim. Vereceğiniz bilgiye göre koda ek yapabiliriz.


Kod:
Option Explicit
 
Sub AKTAR()
    Dim X As Long, SV As Worksheet
    Dim SAYFA As Worksheet, BUL As Range
    Dim SATIR As Long, SÜTUN As Byte
    
    Application.ScreenUpdating = False
    
    Set SV = Sheets("VERİ")
    
    For Each SAYFA In ThisWorkbook.Worksheets
        If SAYFA.Name <> "VERİ" Then SAYFA.Range("A4:HT65536").ClearContents
    Next
    For X = 2 To SV.Range("A65536").End(3).Row
        If SV.Cells(X, "A") <> "" And SV.Cells(X, "V") = "CIF" Then
            Select Case SV.Cells(X, "T")
                Case Is = "ALM": SÜTUN = 3
                Case Is = "BEL": SÜTUN = 19
                Case Is = "FRA": SÜTUN = 35
                Case Is = "HOL": SÜTUN = 51
                Case Is = "İNG": SÜTUN = 67
                Case Is = "İSP": SÜTUN = 83
                Case Is = "İTA": SÜTUN = 99
                Case Is = "POR": SÜTUN = 115
                Case Is = "FAS": SÜTUN = 131
                Case Is = "TUN": SÜTUN = 147
                Case Is = "POL": SÜTUN = 163
                Case Is = "ÇEK": SÜTUN = 179
                Case Is = "FİN": SÜTUN = 195
            End Select
            
            For Each SAYFA In ThisWorkbook.Worksheets
                If InStr(1, SAYFA.Name, SV.Cells(X, 1)) > 0 Then
                    Set BUL = SAYFA.Range("A:A").Find(SV.Cells(X, 2), LookAt:=xlWhole)
                    If Not BUL Is Nothing Then
                        
                        If SV.Cells(X, "AF") = "05" Then
                            SAYFA.Cells(BUL.Row, "B") = SV.Cells(X, "W")
                            SAYFA.Cells(BUL.Row, SÜTUN) = SAYFA.Cells(BUL.Row, SÜTUN) + 1
                            SAYFA.Cells(BUL.Row, SÜTUN + 1) = SAYFA.Cells(BUL.Row, SÜTUN + 1) + SV.Cells(X, "Q")
                            SAYFA.Cells(BUL.Row, SÜTUN + 2) = SAYFA.Cells(BUL.Row, SÜTUN + 2) + SV.Cells(X, "J")
                            SAYFA.Cells(BUL.Row, SÜTUN + 3) = SAYFA.Cells(BUL.Row, SÜTUN + 3) + SV.Cells(X, "O")
                            SAYFA.Cells(BUL.Row, SÜTUN + 4) = SAYFA.Cells(BUL.Row, SÜTUN + 4) + SV.Cells(X, "P")
                            SAYFA.Cells(BUL.Row, SÜTUN + 5) = SAYFA.Cells(BUL.Row, SÜTUN + 5) + SV.Cells(X, "D")
                            SAYFA.Cells(BUL.Row, SÜTUN + 6) = SAYFA.Cells(BUL.Row, SÜTUN + 6) + SV.Cells(X, "E")
                            SAYFA.Cells(BUL.Row, SÜTUN + 7) = SAYFA.Cells(BUL.Row, SÜTUN + 7) + SV.Cells(X, "H")
                        
                        ElseIf SV.Cells(X, "AF") = "06" Then
                            SAYFA.Cells(BUL.Row, "B") = SV.Cells(X, "W")
                            SAYFA.Cells(BUL.Row, SÜTUN + 8) = SAYFA.Cells(BUL.Row, SÜTUN + 8) + 1
                            SAYFA.Cells(BUL.Row, SÜTUN + 9) = SAYFA.Cells(BUL.Row, SÜTUN + 9) + SV.Cells(X, "Q")
                            SAYFA.Cells(BUL.Row, SÜTUN + 10) = SAYFA.Cells(BUL.Row, SÜTUN + 10) + SV.Cells(X, "J")
                            SAYFA.Cells(BUL.Row, SÜTUN + 11) = SAYFA.Cells(BUL.Row, SÜTUN + 11) + SV.Cells(X, "O")
                            SAYFA.Cells(BUL.Row, SÜTUN + 12) = SAYFA.Cells(BUL.Row, SÜTUN + 12) + SV.Cells(X, "P")
                            SAYFA.Cells(BUL.Row, SÜTUN + 13) = SAYFA.Cells(BUL.Row, SÜTUN + 13) + SV.Cells(X, "D")
                            SAYFA.Cells(BUL.Row, SÜTUN + 14) = SAYFA.Cells(BUL.Row, SÜTUN + 14) + SV.Cells(X, "E")
                            SAYFA.Cells(BUL.Row, SÜTUN + 15) = SAYFA.Cells(BUL.Row, SÜTUN + 15) + SV.Cells(X, "H")
                        End If
                        
                    Else
                    
                        SATIR = SAYFA.Range("A65536").End(3).Row + 1
                                                
                        If SV.Cells(X, "AF") = "05" Then
                            SAYFA.Cells(SATIR, "A") = SV.Cells(X, "B")
                            SAYFA.Cells(SATIR, "B") = SV.Cells(X, "W")
                            SAYFA.Cells(SATIR, SÜTUN) = 1
                            SAYFA.Cells(SATIR, SÜTUN + 1) = SV.Cells(X, "Q")
                            SAYFA.Cells(SATIR, SÜTUN + 2) = SV.Cells(X, "J")
                            SAYFA.Cells(SATIR, SÜTUN + 3) = SV.Cells(X, "O")
                            SAYFA.Cells(SATIR, SÜTUN + 4) = SV.Cells(X, "P")
                            SAYFA.Cells(SATIR, SÜTUN + 5) = SV.Cells(X, "D")
                            SAYFA.Cells(SATIR, SÜTUN + 6) = SV.Cells(X, "E")
                            SAYFA.Cells(SATIR, SÜTUN + 7) = SV.Cells(X, "H")
                        
                        ElseIf SV.Cells(X, "AF") = "06" Then
                            SAYFA.Cells(SATIR, "A") = SV.Cells(X, "B")
                            SAYFA.Cells(SATIR, "B") = SV.Cells(X, "W")
                            SAYFA.Cells(SATIR, SÜTUN + 8) = 1
                            SAYFA.Cells(SATIR, SÜTUN + 9) = SV.Cells(X, "Q")
                            SAYFA.Cells(SATIR, SÜTUN + 10) = SV.Cells(X, "J")
                            SAYFA.Cells(SATIR, SÜTUN + 11) = SV.Cells(X, "O")
                            SAYFA.Cells(SATIR, SÜTUN + 12) = SV.Cells(X, "P")
                            SAYFA.Cells(SATIR, SÜTUN + 13) = SV.Cells(X, "D")
                            SAYFA.Cells(SATIR, SÜTUN + 14) = SV.Cells(X, "E")
                            SAYFA.Cells(SATIR, SÜTUN + 15) = SV.Cells(X, "H")
                        End If
                    End If
                End If
                SAYFA.Range("A:B").EntireColumn.AutoFit
            Next
        End If
    Next
                    
    Set BUL = Nothing
    Set SV = Nothing
    
    Application.ScreenUpdating = True
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Geri
Üst