İki tarih arasındaki gün sayısını bulmak

Katılım
1 Ağustos 2019
Mesajlar
839
Excel Vers. ve Dili
Türkçe excel 2016
İngilizce excel 2016
Altın Üyelik Bitiş Tarihi
19-10-2021
İyi akşamlar değerli arkadaşlar. Yapmak istediğim makro ile D ve E sütunlarında bulunan tarihleri birbirinden çıkartıp F sütununa farklı olanların karşısına 'FARKLI' yazıp G sütununa da sonuç olarak çıkan gün sayısını yazdırmak. Örnek dosyada örneği bulunmaktadır. Saygılar
 

Ekli dosyalar

Katılım
6 Mart 2005
Mesajlar
6,233
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Deneyiniz;
Kod:
Sub Gunfarklı()
Dim s1 As Worksheet: Dim i As Integer
Set s1 = Sheets("Sayfa1")
Application.ScreenUpdating = False
son = s1.Cells(65336, "D").End(3).Row
s1.Range("F2:G" & son).ClearContents
s1.Range("G2:G" & son).NumberFormat = "0"
For i = 2 To son
If s1.Range("D" & i) <> "" Then
s1.Range("G" & i).FormulaLocal = "=(E" & i & " - " & "D" & i & ")"
a = s1.Range("G" & i)
s1.Range("G" & i) = a
gunsayısı = a
If gunsayısı <> 0 Then
s1.Range("F" & i) = "FARKLI"
End If
End If
Next i
Application.ScreenUpdating = True
MsgBox "İşlem tamam."
     End Sub
 
Katılım
1 Ağustos 2019
Mesajlar
839
Excel Vers. ve Dili
Türkçe excel 2016
İngilizce excel 2016
Altın Üyelik Bitiş Tarihi
19-10-2021
Deneyiniz;
Kod:
Sub Gunfarklı()
Dim s1 As Worksheet: Dim i As Integer
Set s1 = Sheets("Sayfa1")
Application.ScreenUpdating = False
son = s1.Cells(65336, "D").End(3).Row
s1.Range("F2:G" & son).ClearContents
s1.Range("G2:G" & son).NumberFormat = "0"
For i = 2 To son
If s1.Range("D" & i) <> "" Then
s1.Range("G" & i).FormulaLocal = "=(E" & i & " - " & "D" & i & ")"
a = s1.Range("G" & i)
s1.Range("G" & i) = a
gunsayısı = a
If gunsayısı <> 0 Then
s1.Range("F" & i) = "FARKLI"
End If
End If
Next i
Application.ScreenUpdating = True
MsgBox "İşlem tamam."
     End Sub
Sayın çıtır verdiğiniz makroyu denedigimde ekteki dosyadaki sonucu aldim
 

Ekli dosyalar

Katılım
6 Mart 2005
Mesajlar
6,233
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Ben dosyada denediğimde dosyadaki sonuçu alıyorum.Sizde neden böyle bir sonuç olduğunu bilmiyorum.Forumda deneyen olursa lütfen hangi sonuçu aldığını yazsın.
 

Ekli dosyalar

Katılım
1 Ağustos 2019
Mesajlar
839
Excel Vers. ve Dili
Türkçe excel 2016
İngilizce excel 2016
Altın Üyelik Bitiş Tarihi
19-10-2021
Ben dosyada denediğimde dosyadaki sonuçu alıyorum.Sizde neden böyle bir sonuç olduğunu bilmiyorum.Forumda deneyen olursa lütfen hangi sonuçu aldığını yazsın.
Sorunu buldum sayın çıtır benim şirket bilgisayarındaki tarih ay gün yıl şeklinde buna mudahale edemiyorum değiştirmek için listedeki tarihlerde gün ay yıl olduğu için hata veriyor buna bir çözüm bulabilirmiyiz
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Sayın çıtır'ın makrosu istediğiniz sonucu buluyor.

Zaten makro basit bir hesaplama yapıyor. G2 hücresine =E2-D2 formülünü yazıp, aşağıya doğru kopyalarsanız, gün olarak aynı sonuçları alırsınız.

