• DİKKAT

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

Özet Tablo ve Makro Yardım

  • Konbuyu başlatan Konbuyu başlatan edkaya
  • Başlangıç tarihi Başlangıç tarihi
Katılım
12 Şubat 2008
Mesajlar
112
Excel Vers. ve Dili
Evde:Office 2010 Ingilizce
İşte: Office 2010 Ingilizce
Değerli Arkadaşlar,
dosyada anlatmaya çalıştım. data sayfasında listeyi, ikinci sayfada iki tarih arasında listeyi getirme gibi bir sorum olacaktı. makro yerinde açtım konuyu daha değişik bir yapım şekli aklıma gelmedi.
şimdiden yardımlarınız için teşekkürler
 

Ekli dosyalar

açık değil.

data sayfasının hangi sütununa uygulanacak tarih aralığı kriteri?
Sütun1? sütun2?
 
açık değil.

data sayfasının hangi sütununa uygulanacak tarih aralığı kriteri?
Sütun1? sütun2?

Değerli Ustadım,
tarih için normal bir kutu içine tarih yazacağımız. aralık olarak da herhangi bir tarih girmesi. başlıklar için sütunlarda belirtmiştim. Sütun 1, Sütun 2 gibi.

bilmediğim için soruyorum. makrosuna; tarih kutuları boş iken bugünü göstermesi, ama iki tarih aralığı yazdığımızda sadece o tarih aralığını getirmesi mümkün müdür?

Açıklama yeterli midir?
 
üstad kelimesi için teşekkürler ama benim için çok abartılı olur.


aşağıdaki kodu deneyiniz.

data sayfasındaki 1. sütundaki tarih >= rapor sayfası B1'deki tarih
data sayfasındaki 2. sütundaki tarih <= rapor sayfası B2'deki tarih
filtrelerine göre sütunlar kopyalanmaktadır.


Kod:
Sub TariheGoreSutunKopyala()

Application.ScreenUpdating = False

Dim ws1 As Worksheet, ws2 As Worksheet
Dim rngVeri As Range, rngBul As Range
Dim i As Integer, ssat As Long, ssut As Long
Dim araSut As String
Dim rTrh1 As Range, rTrh2 As Range
Dim dTrh1 As Date, dTrh2 As Date
Dim lTrh1 As Long, lTrh2 As Long

Set ws1 = Sheets("Data")
Set ws2 = Sheets("Rapor")
ssat = ws1.Cells(Rows.Count, 1).End(xlUp).Row 'A sütunundaki son dolu hücre satır no
ssut = ws1.Cells(1, Columns.Count).End(xlToLeft).Column '1. satırdaki son dolu hücre sütun no
Set rngVeri = Range(ws1.Cells(1, 1), ws1.Cells(ssat, ssut))
Set rTrh1 = ws2.Range("B1")
Set rTrh2 = ws2.Range("B2")

If rTrh1 = "" Then rTrh1 = Date
If rTrh2 = "" Then rTrh2 = Date

If Not IsDate(rTrh1) Then MsgBox "B1 hücresi tarih olmalı"
If Not IsDate(rTrh2) Then MsgBox "B2 hücresi tarih olmalı"

dTrh1 = DateSerial(Year(rTrh1), Month(rTrh1), Day(rTrh1))
dTrh2 = DateSerial(Year(rTrh2), Month(rTrh2), Day(rTrh2))
    
lTrh1 = dTrh1
lTrh2 = dTrh2

rngVeri.AutoFilter
rngVeri.AutoFilter Field:=1, Criteria1:=">=" & lTrh1
rngVeri.AutoFilter Field:=2, Criteria1:="<=" & lTrh2
rngVeri.AutoFilter

For i = 1 To 10 'rapor sayfasında aranacak sütun başlığı A-J 10 adet olduğu için
    araSut = ws2.Cells(4, i) 'rapor sayfasında aranacak sütun başlığı 4. satırda olduğu için
    With rngVeri
       Set rngBul = .Find(araSut)
       If Not rngBul Is Nothing Then
          Range(ws1.Cells(2, rngBul.Column), ws1.Cells(ssat, rngBul.Column)).Copy
          ws2.Cells(5, i).PasteSpecial xlValues
          Application.CutCopyMode = False
       End If
    End With
Next

Application.ScreenUpdating = True

End Sub
 
Değerli Arkadaşlar,
dosyada anlatmaya çalıştım. data sayfasında listeyi, ikinci sayfada iki tarih arasında listeyi getirme gibi bir sorum olacaktı. makro yerinde açtım konuyu daha değişik bir yapım şekli aklıma gelmedi.
şimdiden yardımlarınız için teşekkürler

.

ÖZET TABLOLAR (PİVOT TABLE)

Bu linkte yer alan 14 No'lu mesajımdaki örnek dosyayı inceleyin.

.
 
sn yurttas,
elinize sağlık hocam.

teşekkür ederim.
 
Geri
Üst