Tarih Çıkarma - malatyalı - 25/03/2021
Es Selamün Aleyküm
İnşallah derdimi anlatabilirim. Bence biraz karışık. Şimdiden sürç-i lisan ettiysem affınıza sığınıyorum.
Excel sayfasının
başlama tarihi = C4:C25 arası
bitiş tarihi = D4: D25 arası
E sütununa İki tarih arası Gün farkını
F sütununa Gün sayısına göre Yıl
G sütununa Gün sayısına göre Ay
H sütununa Gün sayısına göre Gün sayılarını buluyorum.
Kod:
On Error Resume Next
If Not Intersect(Target, [C4:D20]) Is Nothing Then
sat = Target.Row
Cells(sat, "E") = Day(Cells(sat, "D")) + 30 * Month(Cells(sat, "D")) + 360 * Year(Cells(sat, "D")) - (Day(Cells(sat, "C")) + 30 * Month(Cells(sat, "C")) + 360 * Year(Cells(sat, "C")))
Cells(sat, "F") = Int(Cells(sat, "E") / 360)
Cells(sat, "G") = Int((Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360) / 30)
Cells(sat, "H") = Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360 - Int((Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360) / 30) * 30
Yapmaya çalışıp ama yapamadığım işlem ise:
Eğer E sütununda ki gün sayısı 720' den küçük ise I sütununa 720 yazacak
J sütununa 2 yıldan F sütununda ki yıl farkını alacak
K sütununa 2 yıldan G sütununda ki Ay farkını alacak
L sütununa 2 yıldan H sütununda ki Gün farkını alacak
Eğer E sütununda ki gün sayısı 720 => Büyük ise I sütununa 720' den fazla olan gün sayısını yazacak
J sütununa fazla olan gün sayısını yıla çevirecek
K sütununa fazla olan gün sayısını Aya çevirecek
L sütununa fazla olan gün sayısını Güne çevirecek
Umarım anlatabildim. Yardımcı olacak tüm üstad'larıma teşekkür ederim.
RE: Tarih Çıkarma - feraz - 26/03/2021
Aleyküm selam.Select Case Range("E" & Target.Row) ile end select arasındaki gibi olacak lakin ? yerler nasıl hesaplanacak bilmiyorum
On Error Resume Next
If Not Intersect(Target, [C420]) Is Nothing Then
sat = Target.Row
Cells(sat, "E") = Day(Cells(sat, "D")) + 30 * Month(Cells(sat, "D")) + 360 * Year(Cells(sat, "D")) - (Day(Cells(sat, "C")) + 30 * Month(Cells(sat, "C")) + 360 * Year(Cells(sat, "C")))
Cells(sat, "F") = Int(Cells(sat, "E") / 360)
Cells(sat, "G") = Int((Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360) / 30)
Cells(sat, "H") = Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360 - Int((Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360) / 30) * 30
Select Case Range("E" & sat)
Case Is < 720
Range("i" & sat) = 720
Range("j" & sat) = "?"
Range("k" & sat) = "?"
Range("L" & sat) = "?"
Case Is >= 720
Range("i" & sat) = "?"
Range("j" & sat) = "?"
Range("k" & sat) = "?"
Range("L" & sat) = "?"
End Select
End If
RE: Tarih Çıkarma - feraz - 26/03/2021
Doğru sonuç veriyormu emin değilim.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sat As Long
Dim fark As Double
Dim toplamgun As Double, yil As Integer, ay As Integer, gun As Double
Dim c_Hucre As Range, D_Hucre As Range
Const biryil As Integer = 360
Const ikiyil As Integer = biryil * 2
Const birAy As Byte = 30
On Error Resume Next
If Not Intersect(Target, [C420]) Is Nothing Then
sat = Target.Row
Set c_Hucre = Cells(sat, "C")
Set D_Hucre = Cells(sat, "D")
toplamgun = Day(D_Hucre) + birAy * Month(D_Hucre) + biryil * Year(D_Hucre) - (Day(c_Hucre) + birAy * Month(c_Hucre) + biryil * Year(c_Hucre))
yil = Int(toplamgun / biryil)
ay = Int((toplamgun - Int(toplamgun / biryil) * biryil) / birAy)
gun = toplamgun - Int(toplamgun / biryil) * biryil - Int((toplamgun - Int(toplamgun / biryil) * biryil) / birAy) * birAy
Range(Cells(sat, "E"), Cells(sat, Columns.Count)).ClearContents
Cells(sat, "E").Value = toplamgun
Cells(sat, "F").Value = yil
Cells(sat, "G").Value = ay
Cells(sat, "H").Value = gun
Select Case toplamgun
Case Is < ikiyil
fark = (ikiyil - toplamgun)
Range("i" & sat).Value = ikiyil
Range("j" & sat).Value = 2 - Range("f" & sat)
Range("k" & sat).Value = Int((fark - Int(fark / biryil) * biryil) / birAy)
Range("L" & sat).Value = fark - Int(fark / biryil) * biryil - Int((fark - Int(fark / biryil) * biryil) / birAy) * birAy
Case Is >= ikiyil
fark = (toplamgun - ikiyil)
Range("i" & sat).Value = fark
Range("j" & sat).Value = Int(fark / biryil)
Range("k" & sat).Value = Int((fark - Int(fark / biryil) * biryil) / birAy)
Range("L" & sat).Value = fark - Int(fark / biryil) * biryil - Int((fark - Int(fark / biryil) * biryil) / birAy) * birAy
End Select
End If
Set c_Hucre = Nothing
Set D_Hucre = Nothing
End Sub
RE: Tarih Çıkarma - malatyalı - 26/03/2021
Sayın Feraz;
OLMASI GEREKEN :
Başlama 09.09.2011
Bitiş 18.02.2013
Gün Farkı 519
Yıl : 1
Ay : 5
Gün : 9
720 Gün Olayı
2 Yıl, 0 Ay, 0 Gün
1 Yıl, 5 Ay, 9 Gün
-
-----------------------
0 Yıl, 6 Ay, 21 Gün
KOD İLE GERÇEKLEŞEN
720 Gün Olayı
2 Yıl, 0 Ay, 0 Gün
1 Yıl, 5 Ay, 9 Gün
-
-----------------------
1 Yıl, 6 Ay, 21 Gün olarak hesaplıyor.
Müsait olduğunuz bir zamanda düzeltme yapabilirseniz memnun olurum
Saygı ve hürmetlerimle
RE: Tarih Çıkarma - userx - 26/03/2021
Sayın malatyalı
alttaki kodu dener misiniz?
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Not Intersect(Target, [C420]) Is Nothing Then
sat = Target.Row
Cells(sat, "E") = Day(Cells(sat, "D")) + 30 * Month(Cells(sat, "D")) + 360 * Year(Cells(sat, "D")) - (Day(Cells(sat, "C")) + 30 * Month(Cells(sat, "C")) + 360 * Year(Cells(sat, "C")))
Cells(sat, "F") = Int(Cells(sat, "E") / 360)
Cells(sat, "G") = Int((Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360) / 30)
Cells(sat, "H") = Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360 - Int((Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360) / 30) * 30
Select Case Range("E" & sat)
Case Is < 720
Range("i" & sat) = 720
Range("j" & sat) = Int(2 - Cells(sat, "E") / 360)
Range("k" & sat) = Int(12 - (Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360) / 30)
Range("L" & sat) = 30 - Cells(sat, "H")
Case Is >= 720
Range("i" & sat) = Int((Cells(sat, "E") - 720))
Range("j" & sat) = Int((Cells(sat, "E") - 720) / 360)
Range("k" & sat) = Int((Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360) / 30)
Range("L" & sat) = Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360 - Int((Cells(sat, "E") - Int(Cells(sat, "E") / 360) * 360) / 30) * 30
End Select
End If
End Sub
RE: Tarih Çıkarma - berduş - 26/03/2021
Alıntı:Cells(sat, "E") = Day(Cells(sat, "D")) + 30 * Month(Cells(sat, "D")) + 360 * Year(Cells(sat, "D")) - (Day(Cells(sat, "C")) + 30 * Month(Cells(sat, "C")) + 360 * Year(Cells(sat, "C")))
burada kullandığınız gün hesabı hatalı değil mi sayın @malatyalı
|