1 sayfadan 1. sayfa

Makro da modun karşılığı ne

İletiTarih: 01 Ağu 2019 13:24
gamisaga
Merhaba,

Yapmak istediğim şey makroda A hücresindeki saatlerden 3 saat çıkarmak. Normalde Excel üzerinde

Kod: Tümünü seç
Mod(A1-B1;1)


işimi görüyor ama bu kodu macro ile nasıl düzenleyebilirim.

Gece 02:00 den 3 saat çıkarmak istediğimde sonuc olarak 23:00 saatini bulmak istiyorum. Normalde negatif sayı olmayacağı için hata veriyor.

Cevap: Makro da modun karşılığı ne

İletiTarih: 01 Ağu 2019 16:21
muratboz06
Eki inceleyiniz.
Formül ile yapılmıştır.

Cevap: Makro da modun karşılığı ne

İletiTarih: 01 Ağu 2019 16:31
muratboz06
Düzeltme yapılmıştır.

Cevap: Cevap: Makro da modun karşılığı ne

İletiTarih: 01 Ağu 2019 18:34
gamisaga
muratboz06 yazdı:Düzeltme yapılmıştır.


Cevap ve ilgin icin tesekkur ederim, aslinda ben bunu makroda yapmak istiyorum.

Sikintim orda basliyor. saatlerimde saniye yok ve hep saat cikarticam.

Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 03:53
gamisaga
:geek: bunu yapamaz miyiz ki ?

yada formulu hucre icine yazdirabilir miyim ?

Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 05:17
hasan14
Aşağıdaki şekilde deneyiniz.
Döngü kurarak
Kod: Tümünü seç
Sheets("Sayfa1").Cells(i, 3) = WorksheetFunction.Text(Sheets("Sayfa1").Cells(i, 2) - Sheets("Sayfa1").Cells(i, 1), "[hh]:mm")

Mod yazımı (Doğru sonuç bulamadım.Bulursanız lütfen yazınız.)
Kod: Tümünü seç
Sheets("Sayfa1").Cells(i, 3) = (Sheets("Sayfa1").Cells(i, 1) - Sheets("Sayfa1").Cells(i, 2) Mod 1)

Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 08:02
muratboz06
Size göndermiş olduğumu excel dosyasında A sütununa saat bilgilerinizi kopyalayınız, B2 den aşağıya doğru formülleri de kopyalarsanız girmiş olduğunuz saatlerden 3 saat çıkartmış olur. B sütunundaki saatleri istediğiniz yere taşıyabilirsiniz.
Bütün saat hücrelerini seçerek Hücre Biçimlendirmeden Saati seçiniz, saat formatını da saat:dakika olacak şekilde seçiniz.

Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 08:15
Ali ÖZ
Alternatif.

Kod: Tümünü seç
Private Sub CommandButton1_Click()
    On Error Resume Next
    saatfark = Split(Format(Range("a1").Value, "hh:mm"), ":")(0) - Split(Format(Range("b1").Value, "hh:mm"), ":")(0)
    dakikafark = Split(Format(Range("a1").Value, "hh:mm"), ":")(1) - Split(Format(Range("b1").Value, "hh:mm"), ":")(1)
    Range("c1").Value = Format(saatfark & ":" & dakikafark, "hh:mm")
    If Split(Format(Range("b1").Value, "hh:mm"), ":")(0) > Split(Format(Range("a1").Value, "hh:mm"), ":")(0) Then
      Range("c1").Value = Format(saatfark + 24 & ":" & dakikafark, "hh:mm")
    End If
End Sub

Cevap: Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 13:07
gamisaga
hasan14 yazdı:Aşağıdaki şekilde deneyiniz.
Döngü kurarak
Kod: Tümünü seç
Sheets("Sayfa1").Cells(i, 3) = WorksheetFunction.Text(Sheets("Sayfa1").Cells(i, 2) - Sheets("Sayfa1").Cells(i, 1), "[hh]:mm")

Mod yazımı (Doğru sonuç bulamadım.Bulursanız lütfen yazınız.)
Kod: Tümünü seç
Sheets("Sayfa1").Cells(i, 3) = (Sheets("Sayfa1").Cells(i, 1) - Sheets("Sayfa1").Cells(i, 2) Mod 1)


