Günlük bilgileri özet rapor sayfasına aktarmak

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,558
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Selamlar,

Ekteki dosyada bir sayfadan diğer bir sayfaya günlük bilgileri aktarmak için nasıl bir yöntem kullanmalıyız.

Soruyu çözecek arkadaşlarımızın formül ve makro kodlarının açıklamalarını yazarak yorumda bulunmaları yeni başlayan arkadaşlarımız için faydalı olacaktır.

Not: Başlangıç aşamasında olan arkadaşlarımızda lütfen yorumlarını belirtsinler.

Kolay gelsin.
 
Katılım
1 Mart 2007
Mesajlar
94
Excel Vers. ve Dili
Excel 2010 Eng
Sayın COST_CONTROL öncelikle bu soruya cevabı benim gibi yeni başlayan birinin cevap vermesi abes olabilirdi:)
Ama size gün içerisinde sorduğum bir soruyu(buna çok benziyor) cevapladınız ve bir dosya gönderdiniz. Burada düşünerek ben ÖZET RAPOR sayfasına aynen sizin yaptığınız gibi bir combobox ve textbox yerleştirdim. yalnız sizin verdiğiniz textboxa
Kod:
SÜTUN = [B1:H1].Find(What:=CDate(TextBox1), LookAt:=xlWhole).Column
bilgisini eklemiş ve textboxun başına Cdate yazmışsınız. Galiba bu sadece tarih girilebilmesini sağlıyor(tamamen yanlış söylüyorda olabilirim.:)) Bu yüzden hata verdi. Birde ben "GÜNLÜK GELİRLER" sayfasındaki verileri "özet rapor" a taşımak zorunda kaldım çünkü sizin bana gönderdiğiniz dosyada [B1:H1] yazmakta bunun başına ben "özet rapor"u ekleyemedim. Sonuç olarak çalışmadı. Çünkü elimde kod olmasına rağmen gerekli küçük değişiklikleri yapamadığımdan çalışmadı. En azından başka arkadaşlara örnek olması için ekliyorum :) Neyse herkese iyi geceler...
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,242
Excel Vers. ve Dili
Ofis 365 Türkçe
Günün Sorusu

Merhaba Sayın COST_CONTROL,

Bir çok yönden çözülecek bir soru hazırlamışsınız. Benim aklıma ilk gelen çözüm VLOOKUP(DÜŞEYARA) fonksiyonu kullanmak oldu.

Nedenine gelince :

ÖZET RAPOR sayfasında B1 hücresinde 1. GÜN görünüyor, bunu yakından incelerseniz bu hücrenin değeri 1, ama gösterim 1. GÜN, aynı şekilde GÜNLÜK GELİRLER sayfasında da 1. GÜN, 2. GÜN diye giden hücrelerde aynı özelliğe sahipler.

Bu değeri ben DÜŞEYARA fonksiyonunda kullanabilirim dedim.

GÜNLÜK GELİRLER sayfasında A2:AF26 aralığını Gelirler olarak adlandırdım.

Formülde 'GÜNLÜK GELİRLER'!$A$2:$AF$26 kullanmak yerine ad tanımlamasını yeğledim.

DÜŞEYARA da getirmesi gereken kolon sayısını ÖZET TABLO B1 hücresindeki değerden 1 fazlası olacaktı.

Ekteki dosyada bunu görebilirsiniz.
 
Son düzenleme:

Suskun

Altın Üye
Altın Üye
Katılım
27 Kasım 2006
Mesajlar
292
Excel Vers. ve Dili
Excel 19
Altın Üyelik Bitiş Tarihi
24.05.2032
Merhaba,

Problemde Çifte sorgulama yapıldığı için (Departman ve Gün) Düşeyara fonksiyonu yerine daha esnek ve işlevsel İNDİS ve KAÇINCI Fonksiyonlarını kullanmak daha doğru geldi bana.

B6 Hücresideki formul şöyle:

=İNDİS('GÜNLÜK GELİRLER'!$A$1:$AF$26;KAÇINCI('ÖZET RAPOR'!A6;'GÜNLÜK GELİRLER'!$A$1:$A$26;); KAÇINCI('ÖZET RAPOR'!$B$1;'GÜNLÜK GELİRLER'!$A$1:$AF$1;))

İNDİS Alanımız Günlük Gelirler sayfasının A1:AF26 alanı;
1.Sorgumuzda A6 Değerinin (Departman Adının) Günlük Gerlirler sayfasının A1:A26 alanında KAÇINCI Olduğunu Sorguluyoruz,
2. Sorgumuzda B1 değerinin (Günün) Günlük Gelirler sayfasının A1:AF1 Alanında KAÇINCI olduğunu Sorguluyoruz

Örnekte Departman adları sabit, güne göre toplam departman gelirerini bulabiliyoruz.
Örneğe uygun olarak Gün ve Departman Seçip Gelirini Nasıl bulurduk diye düşünenler için ikinci bir sayfada Gün ve Departman Adını seçerek Departmanın Günlük gelirini bulan bir çalışma sayfası ekledim.

