Makro ile çeşitli tarih formatlarını tek bir formata dönüştürmek

Katılım
29 Eylül 2017
Mesajlar
110
Excel Vers. ve Dili
professional_plus_2016 Türkçe
Altın Üyelik Bitiş Tarihi
24-06-2024
Selamlar;
Çeşitli firmalardan excel ortamında yüklü miktarlarda kantar tonaj rakamları gelmektedir. Her biri ayrı program kullandığından rapor çekerler iken (C) sütununda ki bozuk tarih örnekleri gibi değişik tarih formatı gelmektedir. Gelen tarih formatı her ne şekil olursa olsun, (I) sütunundaki format gibi olması gerekmektedir.
Kendi carimizde ektre çekerken tarih bozukluğu nedeniyle ürünlere ait bilgiler gelmediğinden hesabımız yanlış olmaktadır.
Tuş atayarak Makro yoluyla tarih formatını (I) sütunundaki gibi otomatik düzelttirmemiz mümkün mü? Mümkün ise bu konuda yardımlarınızı rica ederim. Teşekkür ederim... OKUROGLU3375
 

Ekli dosyalar

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Makrosuz dosya....

.
 

Ekli dosyalar

  • 12.1 KB Görüntüleme: 11
Katılım
29 Eylül 2017
Mesajlar
110
Excel Vers. ve Dili
professional_plus_2016 Türkçe
Altın Üyelik Bitiş Tarihi
24-06-2024
Haluk bey alakanıza teşekkür ederim... Bunu ayrı bir sayfada kullanarak mı devam edeyim, yoksa makrolaştırma imkanımız var mı. Çünkü esas çalışma dosyamda araya sütun açmak gibi bir şansım yok... Eğer ki mümkünü var ise makro olursa tarihi yapıştırdıktan sonra düzelt tuşuna basmam yeterli olacaktır diye düşünüyorum. Tabiki imkanı varya. Yoksa bunu başka bir excel sayfasında kullanarak tarihi yapıştırıp, düzeltilmiş sütunu tekrar kopyalayıp esas sayfaya yapıştırmam gerekiyor. Yardımlarınız için yinede teşekkür ederim.. OKUROGLU3375
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Aşağıdaki gibi deneyiniz.
Kod:
Sub tarihleri_düzelt()
[c10:c13].NumberFormat = "m/d/yyyy"
[c10:c13].Replace ",", "."
End Sub
 
Katılım
29 Eylül 2017
Mesajlar
110
Excel Vers. ve Dili
professional_plus_2016 Türkçe
Altın Üyelik Bitiş Tarihi
24-06-2024
Seyit bey tşk... arada slaş olanlarda aktif olmuyor... Bakma şansınız var ise rakamlar arasında hangi işaret olursa olsun örnek tarihe çevirttire bilirmiyiz. ÖRNEK: 15.04.2021
 

Seyit Tiken

Uzman
Uzman
Katılım
23 Ağustos 2005
Mesajlar
4,651
Excel Vers. ve Dili
Excel : 2010
Dosyanızda denedim oldu, örnek dosya yükleyip bakalım.
 
Katılım
29 Eylül 2017
Mesajlar
110
Excel Vers. ve Dili
professional_plus_2016 Türkçe
Altın Üyelik Bitiş Tarihi
24-06-2024
Seyit bey; yeni örnek dosya ekledim... Uygulama öncesi - uygulama - olması gereken tarih örnekleri verilmiştir.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Deneyin lütfen
C++:
Sub tarihleri_düzelt()
Dim Rng As Range
Set Alan = [B6:B20]
For Each Rng In Alan
    Rng = Replace(Rng, ",", ".")
    Rng = Replace(Rng, " /", ".")
    Rng = Format(Rng, "d.mm.yyyy")
Next Rng
End Sub
 
Katılım
29 Eylül 2017
Mesajlar
110
Excel Vers. ve Dili
professional_plus_2016 Türkçe
Altın Üyelik Bitiş Tarihi
24-06-2024
Deneyin lütfen
C++:
Sub tarihleri_düzelt()
Dim Rng As Range
Set Alan = [B6:B20]
For Each Rng In Alan
    Rng = Replace(Rng, ",", ".")
    Rng = Replace(Rng, " /", ".")
    Rng = Format(Rng, "d.mm.yyyy")
Next Rng
End Sub
Alakanıza teşekkürler.
Esas dosya üzerinde uyguladığımda, düzeltmeler tamam. Ekli resimde de görüldüğü gibi tarihe dahil olmuyor maalesef
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Verdğiniz ilk dosyada 4/9/10 nisan tarihleri var.
Resimde de dahil görülüyor
Ben sorununuzu anlamadım.
 
Katılım
29 Eylül 2017
Mesajlar
110
Excel Vers. ve Dili
professional_plus_2016 Türkçe
Altın Üyelik Bitiş Tarihi
24-06-2024
Verdğiniz ilk dosyada 4/9/10 nisan tarihleri var.
Resimde de dahil görülüyor
Ben sorununuzu anlamadım.
Sub tarihleri_düzelt()
Dim Rng As Range
Set Alan = [B6:B20]
For Each Rng In Alan
Rng = Replace(Rng, ",", ".")
Rng = Replace(Rng, " /", ".")
Rng = Format(Rng, "d.mm.yyyy")
Next Rng
End Sub

