Soru Database Oluşturmak ile ilgili yardım istiyorum.

Katılım
23 Temmuz 2008
Mesajlar
79
Excel Vers. ve Dili
türkçe 2003
Altın Üyelik Bitiş Tarihi
20.12.2022
Arkadaşlar,
Şu an için yaklaşık 150 dosyam oluştu. Bu böyle devam ederse başa çıkamayacağım. Bir düşüncem var yardım ederseniz sevinirim.
Öncelikle yaptığım işlem; Her gün aynı dosyayı gün boyu işleyip yeni gün adı ile kaydediyorum. Ay sonunda ve istenildiğinde bunların hepsini tek tek açıp toplamlarını alıp bölümlerin her birine göre raporlar çıkartıyorum. Bu kısım kafanızı karıştırmasın ne yaptığımı anlatmak için yazdım.

Benim düşüncem bu vba kodları yardımı ile bir buton yapacağım ve ;
1. İşlem; Bir şablon sayfası oluşturup her gün verilerimi girdikten sonra bunları Database sayfasında günün karşısına tablo isimleri ile ve sıra ile tekbir satır halinde yazmak istiyorum. ikinci satırda ise bir sonraki günün verileri olacak.
2. İşlem; İstediğim zaman bu Database sayfasından istediğim günün verilerini şablon sayfasına tekrar doldurabilmek ve gerekiyorsa değişiklikleri yapıp aynı yere kaydolmasını sağlamak. Ancak burada şablon sayfasında formüllerde var, onların bozulmaması lazım ki her seferinde uğraş mamalıyım.
3. İşlem; Bu kısmı yapabileceğime inanıyorum ama yazayım istedim. Database sayfasındaki verilere göre raporlar hazırlayacağım. Ama bölüm bölüm raporlar olmalı.

1. ve 2. işlem bölümlerini üstatlardan rica ediyorum ama 3. İşlem bölümünü dediğim gibi anlatmak zor ve sanırım bu kısmı becerebilirim sadece bir fikriniz olabilir diye yazdım. Elbette farklı bütün fikirlere açığım.

Yardımcı olabilecek veya olamasa bile ilgi gösteren herkese şimdiden teşekkür ederim.
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodları ilgili sayfanın kod bölümüne (sayfa adına sağ tıklayıp kod görüntüle deyince açılan sayfaya yapıştırın. Bu kodlar A1 hücresine girilen tarihi database sayfasında arar ve varsa bilgileri analiz sayfasına getirir. Yalnız dosyanızdan analiz sayfasındaki hangi veri database sayfasındaki hangi sütuna kaydedilecek belli olmadığı için ben o kısmı tam yapamadım. Belirttiğim formatta kendiniz tüm hücreler için bu ayarlamayı yapmalısınız:
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1]) Is Nothing Then Exit Sub
If Selection.Count > 1 Then Exit Sub
If Target = "" Then Exit Sub
son = Sheets("Database").Cells(Rows.Count, "A").End(3).Row
If WorksheetFunction.CountIf(Sheets("Database").Range("A1:A" & son), Target) > 0 Then
    sıra = WorksheetFunction.Match(Target, Sheets("Database").Range("A1:A" & son), 0)
    [B4] = Sheets("Database").Cells(sıra, "B") 'Buraya sayfanın hangi hücresine veritabanının hangi sütunundaki verinin geleceğini belirtiyoruz.
    [B5] = Sheets("Database").Cells(sıra, "C") 'Buraya sayfanın hangi hücresine veritabanının hangi sütunundaki verinin geleceğini belirtiyoruz.
    ' Aynı şekilde hangi hücreye hangi sütundaki veri gelecek
    ' Aynı şekilde hangi hücreye hangi sütundaki veri gelecek
    ' Aynı şekilde hangi hücreye hangi sütundaki veri gelecek
    ' Aynı şekilde hangi hücreye hangi sütundaki veri gelecek
    ' Aynı şekilde hangi hücreye hangi sütundaki veri gelecek
Else
    MsgBox Format(Target, "dd/mm/yyyy") & " günü veritabanında bulunmamaktadır!", vbCritical