BU sayfada Gün ve Departman seçimi için Günler ve Departmanlar Alan adlarını tanımlayarak 2 adet veri doğrulama ekledim.

Kolay gelsin
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Kod ile yapılmış çözüm.
Kod sayfasınde Worksheet_Change olayına kodlar bağlanmış.Hedef hücre olarak Özet tablodaki B1 hücresi alınmıştır.
B1 hücresine değer girdiğinizde Hücre içerikleri B1 hücresinde bulunan güne göre değişmektedir.
KOdlarda Vlookup(Düşeyara) kullanılmıştır.
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,895
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Sn COST_CONTROL farklı yöntemlerin çıkması için güzel bir soru sormuş üyelerimizin farklı çözümler göreceklerine inanıyorum eklenmemiş bir farklı örnekte KAYDIR fonksiyonu'dur.

GÜNLÜK GELİRLER sayfasındaki B2:AF26 aralığı 25 satırlı 31 sütunlu bir matristir.

B1 hücresine 1.GÜN yazılmış bunu değiştirmemek ve içinden sadece sayıyı almak için

Kod:
=DEĞİŞTİR(B1;1;MİN(MBUL({0;1;2;3;4;5;6;7;8;9};B1&"0123456789"))-1;"")

fonksiyonunu kullandım ve sütunların bulunacağı [x,y] matrisinin ikinci kısmı için referans hücre olmuş oldu.C1 hücresinin font rengi beyaz olup B1 hücresinden sayıyı almaktadır.

1 gün için ilk hücre [1,1] olan Departman1-1.GÜN'ün kesiştiği kısım olan 474,28 YTL olan kısımdır.

C1 hücresine formülü yazarak 1 olan kısımını aldırmıştık.

[x,y] olan kısımı aldırmak içinde 1,2,3 gibi devam eden birşey bulmak lazım gelecektir. Bunun içinde;

Özet Rapor kısmının B6 hücresine SATIRSAY(B6:$B$6) yazdım.Boş bir hücreye SATIRSAY(B6:$B$6) yazıp aşağı doğru çektiğinizde Excel size 1,2,3 diye artıracaktır. Bunun avantajı el ile teker teker rakam girme zahmetinden excel sizi kurtaracaktır.

=KAYDIR('GÜNLÜK GELİRLER'!$A$1;SATIRSAY(B6:$B$6);$C$1) fonksiyonu bir adres belirtmedir.

1.gün seçildiğinde

Kod:
=KAYDIR('GÜNLÜK GELİRLER'!$A$1;SATIRSAY(B6:$B$6);$C$1)
fonksiyonu

Kod:
=KAYDIR('GÜNLÜK GELİRLER'!$A$1;1;1)
şekline gelecektir buda Günlük Gelirler sayfasındaki alanımızdaki 1 satır 1 sütundaki veriyi getir demektir.

Diğer günlerde aynı mantık ile çalışmaktadır.

Not: B1 hücresindeki veri doğrulama kısmı Ad-Tanımla kısmı ile yapılmıştır.

Örnek dosya ektedir.
 

İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,104
Excel Vers. ve Dili
Excel, 365 - İngilizce
1. Günleri kopyalarak Edit/Paste Special / Value /Transpose ile AL5:AL36 aralığına yapıştırdım. Ve bu alana Insert/Name/Define ile "Liste" olarak tanımladım.


2. View/Toolbars/Forms'tan bir List Box ve bir Combobox ekledim. Dileyen istediğini kullansın diye.

3. Bunların Input Range'lerine "Liste" ve Cell Link'lerine 'GÜNLÜK GELİRLER'!$AL$1 hücresini "gün" olarak tanımladığımı yazdım.

4. B14 hücresine =OFFSET('GÜNLÜK GELİRLER'!A1;;GÜN) formülünü yazıp, aşağıya doğru kopyaladım.


OFFSET - KAYDIR
Bir hücre veya hücre aralığındaki belirtilen sütun ve satır sayısında bir aralığın başvurusunu verir. Verilen başvuru, bir tek hücre veya bir hücre aralığı olabilir.

Sözdizimi:
KAYDIR(başv;satırlar;sütunlar;yükseklik;genişlik)
OFFSET(reference,rows,cols,height,width)


Dosya ektedir.



.
 

Ekli dosyalar

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Kod ile yapılmış 2.çözüm.
Kod sayfasınde Worksheet_Change olayına kodlar bağlanmış.Hedef hücre olarak Özet tablodaki B1 hücresi alınmıştır.
B1 hücresine değer girdiğinizde Hücre içerikleri B1 hücresinde bulunan güne göre değişmektedir.

İşlemde Özet tablo sayfasındaki hücreler ile Günlük gelirler sayfasındaki hücrelerde eşitlik sağlandığında Günlük gelirler sayfasındaki aranan değere karşılık gelen istenilen günün değeri Özet tablodaki aranan değerin hücresinin yanındaki hücreye gelmektedir.
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
merhaba ; konu çok güzel açılmış ve cevaplanmış. incelediğimde aklıma gelen bir soru var onu sorayım konu ile ilgili.
departmanlardan herhangi birisinin seçilen günde hesap hareketi yok ise o departmanı özet sayfaya aldırmadan hesap hareketi olanları aldırabilirmiyiz. ikincisi günleri rakam formatında değilde tarih formatında örneğin 09.04.2007 tarihi olarak girerek yapabilirmiyiz.
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
2 adet kriter olduğu için SUMPRODUCT(TOPLA.ÇARPIM) fonksiyonu kullanılması daha uygun olabiliir.