Yukarıdaki makroyu uyguladıktan sonra tarih biçimine dönüştürmede sıkıntı yok fakat. Excel ekli resimde de görüldüğü gibi Örneğin OCAK-ŞUBAT ayları gibi ayların içerine almayıp hariç tuttuğundan... yani tarih olarak görmediğinden dolayı rapor oluştururken dışarıda kalan tarihlerin raporunu getirmiyor.
 

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
Demek istediği, eğer tarih verisi olsaydı o tarihler de aynı üstteki gibi yıllarına göre filtrelenebilir şekilde olurdu. O veriler tarih değiller.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Böyle bir denermisiniz.
C++:
Sub tarihleri_düzelt()
Dim Rng As Range
Set Alan = [B6:B20] ' Alan kısmını kendinize göre uyarlayınız.
For Each Rng In Alan
    If Not IsDate(Rng) Then
    Rng = Replace(Rng, ",", ".")
    Rng = Replace(Rng, " /", ".")
    x1 = InStr(1, Rng, ".")
    x2 = InStr(x1 + 1, Rng, ".")
    myDay = Left(Rng, x1 - 1) * 1
    myMonth = Mid(Rng, x1 + 1, x2 - x1 - 1) * 1
    myYear = Right(Rng, Len(Rng) - x2) * 1
    Rng = DateSerial(myYear, myMonth, myDay)
    End If
    Rng = Format(Rng, "d.mm.yyyy")
Next Rng
End Sub
 
Katılım
29 Eylül 2017
Mesajlar
110
Excel Vers. ve Dili
professional_plus_2016 Türkçe
Altın Üyelik Bitiş Tarihi
24-06-2024
Böyle bir denermisiniz.
C++:
Sub tarihleri_düzelt()
Dim Rng As Range
Set Alan = [B6:B20] ' Alan kısmını kendinize göre uyarlayınız.
For Each Rng In Alan
    If Not IsDate(Rng) Then
    Rng = Replace(Rng, ",", ".")
    Rng = Replace(Rng, " /", ".")
    x1 = InStr(1, Rng, ".")
    x2 = InStr(x1 + 1, Rng, ".")
    myDay = Left(Rng, x1 - 1) * 1
    myMonth = Mid(Rng, x1 + 1, x2 - x1 - 1) * 1
    myYear = Right(Rng, Len(Rng) - x2) * 1
    Rng = DateSerial(myYear, myMonth, myDay)
    End If
    Rng = Format(Rng, "d.mm.yyyy")
Next Rng
End Sub

Makroyu uyguladıktan sonra incelediğimde yine aynı sonucu vermektedir. fakat örnek olarak sadece 10.04.2021 tarihlerini F2 + Enter dedikten sonra ilgili tarihin yılına ve ayına atmıştır. Yani tarihe dönüştürme formatında sıkıntı yok ama excel tarih olarak görmüyor. F2+Enter gibi bir olay mı eklenmesi lazım acaba... Tşk.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Asıl dosyanızı sadece tarihleri içerecek şekilde ekler misiniz?
Ben örnek dosyada sorun göremedim.
 
Katılım
29 Eylül 2017
Mesajlar
110
Excel Vers. ve Dili
professional_plus_2016 Türkçe
Altın Üyelik Bitiş Tarihi
24-06-2024
Asıl dosyanızı sadece tarihleri içerecek şekilde ekler misiniz?
Ben örnek dosyada sorun göremedim.
Dosya ya makro uygulamadan önce tarih filtresinde bakabilirmisiniz. Sonra makro uygulayıp yina bakın.. Makro uygulanan tarihler yıl-ay filtresi içerisine dahil olmuyor. Demek istedim.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Dosyanızda tarihlerin olduğu C sütunuzun formatını ya da tarihlerin olduğu aralığın formatını tarih yapın
C#:
Sub tarihleri_düzelt001()
Dim Rng As Range
Set Alan = [C6:C100] ' Alan kısmını kendinize göre uyarlayınız.
For Each Rng In Alan
    If Not IsDate(Rng) Then
    Rng = Replace(Rng, ",", ".")
    Rng = Replace(Rng, " /", ".")
    x1 = InStr(1, Rng, ".")
    x2 = InStr(x1 + 1, Rng, ".")
    myDay = Left(Rng, x1 - 1) * 1
    myMonth = Mid(Rng, x1 + 1, x2 - x1 - 1) * 1
    myYear = Right(Rng, Len(Rng) - x2) * 1
    Else
    myDay = Day(Rng)
    myMonth = Month(Rng)
    myYear = Year(Rng)
    End If
    Rng = DateSerial(myYear, myMonth, myDay)
Next Rng
End Sub
 

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Alternatif;

.
 

Ekli dosyalar

Haluk

Özel Üye
Katılım
7 Temmuz 2004
Mesajlar
12,406
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Altın Üyelik Bitiş Tarihi
Tekrar deneyin...

.
 
Üst