• DİKKAT

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

Exceldeki Düşey ara Formülünü Makro ile yapabailmek

Katılım
20 Ocak 2012
Mesajlar
118
Excel Vers. ve Dili
Office 2016-Türkçe
Sevgili Üstatlar,
İsteğimi genel başlıkla özetleyecek olursam; Excel deki Düşey ara formülünü Makroda yapmak istiyorum.
EK te koymuş Olduğum Dosyada Ocak,Şubat,Mart,Nisan…şeklinde devam eden Sheeet lerdeki verilerin Konsolide Shettinde ilgili Bayi Kodu karşılığındaki ilgili aydaki İstenen Yere Gelmesini istiyorum.
Ekteki Dosyada yaptığım Örneği Sözel olarak anlatırsak.
Konsolide Sheetineki 113000003 Bayi kodunu esas alıp Ocak Sheetine bakıp A sütunundaki ilgili kodu bulup(113000003) B sütunundaki karşısındaki veriyi (cari rakamını) Konsolide Sheetindeki 113000003 Ocak Cari TL G sütununa alması,ve Şubat Mart Nisan…. Aynı işlem,
Konsolide Sheetineki 113000003 Bayi kodunun Ocak Sheetine bakıp F sütunundaki ilgili kodu bulup G sütunundaki veriyi (ciro rakamını) Konsolide Sheetindeki Ocak Ciro TL H sütununa alması,ve Şubat Mart Nisan…. Aynı işlem, İsteğim Bu
Ayrıca Yapılabilirliği varsa Cari Ciro % ve DSO formüllerininde Makroyla yapılması.
Örnek verecek olursak Konsolide Sheetinede Kırmızıya boyalı formüllere bakmanızı rica ederim.
 

Ekli dosyalar

Merhaba
Ayın son günlerini siz elle mi yazacaksınız.
 
Sevgili Üstadlar Konuya Eğiliminizi rica ederimm...
 
Merhaba
Boş bir module ekleyin ve deneyin.
Kod:
Option Explicit
Sub veri_çek()
Dim SY As Long, SYF1 As Worksheet, SYF2 As Worksheet, AY As Long
Dim STR1 As Long, STN As Range, STR2 As Long, STR3 As Long
Set SYF1 = Sheets("Konsolide")
With WorksheetFunction
Application.ScreenUpdating = False
SYF1.Range("G3:BB" & Rows.Count).Clear
For STR1 = 3 To SYF1.Cells(Rows.Count, "A").End(xlUp).Row
For SY = 2 To Sheets.Count
Set SYF2 = Sheets(SY)
STR2 = SYF2.Range("A" & Rows.Count).End(xlUp).Row
STR3 = SYF2.Range("F" & Rows.Count).End(xlUp).Row
Set STN = SYF1.Range("G1:BA1").Find(SYF2.Name, , , xlWhole)
Select Case STN
Case "Ocak": AY = 1: Case "Şubat": AY = 2
Case "Mart": AY = 3: Case "Nisan": AY = 4
Case "Mayıs": AY = 5: Case "Haziran": AY = 6
Case "Temmuz": AY = 7: Case "Ağustos": AY = 8
Case "Eylül": AY = 9: Case "Ekim": AY = 10
Case "Kasım": AY = 11: Case "Aralık": AY = 12
End Select
SYF1.Cells(1, STN.Column + 3) = Format(DateSerial(Year(Date), AY + 1, 0), "dd")
SYF2.Range("A1:B" & STR2).AutoFilter field:=1, Criteria1:=SYF1.Cells(STR1, "A")
SYF1.Cells(STR1, STN.Column) = .Subtotal(9, SYF2.Range("B2:B" & STR2))
SYF2.Range("A1:B" & STR2).AutoFilter
SYF2.Range("F1:G" & STR3).AutoFilter field:=1, Criteria1:=SYF1.Cells(STR1, "A")
SYF1.Cells(STR1, STN.Column + 1) = .Subtotal(9, SYF2.Range("G2:G" & STR3))
SYF2.Range("F1:G" & STR3).AutoFilter
If SYF1.Cells(STR1, STN.Column) <> 0 And SYF1.Cells(STR1, STN.Column + 1) <> 0 Then
SYF1.Cells(STR1, STN.Column + 2) = SYF1.Cells(STR1, STN.Column) / _
SYF1.Cells(STR1, STN.Column + 1) * 100 - 100
SYF1.Cells(STR1, STN.Column + 3) = SYF1.Cells(1, STN.Column + 3) / _
SYF1.Cells(STR1, STN.Column) * SYF1.Cells(STR1, STN.Column + 1)
End If: Next: Next: End With
Application.ScreenUpdating = True
End Sub
 
asi_kral_1967 Hocam
Format tam istediğim gibi Emeğinize Sağlık....
Yanlız DSO Kısmındaki formül yanlış Rica etsem o alanı düzeltebilirmisiniz.
Formül:
İlgili Ay/İlgili Bayi Cari*İlgili Bayi Ciro
Hocam Bire Konsolide Sayfasına veriler geldiğinde sayı Büyüklüğü 8 olarak gelebilirmi
Mümkünse bunu da düzeltirmisiniz
 
Son düzenleme:
Merhaba
DSO doğru hesap yapıyor elle hesaplıyarak denedim.
Diğer dediğinizi ise anlamadım ne olacağını.
 
Geri
Üst