• DİKKAT

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

İ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
İ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

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
 
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

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

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
 
.

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?

.


.
 
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

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
 
Geri
Üst