B6 hücresine aşağıdaki formülü yazıp B30 hücresine kadar kopyalanması yeterlidir.

Kod:
=SUMPRODUCT(('GÜNLÜK GELİRLER'!$A$2:$A$26=$A6)*('GÜNLÜK GELİRLER'!$B$1:$AF$1=$B$1);('GÜNLÜK GELİRLER'!$B$2:$AF$26))
Buradaki formül GÜNLÜK GELİRLER sayfasındaki departman bilgilerinin A kolonuna eşit ve GÜNLÜK GELİRLER sayfasındaki Gün bilgilerininde B1 hücresine eşit ise bu
bilgilere uyan alandaki tutarı yaz şeklinde açıklanabilinir.
 
Katılım
25 Ağustos 2005
Mesajlar
569
Excel Vers. ve Dili
Excel 2003 Tr
sn.ripek ilginiz için teşekkür ederim. bu örnekte hareketi olmayan departmanın satırının çıkması gerekli çünkü 5000 satır varsa ve seçilen günde sadece 100 tanesinin hareketi varsa ve bu hareketler dağılmış satırlar halindeyse raporlama zorluğu çıkmaktadır. hareketi olmayan departmanın satırının olmamasındaki sebep budur. çözümü bu örneğin dışında mı aramak gerekir acaba. ilginiz için teşekkür ederim.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,058
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Sn hikmet

Lütfen sorularınızı bu başlığa sormayın. Excel soruları bölümündeki diğer başlıklara bu başlığı referans göstererek sorabilirsiniz. Aksi takdirde bu başlıkta amacının dışına çıkacaktır.​
 
Katılım
2 Mart 2007
Mesajlar
603
Excel Vers. ve Dili
2003
Hiç bir formüle gerek kalmadan Pivot Tablo kullanılabilir.
Pardon
 
Son düzenleme:

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Çözümlü dosyanızı ekleyiniz.
 

mehmett

Altın Üye
Katılım
18 Mayıs 2005
Mesajlar
2,571
Excel Vers. ve Dili
Excel 2010 Türkçe
Yatayara fonksiyonu ve Veri Doğrualama ile yapılan bir çözüm.
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Arkadaşlarımızın bu soru için ürettikleri çözümler toplu olarak
ekli dosyadadır.
 

Ekli dosyalar

Son düzenleme:
Katılım
23 Nisan 2007
Mesajlar
2
Excel Vers. ve Dili
2007
arkadaşlar bende böyle bir şey düşündüm kopyala yapıştır şeklinde hata verdiği için kod biraz uzadı
 

zafer

Super Moderator
Yönetici
Katılım
8 Mart 2005
Mesajlar
3,288
Excel Vers. ve Dili
OFFICE 2003 TÜRKÇE
OFFICE 2010 TÜRKÇE
Merhaba

Sn.Karga Kodlarınızı butona atayıp ,kodlarınızın açıklamalarını yanlarına yapabilirmisiniz.

Elinize sağlık.
 
Katılım
3 Nisan 2005
Mesajlar
347
Excel Vers. ve Dili
office xp tr
Bir örnekte benden olsun

Sub test()
Set s1 = Sheets("ÖZET RAPOR")
Set s2 = Sheets("GÜNLÜK GELİRLER")
For Each bak1 In s2.Range("a1:af1")
If bak1 = s1.Range("b1") Then
s2.Select
bak1.Select
Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(25, 0)).Copy
s1.Select
s1.Range("b6").PasteSpecial
Application.CutCopyMode = False
End If
Next
End Sub
'1 s1 değişkenine özet rapor sayfasını atıyoruz
'2 s2 değişkenine günlük gelirler sayfasını atıyoruz
'3 günleri döngü içerisine alıyoruz
'4 günleri özet rapordaki güne göre sorguluyoruz
'5 günlük gelirler sayfasını seçiyoruz
'5 özet rapor sayfasındaki gün ile uyuşan günü belirleyip seçiyoruz
'6 kritere uyan günün altındaki verileri belirleyip kopyalıyoruz
'7 özet rapor sayfasını seçiyoruz
'8 b6 hücresine yapıştırıyoruz
'9 kopyalayı etkisiz yapıyoruz

Bu biraz daha iyi oldu.
Sub test()
Application.ScreenUpdating = False
Set s1 = Sheets("ÖZET RAPOR")
Set s2 = Sheets("GÜNLÜK GELİRLER")
For Each bak1 In s2.Range("a1:af1")
If bak1 = s1.Range("b1") Then
s2.Select
bak1.Select
s1.Range("b6:b30") = Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(25, 0)).Value
s1.Select
End If
Next
Application.ScreenUpdating = True
End Sub
 
Son düzenleme:
Üst