• DİKKAT

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

Tek Hucrede Tarih, Sayi ve Metin Girmek-SIMDI() sabitlemek

Katılım
21 Kasım 2012
Mesajlar
172
Excel Vers. ve Dili
2013 - TR & EN
Merhabalar, benim icinden cikamadigim ve sitede arattiysam da bulamadigim (belki ben bulamadim), eger sorulduysa onceden ozurdilerim tekrar konu acip kalabalik yaratmis olduysam. Sorum kisaca su: herhangi bir hucrede SIMDI() ve herhangi secilen bir tarihin arasindaki gun farkini hucreye sayi olarak yazdirip yanina metin ve SIMDI() fonsiyonunun karsiligi ne ise yazdirilabilir mi ayni hucrede ?

ORNEK: SIMDI() fonsiyonunu farzedelim ki PCDE suan 12.06.2015 olsun. Kafama gore sectigim manuel girdigim baska herhangi bir tarih ise 08.06.2015 olsun. ben hucreye sunu nasil yazdirabilirim:
12.06.2015 (4 Days)
 
Son düzenleme:
Merhaba,

08.06.2015 olan değeri A1 den aldığı düşünüldü.

Kod:
=METNEÇEVİR(BUGÜN();"gg.aa.yyyy")&" (" &BUGÜN()-A1 &" Days)"

.
 
Omer cok tesekkur ederim, bu ise yaradi, sonuc aldim FAKAT bugun() fonksiyonunu yazarsam bu deger her gun degisecek. Bu nedenle SIMDI() fonksiyonu ile yapip o gunun degeri ile islem yaparak cikan sonuc her gun degismesin istiyorum.. bu mumkun mu paylastigin formul ile? cunku ben bir denedim ve garipuzun bir sayi verdi yine
 
Her iki fonksiyonda kendini günceller. Aralarındaki fark; bugün, günün tarihini verir. Şimdi ise güncel zamanı(saat dahil) verir. Değişmemesi için makro kullanmanız gerekir.
 
I cikan garip sayi sorununu su sekilde hallettim sanirim, (biraz kopya aldim senin yazdigindan) :),
=METNEÇEVİR(BUGÜN();"gg.aa.yyyy")&" (" &METNECEVIR(BUGÜN()-A1,0) &" Days)"

