Günleri sıralayan makro

Erdinç FIRTINA

Altın Üye
Katılım
14 Şubat 2007
Mesajlar
400
Excel Vers. ve Dili
excel 2003 türkçe
Altın Üyelik Bitiş Tarihi
15-05-2026
Değerli Forum üyeleri,
Tarih sıralaması yapan kodlara günlerin adlarını da eklemek istiyorum. Yani günün tarihi yazılan sütun yanına gününü de yazsın. Olabilir mi?

Ayrıca, hafta sonlarını almadan sıralama yapılabilir mi?


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim j As Date
Set s1 = Sheets("Sayfa1")
Range("A3:A34").ClearContents
Range("B1:AF1").ClearContents
j = s1.[A2]
Ay = Month(j)
j = DateSerial(Year(j), Month(j), 1)
i = 3
k = 2
Do While Month(j) = Ay
Cells(i, "A") = j
Cells(1, k) = j
i = i + 1
j = j + 1
k = k + 1
Loop

End Sub
 

Korhan Ayhan

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

Ekteki örnek dosyayı incelermisiniz.
 

Erdinç FIRTINA

Altın Üye
Katılım
14 Şubat 2007
Mesajlar
400
Excel Vers. ve Dili
excel 2003 türkçe
Altın Üyelik Bitiş Tarihi
15-05-2026
TeŞekkÜrler

Sayın COST_CONTROL,

Her şey için çok teşekkürler!!!

Öğrenmek için farkları görerek olayı anlamaya çalışıyorum. Bu nedenle, aynı işlemler sadece sütunlarda olsaydı veya tarihi K3'e girip tarihin sıralamasını F4'ten başlayarak yaptırsaydık günleri de J4'ten başlatarak yazdırsaydık kodda ne gibi değişiklikler yapmalıydık?

2.satırda A2 yerine K3
6.satırda A3:A34 yerine F4:F35
AMA GÜNLERİ YAZAN SATIRI BULAMADIM
Yani uygulamayı sadece sütunlara çevirir ve tanımlanan sütunlarda da değişiklik yapabilirseniz, ben de bu değişiklikleri inceleyerek bir şeyler öğrenmeye çalışıyorum.

Şimdiden teşekkürler!!!
 

Erdinç FIRTINA

Altın Üye
Katılım
14 Şubat 2007
Mesajlar
400
Excel Vers. ve Dili
excel 2003 türkçe
Altın Üyelik Bitiş Tarihi
15-05-2026
Sayın COST_CONTROL,
hazırlamış olduğunuz kodları dosyama uyarlamaya çalışıyorum ama ERROR veriyor. Nedeni ise aynı sayfada;

"Private Sub Worksheet_Change(ByVal Target As Range)" ile başlayan başka kodların olması diye düşünüyorum.

Bu durumda ne yapmalıyım?
Aslında başka bir konu başlığı açarak sormak daha mı doğru olur?

Şimdiden teşekkürler!!!
 

Korhan Ayhan

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

Sayın COST_CONTROL,
hazırlamış olduğunuz kodları dosyama uyarlamaya çalışıyorum ama ERROR veriyor. Nedeni ise aynı sayfada;

"Private Sub Worksheet_Change(ByVal Target As Range)" ile başlayan başka kodların olması diye düşünüyorum.

Bu durumda ne yapmalıyım?
Aslında başka bir konu başlığı açarak sormak daha mı doğru olur?

Şimdiden teşekkürler!!!
Bu şekilde aynı prosedüre ait iki farklı kod kullanamazsınız. Bu durumda sizin çalışmanızdaki kod ile benim önerdiğim kodu birleştirerek kullanmanız gerekecektir.


