• DİKKAT

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

macro ile tarih çıkarmak , istenilen formatta yazdırmak

mersilen

Destek Ekibi
Destek Ekibi
Katılım
31 Aralık 2009
Mesajlar
1,105
Excel Vers. ve Dili
excel 2007 türkçe
Excel Vers. ve Dili Ofis 2003
Selamlar
Webten gelen metin formatındaki tarihin formatını düzenlemeyi başardım
Tarihleri birbirinden formülle (=a20-a21) çıkarmakta ve biçim formatını (, [d], [n]) düzenlemekte sorun yok.Yalnız tüm işlemler formüllerle olduğundan fazladan yer tutmakta ve dinamik olmakta.
Benim istediğim bu işlemleri hücrelerde formül kullanmadan macro ile yapmak , birkaç uygun macro kodu buldum ve bunları uyarladım.Yinede hücreye başvurmadan doğrudan sonuç alınamıyor,örneğin x sabitini doğrudan 480 saniye olarak alabilir mi?

Sub cikar5()
Dim saat1 As Date, saat2 As Date, sonuc As Date
Range("A20") = "zaman20"
saat1 = Format(Range("A1").Value, "dd.mm.yyyy hh:mm")
Range("A20") = saat1


saat2 = Format(Range("a2").Value, "dd.mm.yyyy hh:mm")
Range("A21") = saat2

sonuc = saat1 - saat2
Range("A22") = "zaman22"

Range("a23").Value = sonuc

Range("A24") = "zaman24"

Range("a25").NumberFormat = ""
Range("a25") = Range("a23").Value

x = Format(sonuc, "")
Range("a26").Value = x

x = Format(sonuc, "[m]")
Range("a27").Value = x

x = Format(sonuc, "[h]")
Range("a27").Value = x

x = Format(sonuc, "[d]")
Range("a29").Value = x

MsgBox sonuc
End Sub
 

Ekli dosyalar

Kodlara kırmızı renkle yazdığım kısımları ilave etseniz?

Kod:
Sub cikar5()
Dim saat1 As Date, saat2 As Date, sonuc As Date
[COLOR=red][B]Dim x As Integer[/B][/COLOR]
[COLOR=red][B]x = 480
[/B][/COLOR]Range("A20") = "zaman20"
saat1 = Format(Range("A1").Value, "dd.mm.yyyy hh:mm")
Range("A20") = saat1
 
selam

yanlış anlattım sanırım
x sabiti derken sabit sayı değil
x=sonuç değerini kastettim
sonuc = saat1 - saat2

Range("a23").Value = sonuc


Range("a25").NumberFormat = ""
Range("a25") = Range("a23").Value

x = Format(sonuc, "")
Range("a26").Value = x




şöyle bir kod yazılabilir mi diye düşünüyorum?
sonuçta x değerini hücreye başvurmadan bulup formül içinde kullanacağım
.
.

sonuc = saat1 - saat2
'sonuc=480 saniye
x = Format(sonuc, "")
'x=480 saniye
Range("a26").Value = x * 100
.
.

 
Tekrar selamlar
tabloyu güncelledim
Macrodan istediğim sonucu alamıyorum?
Yardımcı olacaklara şimdiden teşekkürler
sonuç kısmının formatı genel veya sayı olabilir
B11=480
B12=4800

Sub cikar5()
Dim saat1 As Date, saat2 As Date, sonuc As Date, x As Integer

saat1 = Format(Range("A1").Value, "dd.mm.yyyy hh:mm")
saat2 = Format(Range("a2").Value, "dd.mm.yyyy hh:mm")
sonuc = saat1 - saat2

Range("A10").Value = sonuc
Range("A10").NumberFormat = ""

x = Range("A10").Value

Range("A11").Value = "X'in değeri"
Range("B11").Value2 = x

Range("C11").Value = x * 100

End Sub
 

Ekli dosyalar

Merhaba,

