• Foruma hoş geldin 👋 Ziyaretçi

    Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Çözüldü Dizi formüllü sayfayı vba ile hızlandırabilir miyiz ?

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.
Durum
Konu Çözümlendiği İçin Kapatılmıştır.

bama_boy

Yeni Üye
Kullanıcı Bilgileri
Aktiflik
Çevrimdışı
Katılım
10 Kas 2022
Mesajlar
26
Çözümler
2
Aldığı beğeni
9
Excel V
Office 2013 TR
Konuyu Başlatan
Arkadaşlar, ekte ilettiğim örnek dosyada ki gibi bir çalışmam var. her kişi için sıralı bir liste ve işlem saati olarak veriler geliyor. Gelen verilerden şunu elde etmek istiyorum,
  1. iş başlangıç saati
  2. öğle arası (ne kadar süre mola vermiş)
  3. bitiş saati
Bunu ekte ilettiğim şekilde dizi formülü ile yapıyorum ama gün sayısı arttıkça ve tüm personeller listeye işlenince sayfanın açılması bile 10 dakika kadar sürüyor.
Bu verileri nasıl değerlendiriyorum sorusunun cevabı ise
  • Tarih ve personel ismi eşleşiyorsa minimum değer iş başlangıç saatidir.
  • Gün içerisinde en uzun verdiği mola öğle molasıdır ( bunuda iki saat farkından yararlanarak buluyorum )
  • Tarih ve personel ismi eşleşiyorsa maksimum değer iş bitiş saatidir.
Bu konuda dizi formülü çok yavaş, daha hızlı çözüm sağlayabileceğimiz bir format oluşturulabilir mi vba ile çözüm sağlanabilir mi? birde tablo sıralı liste sayfasından çalışabilir mi ? ben sıralı listesi tablonun soluna alıp formülleri ordan çalıştırıyorum.

Şimdiden yardımlarını esirgemeyen herkese çok teşekkür ederim.
 

Ekli dosyalar

  • deneme sayfa.xlsm
    364.3 KB · Gösterim: 6
Merhaba.
Denemeniz için N sütununa Başlangıç saatleri aldırdım işlemler bitince F sütununa göre ayarlanır.
Formüller/Hesaplama seçeneklerinden Elle işaretleyin yavaşlamasın kodlar bitince tekrar eski haline getirirsiniz.
G ,H ve I sütununa gelen verilerin mantığını anlatırsanız ona göre kod yazılabilinir.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
.Cells(i + 6, "N").Value = WorksheetFunction.Min(arr)
satırının altına alttakini ekleyincede Bitiş saati bulunuyor.
G ve H sütunların mantığını anlayabilirsem galiba çözülür.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Dosyanıza göre son durum alttaki kod.
Sanki kendim çalıp kendim oynuyor gibiyim ama neyse yinede merak ettiğim için uğraştım.
Sonuç olan formüllü sütunlarınıza test olan ise gifteki gibi karşılaştırmanız için.


2.gif

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 

Ekli dosyalar

  • deneme sayfa test.xlsm
    379.9 KB · Gösterim: 3
  • deneme sayfa sonuc.xlsm
    380.6 KB · Gösterim: 1
Son düzenleme:
Son olarak alttaki kod ile E sütununa personeller A sütunundan aktarılır yani personel isimleri yazmaya gerek yok E sütununa.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Son düzenleme:
harika görünüyor, emeklerinize sağlık. Tüm verileri dosyaya alarak deneyeceğim. Sonuç ile ilgili tekrar dönüş yapacağım. İlgi ve alakanız için minnettarım Refaz
 
harika görünüyor, emeklerinize sağlık. Tüm verileri dosyaya alarak deneyeceğim. Sonuç ile ilgili tekrar dönüş yapacağım. İlgi ve alakanız için minnettarım Refaz
Rica ederim.Daha hızlı olması için dizilerle yaptım.
Yanlışlık vs.. olursa yazarsınız.
Eğer çok fazla personel varsa hücre kenarlık çizgilerini ve saat formatlarınıda kodla yapabiliriz.
Kod yavaş olursa biraz daha hızlanır ve yaklaşık personel sayısını yazarsanız daha iyi olur bunun için.
 
Son düzenleme:
Aslında tek personel olunca hata veriyor o konulara girmemiştim.
Biraz zamanım varken tam kodları ayarlayıp eklerim.
 
5 ve 6.Mesajdaki dosya güncellendi hata kontrolleri eklenip.
 