Diğer sorunuza gelince verdiğiniz yeni hücre adreslerine göre aşağıdaki kodu kullanabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    '1- SAYFADA SADECE K3 HÜCRESİ DEĞİŞTİĞİNDE KODU ÇALIŞTIRMAK İÇİN HÜCREYİ TANIMLIYORUZ.
    If Application.Intersect(Target, [K3]) Is Nothing Then Exit Sub
    '2- EĞER K3 BOŞ İSE İŞLEMİ SONLANDIRIYORUZ.
    If Target = "" Then Exit Sub
    '3- TARİH ADINDA BİR DEĞİŞKEN TANIMLAYIP TİPİNİDE TARİH FORMATINA AYARLIYORUZ.
    Dim TARİH As Date
    '4- İŞLEM YAPACAĞIMIZ SAYFA ADINI S1 OLARAK HAFIZAYA ALIYORUZ.
    Set S1 = Sheets("Sayfa1")
    '5- BELİRTİLEN HÜCRELERDEKİ DAHA ÖNCE AKTARILAN BİLGİLERİ İÇERİK OLARAK TEMİZLİYORUZ.
    Range("F4:F35,J4:J35").ClearContents
    '6- TARİH DEĞİŞKENİNİN DEĞERİNİ BELİRLİYORUZ.
    TARİH = S1.[K3]
    '7- DAHA SONRA SORGUDA KULLANMAK ÜZERE TARİHİN AİT OLDUĞU AYI TANIMLIYORUZ.
    AY = Month(TARİH)
    '8- GİRİLEN TARİHİ AYIN İLK GÜNÜNE SABİTLİYORUZ.
    TARİH = DateSerial(Year(TARİH), Month(TARİH), 1)
    '9- SATIR ADINDA BİR DEĞİŞKEN TANIMLIYORUZ. BAŞLANGIÇ DEĞERİNİ 4 OLARAK BELİRLİYORUZ.
    SATIR = 4
    '10- X ADINDA 1-31 DEĞER ARALIĞINDA ÇALIŞACAK BİR DÖNGÜ BAŞLATIYORUZ. BU DEĞERLER GÜNLERİ İFADE ETMEKTEDİR.
    For X = 1 To 31
    '11- TARİHİN ALDIĞI DEĞERİN GÜNÜNÜ SORGULUYORUZ. EĞER GÜN CUMARTESİ İSE GÜNE 2 EKLİYORUZ. BU ŞEKİLDE YENİ TARİH DEĞERİMİZ PAZARTESİ OLUYOR.
    If Weekday(TARİH, vbMonday) = 6 Then TARİH = TARİH + 2
    '12- TARİHİN ALDIĞI DEĞERİN GÜNÜNÜ SORGULUYORUZ. EĞER GÜN PAZAR İSE GÜNE 1 EKLİYORUZ. BU ŞEKİLDE YENİ TARİH DEĞERİMİZ PAZARTESİ OLUYOR.
    If Weekday(TARİH, vbMonday) = 7 Then TARİH = TARİH + 1
    '13- DÖNGÜYE GİREN TARİHİN ALDIĞI DEĞERİN K3 HÜCRESİNE GİRİLEN TARİHİN AY DEĞERİ İLE EŞİTLİĞİNİ SORGULUYORUZ.
    If Month(TARİH) = AY Then
    '14- EĞER SORGULARIMIZIN SONUCU OLUMLU İSE F SÜTUNUNA SATIR DEĞİŞKENİNİN DEĞERİNE AİT SATIRA (YANİ SATIR=4 OLDUĞU İÇİN F4 HÜCRESİNE) TARİH DEĞERİNİ YAZDIRIYORUZ.
    Cells(SATIR, "F") = TARİH
    '15- EĞER SORGULARIMIZIN SONUCU OLUMLU İSE J SÜTUNUNA SATIR DEĞİŞKENİNİN DEĞERİNE AİT SATIRA (YANİ SATIR=4 OLDUĞU İÇİN J4 HÜCRESİNE) TARİHİ FORMATLAYARAK GÜN DEĞERİNİ ("dddd" = DAY = GÜN) YAZDIRIYORUZ.
    Cells(SATIR, "J") = Format(TARİH, "dddd")
    '16- SATIR DEĞERİNE 1 EKLİYORUZKİ DÖNGÜ DEVAMINDA YENİ DEĞERLER AYNI HÜCRELERE YAZILMASIN.
    SATIR = SATIR + 1
    '17- TARİH DEĞERİNE 1 EKLİYORUZ. X DÖNGÜSÜ DEVAM ETTİKÇE 1 EKLEDİĞİMİZ TARİHİ SORGULAYACAKTIR.
    TARİH = TARİH + 1
    '18- SORGULARIMIZIN SONUCU OLUMSUZ İSE DÖNGÜ SİZİ DİREK BU SATIRA YÖNLENDİRECEKTİR.
    End If
    '19- X DÖNGÜSÜNE DEVAM EDİYORUZ. BU DÖNGÜ X=31 OLANA KADAR DEVAM EDECEKTİR.
    Next
    '20- DÖNGÜ BİTİMİNDE HAFIZAYA ALDIĞIMIZ SAYFA TANIMLAMASINI HAFIZADAN SİLİYORUZ.
    Set S1 = Nothing
    '21- END SUB KOMUTU İLE İŞLEMİ SONLANDIRIYORUZ.
End Sub
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,895
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Sn COST_CONTROL hiç makro bilmeseydim bile sizin güzel açıklamalarınız ile kodların neye yaradığını anlayabilirdim.

