Dakikalık bir tablodan saat başlarını çekmek

Katılım
29 Haziran 2008
Mesajlar
23
Excel Vers. ve Dili
MS Office 2007 ENG
Merhaba arkadaşlar elimde bir tablo var ve ben bu tablodan bazı verileri çekmek istiyorum fakat başaramadım.

Tablo dakikalık verilerden oluşan bir tablo. Örneği incelerseniz gayet açık bir şekilde anlaşılıyor. Bana bu tablodan saat başlarını çeken bir formül lazım. Fakat bazı saat başlarına karşılık gelen veriler yok dolayısıyla bu hücrelerin yeni tabloda boş kalması gerekiyor.

Yardımcı olursanız çok sevinirim. Örnek dosya ekte.
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,490
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba
Tam anlamadım ama sanırım saati çekmek istiyorsunuz.

=HOUR(B2
=SAAT(B2))

Makroyla :

Kod:
Sub Saatler()
For i = 2 To [A65536].End(3).Row
    Cells(i, "D") = DatePart("h", Cells(i, "B"))
Next i
End Sub
 
Katılım
29 Haziran 2008
Mesajlar
23
Excel Vers. ve Dili
MS Office 2007 ENG
yok ben hazırladığım tabloda o saatbaşlarının bulunduğu satırlardaki x verisini çekmek istiyorum. Örnek olarak gönderdiğim tabloyu incelerseniz daha kolay anlaşılır. Çok teşekkür ederim ilgilendiğiniz için.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,490
Excel Vers. ve Dili
Ofis 365 Türkçe
O tablodan birşey anlamadım. Mesajınızdan da saati çekeceğinizi anladım.
 
Katılım
29 Haziran 2008
Mesajlar
23
Excel Vers. ve Dili
MS Office 2007 ENG
O zaman şöyle izah edeyim,

Orjinal tablo A B ve C stünlarından oluşuyor. Bu sütunlarda;
A Sütunu : Tarih
B Sütunu : Saat ( 00:00, 00:01, 00:02, 00:03, ... , 23:59 )
C Sütunu : X verileri

Benim İstediğim Tablo ise:

H Sütunu : Tarih
I Sütunu : Saat Başları ( 00:00, 01:00, 02:00, .. , 23:00 )
J Sütunu : X verileri

Şimdi orjinal tabloda bu veriler ( X verileri ) dakikalık olarak deişiyor. ( 00:00, 00:01, 00:02, 00:03, ... , 23:59 )
Bana ise bu verilerin ( X verileri ) Saat başlarına denk gelen satırlardaki değerleri lazım ( 00:00, 01:00, 02:00, .. , 23:00 )
Bunu yapacak bi makro yada formül varmı? varsa örnek verebilirmisiniz?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,490
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Olay şimdi anlaşılmıştır.

Makro ile çözüm :

Kod:
Sub SaatBasiVeriler()
Dim i, j As Long
j = 1
Application.ScreenUpdating = False
Range("H2:J65536").ClearContents
For i = 2 To [A65536].End(3).Row
    If Minute(Cells(i, "B")) = 0 Then
        j = j + 1
        Cells(j, "H") = Cells(i, "A")
        Cells(j, "I") = Cells(i, "B")
        Cells(j, "J") = Round(Cells(i, "C"), 2)
    End If
Next i
Application.ScreenUpdating = True
MsgBox "İşlem Tamam..."
End Sub
 

Ekli dosyalar

Katılım
29 Haziran 2008
Mesajlar
23
Excel Vers. ve Dili
MS Office 2007 ENG
üstadım ellerine sağlık peki bu makroda 01:00 dan başlıyor benim bunu 00:00 saatlerinide almam mümkün mü?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,490
Excel Vers. ve Dili
Ofis 365 Türkçe
Alması gerek, ben saati değil dakikayı dikkate aldım. Dakika Sıfır ise listeliyor.
 
Katılım
29 Haziran 2008
Mesajlar
23
Excel Vers. ve Dili
MS Office 2007 ENG
peki mesela 05:00 saatine ait satır yok ama yeni tabloda bu satırın olması ve boş kalması lazım. Bunu nasıl yapabilirim. kusura bakmayın size zahmet oluo ama çok işime yarıcak bu macro
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,490
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Olayı şimdi anladım. Eksik veri olduğunda da siz gelsin istiyorsunuz.
Bu durumda kodları değiştirmek gerek, ama şu an müsait değilim, bir arkadaş ilgilenirse sevinirim, yoksa boş bir zamanımda bakarım.
 
Katılım
29 Haziran 2008
Mesajlar
23
Excel Vers. ve Dili
MS Office 2007 ENG
teşekkür ederim yrn boş zamanınız olurda ilgilenirseniz yada bu akşam gerçekten çok sevinirim iyi akşamlar
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,490
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Kodları dener misiniz?

Kod:
Sub SaatBasiVeriler()
Dim i, j As Long
j = 1
Application.ScreenUpdating = False
With Range("H2:J65536")
    .ClearContents
    .Interior.ColorIndex = xlNone
    .Font.Bold = False
End With
For i = 2 To [A65536].End(3).Row
    If Minute(Cells(i, "B")) = 0 Then
        j = j + 1
        Cells(j, "H") = Cells(i, "A")
        Cells(j, "I") = Cells(i, "B")
        Cells(j, "J") = Round(Cells(i, "C"), 2)
    End If
Next i
For i = [H65536].End(3).Row To 3 Step -1
    If Hour(Cells(i, "I") - Cells(i - 1, "I")) <> 1 Then
        Range("H" & i & ":J" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
        Cells(i, "I") = TimeSerial(Hour(Cells(i - 1, "I")) + 1, 0, 0)
        If Hour(Cells(i, "I")) = 0 Then
            Cells(i, "H") = Cells(i - 1, "H") + 1
        Else
            Cells(i, "H") = Cells(i - 1, "H")
        End If
        Range("H" & i & ":J" & i).Interior.ColorIndex = 16
    End If
Next i
Do While Hour(Cells(i, "I")) <> 0
    Range("H" & i & ":J" & i).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Cells(i, "I") = TimeSerial(Hour(Cells(i + 1, "I")) - 1, 0, 0)
    Cells(i, "H") = Cells(i + 1, "H")
    Range("H" & i & ":J" & i).Interior.ColorIndex = 16
Loop
Application.ScreenUpdating = True
MsgBox "İşlem Tamam...  "
End Sub
 

Ekli dosyalar

Katılım
29 Haziran 2008
Mesajlar
23
Excel Vers. ve Dili
MS Office 2007 ENG
Necdet bey çok teşekkür ederim. Ellerinize sağlık tam işime yarayan bi macro olmuş. Çok teşekkür ederim.
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,490
Excel Vers. ve Dili
Ofis 365 Türkçe
Güle güle kullanınız.
 
Üst