• DİKKAT

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

hücreye yazılan tarihi istediğim formata çevirmek ve 1 2 yıl öncesini almak.

Katılım
14 Ocak 2005
Mesajlar
807
Excel Vers. ve Dili
Microsoft Office Professional Plus 2021
Selam Arkadaşlar,

BSYIL = Range("B3")
BSAY = Range("C3")
BSGUN = Range("D3")
BTYIL = Range("B4")
BTAY = Range("C4")
BTGUN = Range("D4")

BASTAR = BSYIL + " - " + BSAY + " - " + BSGUN
BITTAR = BTYIL + " - " + BTAY + " - " + BTGUN

buradaki kodlarla hücrelere yazmış olduğum mesela B3 e 2009 C3 e 05 D3 de 01 yazıyorum kodda da görüldüğü gibi bunu bizim sql in desteklediği
'2009-05-01' şeklinde birleştiriyorum BASTAR BITTAR değişkenlerinde görülebileceği gibi.

Tek tarihli bir raporda sıkıntı olmuyor.
Fakat ben geriye dönük 3 yıl 4 yıl veya bazen 5 yıl rapor alma durumlarım oluyor. bende bu mantıkta bu tarihleri ayrı ayrı hücreler 5 yılın tarihini yazmak zorunda kalıyorum ve SQL e öyle gönderiyorum.

1- İstediğim normal bir yere excelde bir hücreye normal başlangıç bitiş tarihi yazayım bu ay için başlangıç tarihi= 01.05.2011 bitiş tarihi=31.05.2011 bende gidip VBA bölümünde
a-bunun formatını bu yıl için bastar=2011-05-01 bittar=2011-05-31 yapayım.
b- bir yıl öncesini otomatik nasıl alırım ve istediğim formata döndürme
c- şubat ayında sorun olmayacak şekilde artık yılda yani.

Umarım ne anlatmak istediğimi anlamışsınızdır. Teşekkür ederim şimdidem.
 
Tarihin A1 hücresinde olduğunu varsayarsak;
Kod:
Sub tarihformati()
MsgBox Format([a1], "yyyy-mm-dd")
End Sub
Bu da bir yıl öncesi;
Kod:
MsgBox Format(DateSerial(Year([a1]) - 1, Month([a1]), Day([a1])), "yyyy-mm-dd")
 
Eline sağlık kardeşim peki
MsgBox Format(DateSerial(Year([a1]) - 1, Month([a1]), Day([a1])), "yyyy-mm-dd")
burada şubat ayı 2011-02-28 iken atıyorum 2009 29 çekse bir önceki yıl denince son tarih otomatik olarak 2009-02-29 mu olur
 
Ayın ilk ve son günlerini bulmak için;
Kod:
Function ilkgün(tarih)
ilkgün = Format(tarih - Day(tarih) + 1, "dd/mm/yyyy")
End Function

Function songün(tarih)
songün = Format((DateSerial(Year(tarih), Month(tarih) + 1, 1)) - 1, "dd/mm/yyyy")
End Function
Sub IlkGun_SonGun()
MsgBox ilkgün([a1])
MsgBox songün([a1])
End Sub
 
Kod:
' BUDA ÇEVİRME YÖNETEMİ
BASTAR = ilkgün([B3])
BITTAR = songün([B4])
BASTAR = Format(DateSerial(Year([BASTAR]) - 1, Month([BASTAR]), Day([BASTAR])), "yyyy-mm-dd")
BITTAR = Format(DateSerial(Year([BITTAR]) - 1, Month([BITTAR]), Day([BITTAR])), "yyyy-mm-dd")
' eğer tarih artık yılı da dikkate alınacaksa ayın ilk günü son günü bulunmalı
' AY BAZINDA AYIN BAŞLANGICI VE BİTİŞ GÜNÜ DİKKATE ALINARAK YAPILACAKSA
' BU ŞEKİLDE FUNTIONLARA GÖNDERİLİP AYIN İLK VE SONGÜNÜ HESAPALANACAK
 
MsgBox BASTAR
MsgBox BITTAR
BURADA BEN çevirmeye çalıştım sizin functionlar la fakat başaramadım nasıl yapabilirim ki önceki yıl 2012 yıl 2 nci ayı 29 çekiyor 2011 yılı ikinci ayı 28 çekiyor bunu nasıl başarabilirim.
 
Son düzenleme:
Eline sağlık kardeşim peki
burada şubat ayı 2011-02-28 iken atıyorum 2009 29 çekse bir önceki yıl denince son tarih otomatik olarak 2009-02-29 mu olur

2 nolu mesaj bu dediğinizi yapmıyor ama son gönderdiğim kodlar işinizi görecektir.
 
Ben yapamadım malesef çok uğraşmama rağmen yapmak istediğim şudur.
b3 hücresine ve b4 hücresine yazmış olduğum 01.02.2012 ve 29.02.2012 tarihini bir eksi yıl olarak nasıl alabilirim sonuç= 01.02.2011 ve 28.02.2011 şeklinde nasıl elde edebilirim. Sizin gönderdiğiniz kodla yazmış olduğum yıla ait olan ayın ilk ve son günü alıyor.
 
hamitcan kardeşim hala bulamadım nasıl yapıcağımı bu kadar uğraştık lütfen nasıl yapmam gerekiyor.
 
Kod:
Function ilkgün(tarih)
ilkgün = Format(DateSerial(Year(tarih) - 1, Month(tarih), 1), "dd/mm/yyyy")
End Function
Function songün(tarih)
songün = Format((DateSerial(Year(tarih) - 1, Month(tarih) + 1, 1)) - 1, "dd/mm/yyyy")
End Function
Sub IlkGun_SonGun()
MsgBox ilkgün([b3])
MsgBox songün([b4])
End Sub
 
Eline sağlık kardeşim ben denerken functionda başlığı değiştirdim ilkgün yazan değişkeni değiştirmemiştim sizde böyle doğrulayınca değişkenide başlıkla aynı yaptım ve sonucu elde ettim. Eline yüreğine sağlık.
 
Geri
Üst