Balık tutmayıda öğretmişsiniz,Ellerinize sağlık..
 

Erdinç FIRTINA

Altın Üye
Katılım
14 Şubat 2007
Mesajlar
400
Excel Vers. ve Dili
excel 2003 türkçe
Altın Üyelik Bitiş Tarihi
15-05-2026
Sayın COST_CONTROL,
Gerçekten Ali Beyin dediği kadar olmuş. Size gerçekten yürekten teşekkürler. İnanıyorum ki, yaptığınız açıklamalardan sadece ben değil, benim gibi yeni olan bir çok kişi yararlanacaktır. Bu bilgilerden hareketle bir çok yeni bilgi öğrenecektir. Emeğin değeri ölçülmesi en güç olan değerdir. Ama, bir de bu değer bilgi öğretmek ise "KIRK YIL KÖLE OLMAK" gibi bir atasözüne bile süresi azdır denilebilir.
Emeklerinizin karşılığında belki de sizlere sadece teşekkür sunabiliyoruz. Ancak, inanınki bu teşekkürler çok yürekten ve içtenlikle.

Onun için size gerçekten çok ama çok teşekkür ederim. Umarım ki diğer hocalarımız da zaman zaman bu tür sorulara veya yazdıkları kodlara açıklamalar ekler. Bazen de olsa yapılacak bu tür uygulamalar inanın ki forumun değerini daha da arttıracaktır.

Aynı prosedürdeki iki kodu birleştirme sorunum hakkında verilebilecek bir örnek veya ipucu ile ilgili olarak da foruma yeni bir başlık açarak sormanın daha doğru olacağını düşünüyorum. Bu sorumun cevabının da bir çok yeni arkadaşımızı yönlendireceğini düşünüyorum.


YARDIMLARINIZ İÇİN TEŞEKKÜRLER!!!
 
Katılım
12 Ocak 2007
Mesajlar
465
Excel Vers. ve Dili
2003
sn cost control yapmış olduğunuz çalışma hakkaten güzel.elinize sağlık.başka başlık açmamak adına aynı konuda bir sorum olacak.görür ve yardımcı olursanız sevinirim.benim buna benzer tarih sıralaması olan personel aylık çalışmalarım mevcut ve hepsi kişi başı 12 aydan oluşuyor.kurum bilgileri adlı bir sayfada ait olduğu yılı içeren bir takvim uygulaması mevcut.bu takvim uygulamasında yıl seçildiğinde yayınlamış olduğunuz örnek dosyadaki sarı boyalı hücre gibi kabul edilip gösterilen bir satıra yukardan aşağı 12 ay için 1/1/07 altına 1/2/07 gibi sıralatmak mümkünmü acaba.bunu yapabilirsem kendimce sizin kodlarınıza sarı boyalı alana (ayın tarihini girdiğimiz ve örnek dosyanızda buna göre sıralama yapan kod)bağlayarak bütün bu sayfaların günlerini yazdırmayı düşünüyorum.ama sadece düşünebiliyorum.konu uzun oldu ama ilk etap sorunum kurum bilgi sayfasındaki yıla göre ayları sıralatmak.saygılarımla
.
 

Korhan Ayhan

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

Sn. mustafa7691,

Örnek dosya ekleyerek sorunuzu açıklarmısınız.
 
Katılım
12 Ocak 2007
Mesajlar
465
Excel Vers. ve Dili
2003
Sn hocam örnek amaçlı bir dosya ekledim umarım faydası olur teşekkürler
 

Korhan Ayhan

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

Örnek dosyanızı eklemişsiniz fakat açıklama yapmamışsınız. Hangi hücre değişince tarih hangi kritere göre nerelere yazdırılacak?
 
Katılım
12 Ocak 2007
Mesajlar
465
Excel Vers. ve Dili
2003
Sn hocam aslında ana isimli sayfada bir açıklamam vardı ama sanırım tam anlatamadım.şu anki dosyada açıklama mevcut.ilgilenebilirseniz sevinirim.ve şunuda belirteyim ben sıralamayı farklı biçi
mde birçok sayfada kullanmak istediğim için sıralama sütünu sayfada boş olan herhangi bir alana yapılabilir.saygılarımla
 

Necdet

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

ana adlı sayfada

AM6 Hücresine

Kod:
=TARİH($Q$5;SATIR()-5;1)
=DATE($Q$5;ROW()-5;1)
Yazın ve aşağıya doğru kopyalayın
 
Katılım
12 Ocak 2007
Mesajlar
465
Excel Vers. ve Dili
2003
Sn Necdet hocam teşekkür ederim.kolay gelsin
 
Üst