Saat aralığı ve sebebini random olarak yazmak

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,260
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Ekteki dosyada sayfa 1 , 2 , 3 bulunmaktadır.

Sayfa 2 B1 hücresinde tarih D1 Hücresinde saat ( 16 ya da 17 gibi ) f1 hücresinde de tc kimlik no değişmektedir.

Halihazırdaki işlevler :
B1 Hücresinde tarih değiştiğinde D4:D51 aralığına formülle kendini kopyalıyor
D1 Hücresinde Saat değiştiğinde E4:E51 aralığına formülle kendini kopyalıyor
F1 Hücresinde Tc No değiştiğinde B4:B51 aralığına formülle kendini kopyalıyor.
Bu işlevler yeterli çalışıyor.

İstenen işlevler :

1- D1 hücresinde saat değiştiğinde E4:E51 aralığının , sadece o saat için ve o saate random dakika saniye eklenerek D51 e kadar dökülmesi
ve her saat değiştiğinde random olarak bunu yapması . ( D1 e 16:00:00 yazıldığında rastgele aralıklarla dakika saniye eklenmesi ile D51 de
16:58 veya 16:59 da sonlanması.

2- F1 Hücresindeki Tc No her değiştiğinde F5:F53 aralığına sayfa 3 te bulunan listeden rastgele konu alarak bu aralığa yapıştırması

3- Bas tuşu kullanılıp veri baskıya gönderildiğinde sayfa1 de TC no yu buraya ilk boş satıra alıp sağına basıldı kelimesi yazılması
 

Ekli dosyalar

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Cem Bey;

2. madde için aşağıdaki kodu Sayfa2 modülüne yerleştirip, F1 hücresindeki TC No'yu değiştirerek deneme yapabilirsiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("F1"), Range(Target.Address)) Is Nothing Then
        Range("F4:F54").Formula = "= INDIRECT(""Sayfa3!A"" & (RANDBETWEEN(1, 13)))"
        Range("F4:F54").Value = Range("F4:F54").Value
    End If
End Sub
.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
3. madde için;

Kod:
Sub Düğme1_Tıklat()
    NoB = Sheets("Sayfa1").Range("B" & Rows.Count).End(xlUp).Row + 1
    Sheets("Sayfa1").Range("B" & NoB) = Sheets("Sayfa2").Range("F1").Text
    Sheets("Sayfa1").Range("C" & NoB) = "BASILDI"
    ActiveSheet.PrintOut
End Sub
.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,260
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Haluk Bey

2 ci madde için vermiş olduğunuz kod çalıştı ve random olarak listeyi değiştiriyor.
3.cü madde de sorunsuz olarak basılanın kaydını tutuyor
1.ci madde umarım anlaşılır şekilde izah edilmiş durumdadır , elle yukarda girilen saat ( saati sabit tutup ) dakika ve saniyeleri o saatin bütünü
için random eklemelerle sıralaması yeterli olacak. Örnek :

17:02.22
17:04:46
17:07:32
gibi

Ya da daha basit bir yöntem önerisi de çok sevindirici olacaktır .

Elinize aklınıza sağlık...
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Alternatif dosya eklidir.
 

Ekli dosyalar

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
1. maddeyi tam anlamadığım için ahkâm kesmek istemedim.....

Yani E4 hücresi, meselâ 16:00:05 ve E54 hücresi 16:59:45 gibi mi olacak? (Saat başı ve sonu)

Yoksa, fark etmiyor mu?

.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,260
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Alternatif dosya için ayrıca teşekkür ederim .

1Ci maddede
E4 hücresi D1 ile aynı veya 1 - 2 dk eklenmiş olarak başlayabilir.
E51 hücresi 59 cu dakikada sonlanması doğru
E sütununda bunlar arasındaki hücreler doğru ekleme yapıyor, yani sağlıklı çalıştı.

Küçük bir sorun olarak , sırala tuşuna basıldığında sebep listesinde

F4 hücresinde sabit olarak BÖLÜM BAŞLADI
f51 hücresinde sabit olarak MOTOR STOP yazılı kalması gerek.
Aradaki hücreler listeyi random olarak sayfa1 den alacak .

Kodlarda hücre ayarlarını kaydırmayı denedim ama sebep listesini F5 : F50 ye oturtamadım

Bu kısım icin bir düzeltme istersem umarım kızmazsınız , mesaiden önceye yetiştirmek için
çoklu deneme yerine ricada bulundum ..
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Cem Bey;

Ben anladığım kadarıyla; 1 ve 2. maddeler birlikte olmak üzere, aşağıdaki kodu öneriyorum ....

Not: E sütunundaki saatlerin belli bir sıralaması yok...... "random" olarak yapıldı

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("F1"), Range(Target.Address)) Is Nothing Then
        Range("F4:F54").Formula = "= INDIRECT(""Sayfa3!A"" & (RANDBETWEEN(1, 13)))"
        Range("F4:F54").Value = Range("F4:F54").Value
        Range("E4:E54").Formula = "=$D$1+TIME(0,RANDBETWEEN(0,59),RANDBETWEEN(0,59))"
        Range("E4:E54").Value = Range("E4:E54").Value
    End If