Şirketiniz bilgisayarında baz aldığınız tarihler gerçekten tarih ise görünümleri nasıl olursa olsun. Excel hesaplamayı düzgün yapar. Yani tarihlerin görünümleri nasıl biçimlendirilmiş olurlarsa olsunlar sonuç itibariyle 45402 gibi sayılardır. Ve Excel bunun üzerinden hesaplama yapar. O zaman şirket bilgisayarınızda gördüğünüz ay gün yıl şeklinde görülenler, tarih değildir. Bunu test etmek için tarih biçimlerini Genel yapın, bakalım ne olacak?

.


.
 
Katılım
30 Mart 2010
Mesajlar
240
Excel Vers. ve Dili
2007,2010,2013
Altın Üyelik Bitiş Tarihi
29-05-2021
Merhaba,

"D" ve "E" sütunuzundaki hücre formatları karmaşık bir yapıya sahip. İlgili sütunlara tarihlerinizi alırken kopyala/yapıştır yerine önce sütunlarınıza dilediğiniz türde tarih formatını tanımlayıp kopyala/özelyapıştır:değerler şeklinde bir yol izlemenizi tavsiye ederim.
Yalnızca geçerli sayfanız için geçici bir çözüm üretmeye çalıştım. Umarım sonuç alabilirsiniz.

Kod:
Sub gunFarki()
Dim yenitarih As String
    
    For i = 2 To Sheets(1).Range("D65500").End(3).Row
    char = Mid(Sheets(1).Range("D" & i), 2, 1)
        If char = "." Then
        yenitarih = "0" & Sheets(1).Range("D" & i)
        Else
        [yenitarih] = Sheets(1).Range("D" & i)
        End If
    tarih1 = Mid(yenitarih, 4, 2) & "." & Left(yenitarih, 2) & "." & Right(yenitarih, 4)
    tarih2 = Mid(Sheets(1).Range("E" & i), 4, 2) & "." & Left(Sheets(1).Range("E" & i), 2) & "." & Right(Sheets(1).Range("E" & i), 4)
    fark = tarih2 - tarih1
        If fark <> 0 Then
        Sheets(1).Range("F" & i).Value = "FARKLI"
        Else
        Sheets(1).Range("F" & i).Value = ""
        End If
    Next

End Sub
 

Ekli dosyalar

Katılım
1 Ağustos 2019
Mesajlar
839
Excel Vers. ve Dili
Türkçe excel 2016
İngilizce excel 2016
Altın Üyelik Bitiş Tarihi
19-10-2021
Merhaba,

"D" ve "E" sütunuzundaki hücre formatları karmaşık bir yapıya sahip. İlgili sütunlara tarihlerinizi alırken kopyala/yapıştır yerine önce sütunlarınıza dilediğiniz türde tarih formatını tanımlayıp kopyala/özelyapıştır:değerler şeklinde bir yol izlemenizi tavsiye ederim.
Yalnızca geçerli sayfanız için geçici bir çözüm üretmeye çalıştım. Umarım sonuç alabilirsiniz.

Kod:
Sub gunFarki()
Dim yenitarih As String
   
    For i = 2 To Sheets(1).Range("D65500").End(3).Row
    char = Mid(Sheets(1).Range("D" & i), 2, 1)
        If char = "." Then
        yenitarih = "0" & Sheets(1).Range("D" & i)
        Else
        [yenitarih] = Sheets(1).Range("D" & i)
        End If
    tarih1 = Mid(yenitarih, 4, 2) & "." & Left(yenitarih, 2) & "." & Right(yenitarih, 4)
    tarih2 = Mid(Sheets(1).Range("E" & i), 4, 2) & "." & Left(Sheets(1).Range("E" & i), 2) & "." & Right(Sheets(1).Range("E" & i), 4)
    fark = tarih2 - tarih1
        If fark <> 0 Then
        Sheets(1).Range("F" & i).Value = "FARKLI"
        Else
        Sheets(1).Range("F" & i).Value = ""
        End If
    Next

End Sub
Teşekkürler sayın ciccoz
 
Üst