B

Çözüldü Aylık Toplam Mesai Dağılımı Hakkında

bychilavert

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
Merhaba

Kullanmakta olduğum personel puantajında personel ay içinde kaç saat mesaiye kalmışsa sayfa sonunda olan "MESAİ" alanına yazdığım zaman sarı renkle belirttiğim alanlara rastgele dağıtmasını istiyorum.

Hİ= HAFTALIK İZİNLER
0= PUANTAJ KAYDI
B= BAYRAM
R= RAPORLU
Yİ= YILLIK İZİN
G= GÖREVLİ
Öİ:ÖLÜM İZNİ
DO= DOĞUM İZNİ
DÜ= DÜĞÜN İZNİ
Üİ= ÜCRETLİ İZİN
ÜC= ÜCRETSİZ İZİN

Yukarıda belirtiğim alanlar eğer personele ait satırda varsa sarı renkli alana yazmasın. sadece X= ÇALIŞTIĞI GÜNLER var ise sarı renkli alana yazmasını istiyorum. Daha önceden bana bununla ilgili vb kod verilmişti. 3 ve 3 ün katlarını yazdığım zaman rastgele şekilde 3-3-3-3 diye dağıtmaktadır.

* Benim istediğim 1-2-4-5 gibi farklı kombinasyonlarda yazdığım rakama göre dağıtmasını istiyorum.

Örnek : 2 ve 2 nin katlarını yazdığım zaman 2-2-2-2 diye dağıtsın 4 ve 4 ün katlarını yazdığım zaman 4-4-4 diye dağıtmasını istiyorum. Bunu nasıl yapabilirim.

Kod:
Görüntülemek için giriş yapmanız gerekmektedir.
(50 satır)

Bana daha önce verilen kod yukarıdadır.
 

Ekli dosyalar

Merhabalar.

Mevcut kodu silip yerine aşağıdakileri yapıştırın.

Koddaki ilk For .... Next döngüsünün hemen üstündeki satırda yer alan, alt ve ust ismini verdiğim değişkenler,
hücrelere yazılacak değerlerin öncelik sırasına göre (tersten >> 5'in katıysa 5 yazılır, 4, 3, 2'nin katı mı diye bakılmaz)
alt ve üst sınırlarını gsteriyor ( ben 2 ile 5 arasındaki sayılar olabilir dedim ).

Kullanım şekli olarak AK sütununa elle veri girişi yaplacağı varsayıldı.

AK sütununa sayı yazıldığında ilgili personel satırında yeterli miktarda rastgele hücreye (bir altında X yazan hücreler tabii ki) sayı yazılır.

Diyelim AK sütununa 29 yazdınız, bu sayı 2, 3, 4 ve 5'in katı değil.
Bu durumda bu sayıdan 1 çıkartılır ve 28 sayısı kontrol edilir, 28 sayısı 5'in değil, 4'ün katı (7), 3 ve 2 kontrol edilmez.
7 adet hücreye 4 yazılır, toplamı sağlayacak, daha evvel çıkartılan 1 sayısı da başka bir hücreye yazdırılır ve toplamlar tutar.
Satırda 7 adet X yoksa işlem yapılmadan kod sonlandırılır.

AK sütununa elle veri girişi yaparak denemeler yapınız. Biraz uğraştırdı ama şık olduğunu düşünüyorum.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(28 satır)
 
Merhaba Ömer Hocam

Belirttiğiniz kodu kullanıyorum sorunsuz devam ediyor. Örnek 300 kişi yapıyorum sıkıntı yok 301 inci kişiye geldiğim zaman mesai olarak 15-18-21 gibi sıra ile yazıyorum. mesai bölümüne atmıyor.

Bazılarına atıyor bazılarına atmıyor.
 

Ekli dosyalar

Kodun tetiklenmesi için; sayı yazılan AK sütunu hücresinin satır numarasının,
A sütunundaki son dolu satırın satır numarasından küçük veya eşit olması gerekir.
A sütunundaki son dolu hücrenin kaçıncı satırda olduğunu kontrol edin/doldurun.
Kodda kırmızı renlendirdiğim 1 sayısı, son dolu satırın kaçıncı sütuna bakarak kontrol edildiğini belirtiyor.

Eklediğiniz belgeye göre 115'incci satıra kadar işlem yapılabilir.

VBA:
Görüntülemek için giriş yapmanız gerekmektedir.
(1 satır)
 
Sayı olarak kaç yazdığının bir önemi yok
(sıra numarası için formül mü vardır onu bilemiyorum tabi, böyleyse sonucu boş da olsa formüllü hücre DOLU hücredir).

Şöyle düşünün A sütununda son hücreye (excel versiyonuna göre A65536, A1048576 hücresine)
gelip CTRL+YUKARI OK tuşuna bastığınızda vardığınız hücre kaçıncı satırda ise o satıra kadar işlem sorunsuz gerçakleşir.

Tabi koddaki bir diğer koşul da sayı yazdığınız satır+1 satırında D-AH sütun aralığındaki X adetinin kaç olduğu.

AK sütunundaki hücre A sütunundaki son dolu hücreden yukardaysa ve ilgili satırda yeterli adette X varsa kod sorunsuz çalışacaktır.

.
 
Üst