Maalesef istediğim sonucu alamadım :( hata alıyorum yada saat eksilmiyor.

Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 13:15
hasan14
Sanırım sizde sadece saat yazılı,saat ve tarih yazılı ise örnek dosya

Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 13:48
ahmetonline
ilk 100 satır için yaptım ama saati 00:00 yerine 24:00 yazarsan sıkıntı olmuyor.
a hücresindeki saat örnegin 11:00 şekine b hücresindeki saati 3:00 gibi yazman gerekli
Kod: Tümünü seç
Sub SAAT()
For İ = 1 To 100
A = A + 1
B = B + 1
C = C + 1
Selection.NumberFormat = "h:mm"
Cells(A, 3) = Cells(B, 1).Value - Cells(C, 2).Value
Next
End Sub

Cevap: Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 13:57
gamisaga
Ali ÖZ yazdı:Alternatif.

Kod: Tümünü seç
Private Sub CommandButton1_Click()
    On Error Resume Next
    saatfark = Split(Format(Range("a1").Value, "hh:mm"), ":")(0) - Split(Format(Range("b1").Value, "hh:mm"), ":")(0)
    dakikafark = Split(Format(Range("a1").Value, "hh:mm"), ":")(1) - Split(Format(Range("b1").Value, "hh:mm"), ":")(1)
    Range("c1").Value = Format(saatfark & ":" & dakikafark, "hh:mm")
    If Split(Format(Range("b1").Value, "hh:mm"), ":")(0) > Split(Format(Range("a1").Value, "hh:mm"), ":")(0) Then
      Range("c1").Value = Format(saatfark + 24 & ":" & dakikafark, "hh:mm")
    End If
End Sub


Ali bey Saat olarak kodunuzu düzenlediğimde sonuç alabiliyorum ama bazı yerlerde şimdi 45 dk çıkarmam gerekti ve ozaman kod maalesef olmuyor :(

Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 14:02
hasan14
Tarih yazılı değil saat yazılı ise deneyiniz.
Kod: Tümünü seç
Sub gece()
Dim s1 As Worksheet: Dim i As Integer: Dim son As Integer
Set s1 = Sheets("Sayfa1")
son = s1.Cells(65355, "A").End(3).Row
For i = 2 To son
If s1.Cells(i, 2) < s1.Cells(i, 1) Then
s1.Cells(i, 3) = WorksheetFunction.Text((s1.Cells(i, 2) - s1.Cells(i, 1) + 1), "[hh]:mm")
Else
s1.Cells(i, 3) = WorksheetFunction.Text((s1.Cells(i, 2) - s1.Cells(i, 1)), "[hh]:mm")
End If
Next i
End Sub

Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 14:23
hasan14
Uygulama sonucu

Cevap: Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 14:46
gamisaga
hasan14 yazdı:Sanırım sizde sadece saat yazılı,saat ve tarih yazılı ise örnek dosya


Hocam örneğiniz ve yardımlarınız için teşekkür ederim. Sizin kodunuz iki tarih saat arasındaki saat farkını veriyor. Ben ise Değişken bir saat diliminden 3 saat 2 saat 45dk veya 30 dk gibi çıkarma işlemi yapmak istiyorum.

yani örneğin yapmak istediğim şey

Örneğin Uçağın kalkış Saati 00:20
Yolcunun 3 saat evvel gelmesi için gelmesi gereken zaman 21:20
Son artık kapı kapanması için gereken zaman 23:35

olacak şekilde yapmak istiyorum.

Cevap: Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 15:05
gamisaga
ahmetonline yazdı:ilk 100 satır için yaptım ama saati 00:00 yerine 24:00 yazarsan sıkıntı olmuyor.
a hücresindeki saat örnegin 11:00 şekine b hücresindeki saati 3:00 gibi yazman gerekli
Kod: Tümünü seç
Sub SAAT()
For İ = 1 To 100
A = A + 1
B = B + 1
C = C + 1
Selection.NumberFormat = "h:mm"
Cells(A, 3) = Cells(B, 1).Value - Cells(C, 2).Value
Next
End Sub


Bir türlü istediğim şekle uyarlayamadım :( Bu arada ilgi gösterip cevap yazdığınız için teşekkür ederim

Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 15:25
hasan14
Aşağıdaki uygulamayı deneyiniz.
Kod: Tümünü seç
Sub gece2()
Dim s1 As Worksheet: Dim i As Integer: Dim son As Integer
Set s1 = Sheets("Sayfa1")
son = s1.Cells(65355, "A").End(3).Row
For i = 2 To son
If s1.Cells(i, 2) > s1.Cells(i, 1) Then
saat = (s1.Cells(i, 1) + 1) * 24 - s1.Cells(i, 2) * 24
s1.Cells(i, 3) = WorksheetFunction.Text(saat / 24, "[hh]:mm")
Else
saat = s1.Cells(i, 1) * 24 - 12.Cells(i, 2) * 24
s1.Cells(i, 3) = WorksheetFunction.Text(saat / 24, "[hh]:mm")
End If
Next i
End Sub

Cevap: Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 18:49
gamisaga
hasan14 yazdı:Aşağıdaki uygulamayı deneyiniz.
Kod: Tümünü seç
Sub gece2()
Dim s1 As Worksheet: Dim i As Integer: Dim son As Integer
Set s1 = Sheets("Sayfa1")
son = s1.Cells(65355, "A").End(3).Row
For i = 2 To son
If s1.Cells(i, 2) > s1.Cells(i, 1) Then
saat = (s1.Cells(i, 1) + 1) * 24 - s1.Cells(i, 2) * 24
s1.Cells(i, 3) = WorksheetFunction.Text(saat / 24, "[hh]:mm")
Else
saat = s1.Cells(i, 1) * 24 - 12.Cells(i, 2) * 24
s1.Cells(i, 3) = WorksheetFunction.Text(saat / 24, "[hh]:mm")
End If
Next i
End Sub


Hocam vermiş olduğunuz bu örneği kendi çalışmama entegre edebildim şuan çalışıyor. Sorunuma yardımcı olmaya çalışan tüm arkadaşlara teşekkür ederim. İlgi ve yardımlarınız için.

Cevap: Cevap: Cevap: Makro da modun karşılığı ne

İletiTarih: 02 Ağu 2019 20:47
hasan14
gamisaga yazdı:
Hocam vermiş olduğunuz bu örneği kendi çalışmama entegre edebildim şuan çalışıyor. Sorunuma yardımcı olmaya çalışan tüm arkadaşlara teşekkür ederim. İlgi ve yardımlarınız için.

Dönüş yaptığınız için teşekkür ederim.Kolay gelsin.

ÇÖZÜLDÜ: Makro da modun karşılığı ne

İletiTarih: 08 Ağu 2019 22:10
gamisaga
[Çözüldü] olarak işaretlenirse belki yardım arayan arkadaşlar için bir kolaylık olur.