simdi bu formul calissa da simdi() islevini sabitlemenin tek yolu makro diyorsun :(. makroya bir turlu isinamadim. simdi makro ile nasil yapabiliriz desem de kesin koymak istemicem agir calisiyor makro koyunca bende :(. formul ile ifadesi yok mudur onu sabitlemek icin.?
 
Formüller kendini yenileyeceği için yapamazsınız. Formül hesaplamayı "el ile" yapsanız bile, açılış ve kapanışta formül kendini yeniler.

Makro kullanmanız gerekir. Sorunuzu destekleyen küçük bir örnek çalışma eklerseniz çözüm üretebiliriz. Ayrıca makro düşündüğünüz gibi dosyanızı kasmaz.

.
 
Dosyayı eklemişsiniz, fakat açıklamalarınızı tam olarak anlayamadım. Konuya hakim olmadığımı varsayarak açıklama yapmanızı rica ederim. Dosyanızda şidmi() yada bugün() fonksiyonunu da göremedim. Direk sonuçları yazmışsınız.
 
İlk mesajınızdaki açıklamalarınıza göre aşağıdaki kodu kullanabilirsiniz.

Kodu çalışmanızın ThisWorkbook bölümüne uygulayınız.

Kodu uyguladıktan sonra dosyanızı makro içeren dosya formatında kaydedin. Sonra kapatıp açın. Açılışta kodlar otomatik çalışacaktır.

Kod:
Private Sub Workbook_Open()
    With Sheets("Sayfa1")
        .Range("B2:B" & .Rows.Count).ClearContents
        For X = 2 To .Cells(.Rows.Count, 1).End(3).Row
            If .Cells(X, 1) <> "" Then
                If IsDate(.Cells(X, 1)) Then
                    .Cells(X, 2) = Format(Date, "mm.dd.yyyy") & " (" & Format(Format(Date, "mm.dd.yyyy") - .Cells(X, 1), "d") & " Day)"
                End If
            End If
        Next
    End With
End Sub
 
Omer merhaba, aslinda verdigim tablo tam olarak hangi fonksiyon veya islev ile gerceklestirilecegini bilemedigim icin direkt istedigim sonuclari verdim ve o sekilde aciklama yazdim altina . en basit sekliyle anlatacak olursam , tabloda manuel yazilan her tarihin karsisindaki satira o tarih ile gercek PCde yazan tarih arasindaki farki , manual girilen tarih ile birlikte yazdirmak. mesela bugun gunlerden 12 haziran . manual girdigim tarih 11 haziran olsun. bana manual girdigim 11 haziran yazan hucrenin karsisindaki hucrede soyle yazacak> 11.06.2015 (1 day) . burada 1 12 haziran ile 11 haziran arasindaki gun farki...
 
Merhab ben excel 2003 kullaniyorum ve acikcasi nereye uygulayacagimi anlayamadim tam. burada ben gelistirici kisminda kod goruntulede this work book demissiniz ve gordum onu ve direkt ekleyip calistira tikladim.. simdi bu kod hangi hucreleri kapsayarak calisiyor olacak ? tam anlayamadim :( makroya gercekten cok yabanciyim fakat sadece bu kodu nereye koyacagimi ve hangi hucrelere data girdigimde calisacagini bilsem yeterli
 
Merhaba,

2003 versiyon kullanıyorum demişsiniz fakat hem profilinizde 2010 yazıyor hem de eklediğiniz dosya "xlsx" uzantılı. Bu durumda bir çelişki var. Bunu düzeltmenizde fayda var.

İkinci olarak ben eklediğiniz dosyadaki toplu verileri bu şekilde düzenlemek istediğinizi düşünerek dosya açılışnda çalışacak şekilde bir kod önermiştim.

Son mesajınızdan anladığım kadarıyla siz A sütunundaki hücrelere veri girdiğinizde yandaki sütuna istediğiniz şekilde hesaplama yaparak yazılmasını istiyorsunuz.

Bu durumda önceki mesajımda önerdiğim kodu eğer dosyanıza uyguladıysanız bu kodu dosyanızdan silmeniz gerekiyor.

Sildikten sonra aşağıdaki kodu Sayfa1 isimli sayfanızın kod bölümüne uygulayınız.

A sütununa belirttiğiniz formatta tarih girdiğinizde hesaplama otomatik yapılıp B sütunundaki ilgili hücreye yazılacaktır.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Son
    If Intersect(Target, Range("A2:A" & Rows.Count)) Is Nothing Then Exit Sub
    If Target <> "" Then
        If IsDate(Target) Then
            Target.Offset(0, 1) = Format(CDate(Target), "mm.dd.yyyy") & " (" & Date - Target & " Day)"
        End If
    End If
Son:
End Sub

Ayrıca her ihtimale karşı dosyanızıda ekliyorum.

Örnek Dosya
 
Merhan Korhan Bey, ben sanirim yanlis bakmisim. 1997-2003 donusturucuyu gorup 2003 demisim fakat 2007 kullaniyorum.. En son paylastiginiz kodu uygulamadan once eklediginiz ornek dosyayi indirdigimde xlsm dosya resminin uzerinde unlem isareti goruyorum ? bu kesinlikle benden kaynakli bir durum fakat bunun sebebi ne olabilir? bu konumda soru tamamen degisti ve eminim kod calisiyordur fakat bu unlem isaretini kaldirmak icin oneriniz var mi ? ictenlikle, cok tesekkur ederim yardimlariniz icin.
 
Eklediğim dosyayı açıp farklı kaydet yaparak 2003 formatında kaydederseniz ünlem işareti kalkacaktır.

Ayrıca son mesajınızda 2007 kullandığınızı belirtmişsiniz fakat profilinizde 2010 yazıyor. Bu bilgiyi güncellemenizde fayda var.
 
Korhan bey evet aynen dediginiz gibi yaptim oldu. ufak bir de bakindim bu sitede bu soru sorulmus ve 2007 ve sonrasinda boyle bir durum varmis.. Tum sorunum cozulmus oldu. kullandigim excel formatini 2007 olarak guncelledim.
Simdi son paylastiginiz kodun oldugu ornek dosyada A1 sutununda yazilan tarihler elle girilen tarihler. Orada zaten sikinti yok. B Sutununda ise parantez icinde kac gun oldugunu soyleyen kisim bugunun tarihi ile A sutunundaki yazan tarih arasindaki gun farki. Orada da sikini yok. Tek sikinti su; gun farkinin parantez icinde yazili oldugu B sutunundaki satirlarda yazan tarihlerin A sutununda yazan tarih ile ayni DEGIL; bugunun tarihini yazmasini ve yarin actigimda degismeden kalmasini istiyorum aslinda.. yani a sutununa kafamdan bir tarih girdigim anda bana b sutununda o gunun gercek tarihi ile o gercek ve kafamdan atarak girdigim tarih arasindaki gun farkini parantez icinde yazmis olacak.. cok karistirmadim umarim :)). yardimlariniz icin tekrardan tesekkur ederim...
 
Son düzenleme:
Cevabımı 10 nolu mesajınıza göre vermiştim. Son mesajınızda farklı yorum yapıyorsunuz.

A2 hücresine 06.10.2015 yazdığınızı varsayalım. (Ay.Gün.Yıl)

B2 hücresinde görmek istediğiniz sonuç nedir?
 
bugunun tarihi A2 hucresinde elle yazdigim tarihten buyuk oldugunda >>> B2 hucresinde gormek istedigim ise bugunun tarihi olan 06.15.2015 (5 Days Late)

bugunun tarihi A2 hucresinde elle yazdigim tarihten kucuk oldugunda ornegin A2 hucresine 06/20/2015 yazdigimda >>> B2 hucresinde gormek istedigim ise bugunun tarihi olan 06.15.2015 (5 Days Early)
 
Aşağıdaki kodu deneyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Son
    If Intersect(Target, Range("A2:A" & Rows.Count)) Is Nothing Then Exit Sub
    If Target <> "" Then
        If IsDate(Target) Then
            If Date > Target Then
                Target.Offset(0, 1) = Format(CDate(Date), "mm.dd.yyyy") & " (" & Date - Target & " Days Late)"
            ElseIf Date < Target Then
                Target.Offset(0, 1) = Format(CDate(Date), "mm.dd.yyyy") & " (" & Target - Date & " Days Early)"
            Else
                Target.Offset(0, 1) = Format(CDate(Date), "mm.dd.yyyy") & " (On Time)"
            End If
        End If
    End If
Son:
End Sub
 
Problemim cozuldu. Karisik anlattigim icin ozurdilerim. ve ilgi gosterip zaman ayirdigin icin de ayrica tekrardan tesekkur ederim Korhan bey..
 
Geri
Üst