Son düzenleme:
sayın Refaz, tekrar teşekkür ediyorum emeklerinize sağlık. bu işi yapan personel sayısı şuan için 20 kişi maksimum 30 personele kadar çıkabilir ve 15 gün peryotlu bir çalışma. Vermiş olduğunuz dosya hata vermeden çalıştı bende. Müsait olduğunuz bir vakitte size zahmet olmayacaksa, verileri sıralı liste sayfasından aldırarak tabloya getirtebilir miyiz ? ben biraz denedim ama vba tarafında çok bilgim olmadığı için düzenleyemedim. Kendim uzatabilirim sandım ama yapamadım.
 

Ekli dosyalar

  • deneme sayfa sonuc.xlsm
    199.6 KB · Gösterim: 2
Yolladığınız dosyaya göre işler değişiyor tekrar bayağı kod değişmesi gerekecek.
Sıralı liste sayfasında A sütununda yaklaşık kaç satırlık veri olacak.65536 dan fazla ise ona göre yapılabilnir biraz daha kısaltılıp.
Ayrıca dosyadan anladığım kadarıyla Saatlik Takip sayfasına Personelleri kendiniz yazacaksınız Tarih olanlarıda.
Bunlara cevap gelince ona göre başlarım yoksa tekrar uğraşmayalım.
 
Ayrıca tam açıklama yaparsanız adım adım daha iyi olur.
 
Yolladığınız dosyaya göre işler değişiyor tekrar bayağı kod değişmesi gerekecek.
Sıralı liste sayfasında A sütununda yaklaşık kaç satırlık veri olacak.65536 dan fazla ise ona göre yapılabilnir biraz daha kısaltılıp.
Ayrıca dosyadan anladığım kadarıyla Saatlik Takip sayfasına Personelleri kendiniz yazacaksınız Tarih olanlarıda.
Bunlara cevap gelince ona göre başlarım yoksa tekrar uğraşmayalım.
Her ay düzenli olarak 15 günlük bir çalışma var, her ay yaklaşık 20 farklı personelden ( Personeller sabit elle yazıyorum ) toplam 80-100 bin adet veri geliyor. Bu maksimum 150 bin civarını bulabilir. Veritabanından gelen verileri tarih ve saate göre sıralayıp sıralı listeye bu tabloya alıyor ve analizini yapıyoruz.
  • 20 farklı personel
  • Her ay 100.000 veri
  • Takip edilen gün sayısı, her ayın ilk 15 günü
  • başlangıç bitiş ve öğle araları (öğle arası başlangıç - bitiş) saatlerini buluyoruz.
 
Tamam bugün müsait olunca bakarım.Zor değil diye tahmin ediyorum.
 
Kodlar safa formatına göre yapıldı küçük büyük harf duyarlılığı eklenmedi bunun için isimleri aynısını yazmalısınız istiyorsanızda Lcase yada benzeri gibi kodlar eklenir bunun için.
sadece 01.08.2024 tarihleri olduğu için başkalarını test edemedim sonucu yazarsınız doğru çalışıyorsa.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 

Ekli dosyalar

  • deneme sayfa.xlsm
    210.2 KB · Gösterim: 1
Kodlar safa formatına göre yapıldı küçük büyük harf duyarlılığı eklenmedi bunun için isimleri aynısını yazmalısınız istiyorsanızda Lcase yada benzeri gibi kodlar eklenir bunun için.
sadece 01.08.2024 tarihleri olduğu için başkalarını test edemedim sonucu yazarsınız doğru çalışıyorsa.

C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
geçen ayın verilerini mevcut tabloya aldım test için ama yalnızca ilk tarihi getiriyor. diğer tarihlerde veri gelmiyor
 

Ekli dosyalar

  • deneme sayfa.xlsm
    2.5 MB · Gösterim: 1
If dizi(ii, 1) = diziA(i, 1) And dizi(iii, 2) = satAlti Then
Yukardaki iii olandaki bir adet i yisilip deneyin.
Veriler geliyor ama tam geldiğinden emin değilim tam inceleyip denerim ayrıca biraz daha hızlanabilirçok fazla veri olunca yavaşlamış biraz.
 
C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
Birde düzeltmeyi unutmuşum yukardaki kodu silip alttakini eklemeniz lazım.
C#:
Değerli Misafirimiz İçeriği Görebilmek İçin Üyemiz İseniz Giriş Yap'ın Ya da Üye Ol'un.
 
Durum
Konu Çözümlendiği İçin Kapatılmıştır.
Geri
Üst