Ben dosyanızı açtım. Fakat A1 ve A2 hücrelerindeki değerleri makro ile alamadım. Verilerde bir problem var sanırım.
 
Herkese iyi bayramlar

Merhaba,

Ben dosyanızı açtım. Fakat A1 ve A2 hücrelerindeki değerleri makro ile alamadım. Verilerde bir problem var sanırım.
Korhan bey, 4 numaralı mesajdaki macro kodu çalışmakta, A1 ve A2 den de verileri almaktadır.Ben verileri web den unicode metin olarak almaktayım
25.08.2011 - 1:46
27.07.2011 - 17:47
Veriler başlangıçta bu şekilde gelmekte
Sn. Necdet Yeşertener yarımıyla onları tarih şekline çevirmeyi başardım
http://www.excel.web.tr/f14/unicode-metin-formatyny-zamana-cevirmek-t103969.html
Kullandığım macro ve sonuç ise
Range("A" & sat).Replace What:="-", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
27.08.2011 17:39
27.08.2011 19:10
Sorunu aslında anladım, kafamda kurguluyorum ama daha yapamıyorum !!
A1 ve A2 tarih ve formatıda "[n]" olduğu için formülün içine görünen saniye sonucunu (480) alamıyorum
formül olarak önce metne , sonra sayıya dönüştürülebiliyor
Kod:
=SAYIYAÇEVİR(METNEÇEVİR(A10;"[n]"))
Macrosuda
ActiveCell.FormulaR1C1 = "=VALUE(TEXT(R[-2]C[-4],""[n]""))"
worksheet functionla bu formülü X e atıyamadım,
x=VALUE(TEXT(Range("A10"),"[n]")) ....gibi
 
Tekrar selamlar
Kendimce birşeyler yaptım
sanırım doğru sonucuda döndürüyor
ama kodlar biraz karışık oldu
sadeleştirme yapılması gerekecek gibi...
Kod:
Sub cikar6()
Dim saat1 As Date, saat2 As Date, sonuc As Date
Range("A18:C35").ClearContents
Range("A18:C35").NumberFormat = "General"

saat1 = Format(Range("A2").Value, "dd.mm.yyyy hh:mm")
Range("A17") = "A2 hücresi değeri"
Range("B17") = saat1
saat2 = Format(Range("a3").Value, "dd.mm.yyyy hh:mm")
Range("A18") = "A3 hücresi değeri"
Range("B18") = saat1
sonuc = saat1 - saat2
Range("A19").Value = "sonuc değeri"
Range("B19").Value = sonuc

x = WorksheetFunction.Text(sonuc, "[s]")

Range("A21").Value = "X'in değeri iki tarih arası kaç saniye"
Range("B21").Value = x

Range("A22").Value = "Başlangıçtaki depodaki metal madeni miktarı"
Range("B22").Value = Range("AB2").Value

Range("A23").Value = "Saniyedeki metal üretim hızı"
Range("B23").Value = Range("AP2").Value

saat3 = Now()
Range("A24").Value = "Şimdi"
Range("B24").Value = saat3
Range("c24").Value = Format(saat3, "[s]")

Range("A25").Value = "Şu ana kadar geçen zaman saniye olarak "
saat4 = Now() - saat1
Range("B25").Value = saat4

saat4 = Format(saat4, "[s]")
Range("c25").Value = saat4

saat1 = Format(saat1, "[s]")
Range("B26").Value = saat1
saat5 = saat3 - saat1
Range("B27").Value = saat3 - saat1

Range("B28").Value = saat5

y = WorksheetFunction.Text(saat5, "[s]")
Range("A29").Value = "Şu ana kadar geçen zaman saniye olarak-kontrol"
Range("B29").Value = y

Range("A30").Value = "Şİmdi depodaki metal madeni miktarı"
Range("B30").Value = Range("AB2").Value + (y * Range("AP2").Value)
Range("B30").NumberFormat = "#,##0"
End Sub
 

Ekli dosyalar

Geri
Üst