Skip to main content

AccessTr.neT


Tarihe Ay Ekleme

tarkanaykın
tarkanaykın
7
416

Tarihe Ay Ekleme

Çözüldü #1
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ı?
Cevapla
#2
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
.rar 2020 YILI AÇIK İHALE KAYIT LİSTESİ - Kopya.rar (Dosya Boyutu: 28,85 KB | İndirme Sayısı: 3)
Cevapla
#3
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...
Cevapla
#4
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
Cevapla
#5
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")
Son Düzenleme: 27/05/2022, 01:02, Düzenleyen: mozuer.
Cevapla
#6
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.
Son Düzenleme: 27/05/2022, 01:13, Düzenleyen: tarkanaykın.
Cevapla

Bir hesap oluşturun veya yorum yapmak için giriş yapın

Yorum yapmak için üye olmanız gerekiyor

ya da