End If
End Sub
VBA ekranındayken Insert menüsünden modüleyi seçin ve aşağıdaki kodları açılan sayfaya yapıştırın. Bu da analiz sayfasına girilen verileri database sayfasına aktarıyor. Aynı şekilde hangi veri hangi sütuna gidecek bilemediğim ve çok verini olduğu için onu da tam ayarlayamadım. Verdiğim yöntemle tüm hücreler için ayarlamaları yapmanız gerekiyor:
Kod:
Sub aktar()
Dim s1 As Worksheet, s2 As Worksheet, yeni As Integer, son As Integer, gün As Date
Set s1 = Sheets("Analiz")
Set s2 = Sheets("Database")
gün = s1.[A1].Value
son = s2.Cells(Rows.Count, "A").End(3).Row
If WorksheetFunction.CountIf(s2.Range("A1:A" & son), gün) > 0 Then
    MsgBox Format(gün, "dd/mm/yyyy") & " günü veritabanında bulunmaktadır!", vbCritical
    Exit Sub
End If

uyarı = MsgBox(Format(gün, "dd/mm/yyyy") & " gününe ait kayıtlar eklensin mi?", vbYesNo)
    If uyarı = vbYes Then
       yeni = s2.Cells(Rows.Count, "A").End(3).Row + 1
       s2.Cells(yeni, "A") = Format(gün, "dd/mm/yyyy")
       s2.Cells(yeni, "B") = s1.[B1]
       s2.Cells(yeni, "C") = s1.[B2] ' Bu kısma veritabanına analiz sayfasından hangi veriler gelecekse bu şekilde her hücre bir satırda olacak şekilde kaydedilmeli
       ' aktarılacak diğer hücre
       ' aktarılacak diğer hücre
       ' aktarılacak diğer hücre
       ' aktarılacak diğer hücre
       ' aktarılacak diğer hücre vs
    End If

MsgBox Format(gün, "dd/mm/yyyy") & " günü bilgileri veritabanına kaydedildi!", vbCritical
 
End Sub
 
Katılım
23 Temmuz 2008
Mesajlar
79
Excel Vers. ve Dili
türkçe 2003
Altın Üyelik Bitiş Tarihi
20.12.2022
Yusuf bey,
Cevap gelmeyecek sandığımda cevap verdiniz. İlginiz için teşekkür ederim. Ama sanırım ya ben yapamadım, yada anlatamadım. Zira kodları yerleştirince Database sayfasına sadece
A2 hücresine 13.11.2018 B2 hücresine Tablo 1 C3 hücresine de HAFTA geliyor ve tekrar makroyu çalıştırınca da yei bir satıra aynı veriler geliyor.

Ben bu sayfadaki verilerin hepsinin tek bir satıra gelmesini istiyorum. Sadece tablo ve tabloya ait verilerin ilk önce gelmesine dikkat etmek istedim. Ardından yine aynı satıra devamında 2 tabloya ait veriler gelirse bende hangi veriler hangi tabloya ait anlayabilirim diye düşündüm. Bu bu şekilde giderek bütün veriler tek bir satırda birikecek.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Demek ki yazdıklarımı iyi okumamışsınız. Dosyanızda aktarılacak çok fazla veri var. Bunların hepsinin tek tek makroda ayrı satırlar olarak belirtilmesi gerekiyor ve ben hangi hücre hangi sütuna gidecek ya da analiz sayfasına nerden veri gelecek bilemediğim için o ayarlamaları yapmadım ve bunu da önceki mesajımda açıkça belirtmiştim.

Makroda verilerin hangi kodlarla sayfalar arasında aktarılacağı açık bir şekilde örnekli olarak belirtilmiştir. O düzenle bilgileri her hücre için ayrı ayrı makroya eklemelisiniz.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Şimdi baktım, analiz sayfasında 555 tane dolu hücre var. Bunların 555 tanesini başlık kabul edersek 500 tanesi veri demektir ve aktarım kısmında 500 satır kod yazılması gerekmektedir. Bunu kısaltmak için hücre hücre işlem yapmak yerine blok halinde kopyala yapıştır işlemi yapılabilir. Ancak her iki durumda da (hücre ya da blok) analiz sayfasındaki hangi hücrenin/bloğun, database sayfasındaki hangi hücreye/sütuna/bloğa kaydedileceğinin açıkça belirtilmesi gerekmektedir. Dosyanızdan bu anlaşılmıyor maalesef.
 
