AccessTr.neT
Tarihe Ay Ekleme - Baskı Önizleme

+- AccessTr.neT (https://accesstr.net)
+-- Forum: Microsoft Excel (https://accesstr.net/forum-microsoft-excel.html)
+--- Forum: Excel Cevaplanmış Soruları (https://accesstr.net/forum-excel-cevaplanmis-sorulari.html)
+--- Konu Başlığı: Tarihe Ay Ekleme (/konu-tarihe-ay-ekleme.html)

Sayfalar: 1 2


Tarihe Ay Ekleme - tarkanaykın - 26/05/2022

merhaba arkadaşlar, tarihe sayı formatında ay eklemeyi öğrendim ama benim durumum biraz daha karışık; bende bir tarih sütunu, bir de bu tarihten itibaren ki süreyi belirten ifadeler var ve o sütunda "5 ay", "10 gün" " 8 ay", "2 yıl" ... gibi yazılar var. Amacım tarih sütununa bu ifadeleri eklemek, çıkan sonucu bir sonraki sütuna yazdırmak. eğer ki sadece "5" gibi bir ifadeyse işim kolay, ama "5 ay" gibi olursa işin içine string de girdiğinden işim zor, bunu left fonksiyonuyla yapmaya çalışsam olur da o da tam iş görmez diye düşünüyorum, acaba bir ifadedeki string ile sayıyı ayıran bir fonksiyon var mı?


RE: Tarihe Ay Ekleme - tarkanaykın - 27/05/2022

bi yerden sadece sayıyı ayıran bir makro buldum ve ben de aynı anda metni de ayıracak şekilde revize etmeye çalıştım ama hiç çalışma belirtisi göstermiyor, hata bile vermiyor, bi bakabilir misiniz? teşekkürler. Dosyam ekte...


Sub Düğme1_Tıklat()

Dim metin As String

Dim nums As String

For i = 4 To Cells(65536, 12).End(xlUp).Row
For b = 1 To Len(Cells(i, 12))
If IsNumeric(Mid(Cells(i, 12), b, 1)) = True Then
nums = nums & Mid(Cells(i, 12), b, 1)
Else
metin = metin & Mid(Cells(i, 12), b, 1)

End If
Next b
If metin = "AY" Then
Cells(i, 13).Valuıe = DateAdd("m", nums, Cells(i, 9).Value)
Else
End If
If metin = "GÜN" Then
Cells(i, 13).Valuıe = DateAdd("d", nums, Cells(i, 9).Value)
Else
End If
If metin = "YIL" Then
Cells(i, 13).Valuıe = DateAdd("y", nums, Cells(i, 9).Value)
Else
End If
nums = ""
metin = ""
Next i

End Sub


RE: Tarihe Ay Ekleme - mozuer - 27/05/2022

Function fGetDate(pStrVal As String, pDateVal As Variant)

On Error Resume Next

Dim i As Integer, xLen As Integer
Dim xStr As String, xText As String, xNum As String, xDate As String

fGetDate = vbNullString
xNum = vbNullString
xText = vbNullString
xLen = Len(pStrVal)

For i = 1 To xLen
xStr = Mid(pStrVal, i, 1)
If IsNumeric(xStr) Then
xNum = xNum + xStr
Else
xText = xText + xStr
End If
Next

xText = Trim(xText)

Select Case xText
Case "gün", "Gün", "GÜN"
xDate = "d"
Case "hafta", "Hafta", "HAFTA"
xDate = "ww"
Case "ay", "Ay", "AY"
xDate = "m"
Case "yıl", "Yıl", "YIL"
xDate = "yyyy"
End Select

fGetDate = DateAdd(xDate, CInt(xNum), pDateVal)

End Function

Örneğin;
A1 hücresi 5 gün olsun
B1 hücresi 27.05.2022 olsun
C1 hücresine = fGetDate(A1;B1)
yazıp dener misiniz
istediğinizi karşılayabilir...


RE: Tarihe Ay Ekleme - tarkanaykın - 27/05/2022

sayın mozuer, ilgilendiğiniz için çok teşekkür ederim, dediğinizi yaptım ve şöyle bir sayı yazıldı c1 hücresine: 44713


RE: Tarihe Ay Ekleme - mozuer - 27/05/2022

Tarihi yazdıracağınız hücre formatı Kısa Tarih biçiminde olsun
Ya da son satırı şu şekilde yazın
fGetDate = Format(DateAdd(xDate, CInt(xNum), pDateVal), "Short Date")


RE: Tarihe Ay Ekleme - tarkanaykın - 27/05/2022

tabi ya onu akıl edemedim çok teşekkür ederim, süper oldu yarın çok işime yarayacak, çok teşekkürler, iyi geceler olsun, kolay gelsin Img-grin
yalnız benim anlamadığım bir şey var benim bulduğum kod neden ne hata verdi ve neden çalışmadı acaba çok merak ediyorum, mantıklı bir dizge ama anlamadım bir türlü, neyse.