End Sub
.
 
Son düzenleme:

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,260
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Son düzeltme ile dosya gerektiği gibi çalışmaya başladı ..

Zahmetleriniz için çok teşekkür ederim

Saygılarımla Haluk Bey ..
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Eğer E sütunundaki saatler artan sırayla olsun istiyorsanız, o zaman;

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Range("F1"), Range(Target.Address)) Is Nothing Then
        Range("F4:F54").Formula = "= INDIRECT(""Sayfa3!A"" & (RANDBETWEEN(1, 13)))"
        Range("F4:F54").Value = Range("F4:F54").Value
        Range("E4:E54").Formula = "=$D$1+TIME(0,RANDBETWEEN(0,59),RANDBETWEEN(0,59))"
        Range("E4:E54").Value = Range("E4:E54").Value
        With Worksheets("Sayfa2").Sort
            .SetRange Range("E4:E54")
            .Apply
        End With
    End If
End Sub
 
Son düzenleme:

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,268
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Kolay gelsin Cem Bey,

Saygı bizden ....

.
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Alternatif dosya için ayrıca teşekkür ederim .

1Ci maddede
E4 hücresi D1 ile aynı veya 1 - 2 dk eklenmiş olarak başlayabilir.
E51 hücresi 59 cu dakikada sonlanması doğru
E sütununda bunlar arasındaki hücreler doğru ekleme yapıyor, yani sağlıklı çalıştı.

Küçük bir sorun olarak , sırala tuşuna basıldığında sebep listesinde

F4 hücresinde sabit olarak BÖLÜM BAŞLADI
f51 hücresinde sabit olarak MOTOR STOP yazılı kalması gerek.
Aradaki hücreler listeyi random olarak sayfa1 den alacak .

Kodlarda hücre ayarlarını kaydırmayı denedim ama sebep listesini F5 : F50 ye oturtamadım

Bu kısım icin bir düzeltme istersem umarım kızmazsınız , mesaiden önceye yetiştirmek için
çoklu deneme yerine ricada bulundum ..
Kodu aşağıdaki gibi değiştirip deneyin
Kod:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Range("D4:F54").ClearContents
For i = 4 To 54
Cells(i, 2).Value = Cells(1, 6)
Cells(i, 4).Value = CDate(Cells(1, 2))

If i = 4 Then
Cells(4, 5).Value = Cells(1, 4).Value
Else
Cells(i, 5).Value = Cells(i - 1, 5).Value + (59 / 50 / 24 / 60)
End If
Next i
Cells(4, 6) = "BÖLÜM BAŞLADI"
Cells(54, 6) = "MOTOR STOP"
With Range("F5:F53")
.Formula = "=INDEX(Sayfa3!$A$1:$A$13,INT(RANDBETWEEN(1,13)))"
.Value = .Value
End With
Application.ScreenUpdating = True
End Sub
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,260
Excel Vers. ve Dili
office 2003 tr + office 2010 tr 32bit
Harikasınız , akşam yorgunluğunda az daha kaçmak üzere olan minik ama önemli ayrıntıyı
son kodlarınızla gördüm.
Tekrar , elinize sağlık :)
 

turist

Destek Ekibi
Destek Ekibi
Katılım
18 Kasım 2009
Mesajlar
5,102
Excel Vers. ve Dili
2013 64Bit
English
Sağolun, kolay gelsin.
 
Üst