Benzersiz verilerin saniyelerini makro ile topla

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Merhaba Arkadaşlar ,
Ekte ki dosyamda A sütunundaki Plakaların C sütunundaki değerlerin sadece saniyelerini toplayıp , yine toplamıda A sütunundaki Plaka sayısına bölünmesini mümkünse scripting dictionary ile veya dizi yöntemiyle istiyorum , ilginize teşekkürler.
 

Ekli dosyalar

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Selam Arkadaşlar , ben E sütununa plakaları dizi yöntemiyle yazdırdım .Ama F sütununa bu Plakaların karşısın da ki yani C sütunundaki saatlerin sadece saniyelerinin toplamının plaka sayısına bölümünü de F sütununa yazdırmak istiyorum.Bu kısım benim kapasitemi aşıyor ,desteğiniz için ,teşekkürler.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Mevcut kodlar yerine aşağıdakiin kullanabilirsiniz.
C++:
Option Explicit
Sub BenzersizYeni()
   Dim VeriArr As Variant, ItemArr, Dict1 As Object, i As Integer
   Sheets("Sayfa1").Range("E:F").ClearContents
   Sheets("Sayfa1").Range("E1") = "Plaka"
   Sheets("Sayfa1").Range("F1") = "Saniye Toplamı / Sefer Sayısı"
  
   VeriArr = Sheets("Sayfa1").Range("A2:C" & Sheets("Sayfa1").Cells(Rows.Count, 1).End(3).Row)
   Set Dict1 = CreateObject("Scripting.Dictionary")
   For i = LBound(VeriArr, 1) To UBound(VeriArr, 1)
      If Not Dict1.Exists(VeriArr(i, 1)) Then
         Dict1.Add VeriArr(i, 1), Second(VeriArr(i, 3)) & "/" & 1
      Else
         ItemArr = Split(Dict1(VeriArr(i, 1)), "/")
         Dict1(VeriArr(i, 1)) = Second(VeriArr(i, 3)) + ItemArr(0) & "/" & ItemArr(1) + 1
      End If
   Next i
   For i = 0 To Dict1.Count - 1
      Sheets("Sayfa1").Range("E2").Offset(i, 0) = Dict1.Keys()(i)
      Sheets("Sayfa1").Range("E2").Offset(i, 1) = Dict1.Items()(i)
   Next i
   Set Dict1 = Nothing: Erase VeriArr: Erase ItemArr: i = Empty
End Sub
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
ÖmerFaruk by ,istediğim bir eksikle olmuş emeğinize sağlık.
eksik olan ise, F sütununa mesela 141/4 şeklinde yazması değil sonucu vermesi yani 141 i 4 e bölersek 35,25 sn olması idi
amacım ortalama saniyeyi bulmaktı , sağlıkla kalın..
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sheets("Sayfa1").Range("E2").Offset(i, 1) = Dict1.Items()(i)

Bu satırı aşağıdakiyle değiştirin. Denemeden yolluyorum.

Sheets("Sayfa1").Range("E2").Offset(i, 1) =Split(Dict1.Items()(i), "/")(0)/Split(Dict1.Items()(i), "/")(1)
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Verdiğiniz kodu deneyin ama sonuçta plakaları da sildi toplam durdurmade değilim ben mi yanlış kontrol eder misiniz
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Fazladan bir şeyler değiştirmişsiniz. Son For-Next döngüsü aşağıdaki gibi olacak.
Ayrıca F sütunun formatını Sayı olarak seçin, Ondalık kısmı virgülden sonra 2 hane tutun.

C++:
   For i = 0 To Dict1.Count - 1
      Sheets("Sayfa1").Range("E2").Offset(i, 0) = Dict1.Keys()(i)
      Sheets("Sayfa1").Range("E2").Offset(i, 1) = Split(Dict1.Items()(i), "/")(0) / Split(Dict1.Items()(i), "/")(1)
   Next i
Yukarıdaki haliyle sonuç görüntüsü
237073
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
563
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Teşekkürler ÖmerFaruk üstadım .istediğim sonuç bu idi ,son halini de ekliyorum , iyi günler
 

Ekli dosyalar

Üst