Katılım
23 Temmuz 2008
Mesajlar
79
Excel Vers. ve Dili
türkçe 2003
Altın Üyelik Bitiş Tarihi
20.12.2022
Yusuf Bey, size başka bir şey sorabilir miyim. Ekte bir dosya oluşturdum. Sayfa1 deki verileri Sayfa 2 de istediğim gibi düzenledim. Bu işlemi makro ile nasıl yapabiliriz?
 

Ekli dosyalar

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
İsteyebilirsiniz elbette.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Arkadaşlar,
Şu an için yaklaşık 150 dosyam oluştu. Bu böyle devam ederse başa çıkamayacağım. Bir düşüncem var yardım ederseniz sevinirim.
Öncelikle yaptığım işlem; Her gün aynı dosyayı gün boyu işleyip yeni gün adı ile kaydediyorum. Ay sonunda ve istenildiğinde bunların hepsini tek tek açıp toplamlarını alıp bölümlerin her birine göre raporlar çıkartıyorum. Bu kısım kafanızı karıştırmasın ne yaptığımı anlatmak için yazdım.
Bence tüm günleri bir dosya içinde sayfa sayfa bulundurmanız.
Daha sonra bir butonla tüm günleri ICMAL sayfasında alt alta birleştirmeniz.

Sonrası, toplu veri içinden raporlama.
300 küsür sayfa arasında nasıl gezinirim derseniz
* Fıhrıst sayfasında tüm sayfalara link yapılabilir.
* Tüm sayfaların A1 hücresine Fihrist sayfasına link verilebilir.

Bu şekilde her ay istediğiniz raporlamayı kolay bir şekilde yapabilirsiniz.
 
Katılım
23 Temmuz 2008
Mesajlar
79
Excel Vers. ve Dili
türkçe 2003
Altın Üyelik Bitiş Tarihi
20.12.2022
Bence tüm günleri bir dosya içinde sayfa sayfa bulundurmanız.
Daha sonra bir butonla tüm günleri ICMAL sayfasında alt alta birleştirmeniz.

Sonrası, toplu veri içinden raporlama.
300 küsür sayfa arasında nasıl gezinirim derseniz
* Fıhrıst sayfasında tüm sayfalara link yapılabilir.
* Tüm sayfaların A1 hücresine Fihrist sayfasına link verilebilir.

Bu şekilde her ay istediğiniz raporlamayı kolay bir şekilde yapabilirsiniz.
Aslında dediğinizi yapmayı düşündüm mantıklı geldi ama bazen dosyaları kendime mail atıyorum çalışmak için. Bazen bir başkasına sormak için bu durumda hepsini taşımak çok zor oluyor. Şuanda rar ile sıkıştırıp gönderiyorum. Ama bu işlem de dosyaları kaybetmek veya zarar verme korkusu da var. Bu yüzden tek dosyada çalışmak istiyorum.
 
Katılım
24 Nisan 2005
Mesajlar
3,671
Excel Vers. ve Dili
Office 2016 EN 64 Bit
Altın Üyelik Bitiş Tarihi
25/05/2022
Aslında dediğinizi yapmayı düşündüm mantıklı geldi ama bazen dosyaları kendime mail atıyorum çalışmak için. Bazen bir başkasına sormak için bu durumda hepsini taşımak çok zor oluyor. Şuanda rar ile sıkıştırıp gönderiyorum. Ama bu işlem de dosyaları kaybetmek veya zarar verme korkusu da var. Bu yüzden tek dosyada çalışmak istiyorum.
Bir günlük dosyada kaç satır var en fazla?
Benim dediğim şekilde sadece tek dosyanız olacak, bir çok dosya değil.
 
Üst