Personel Servis Listesi Hazırlama

  • Konuyu başlatan Konuyu başlatan mzsakall
  • Başlangıç tarihi Başlangıç tarihi
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Katılım
9 Tem 2019
Mesajlar
50
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
sayın ilgililer ;

her hafta manuel listelerden 2 faktöre göre tek tek ayıkladığım listeyi kolay bir şekilde haftalık vardiyası ve kullandığı servise göre vardiyalara bölebilir miyim konu hakkında yardımcı olur musunuz.birde bir sayfada tüm personel isimlerini eğer unutulan olursa diye sağlama yapabilme şansımız varmı yani sabah orta gece listelerinde ki personel isimlerini alt alta toplatarak tüm personel listesi ile çakıştırıp listelere eklenmeyen personelleri tespit edebilir miyiz.

teşekkürler
 

Ekli dosyalar

Sayın @mzsakall,

Bence örnek belgenizde yeterli veri yok veya olması gereken sonuç gösterilmemiş durumda.

Sanırım SABAH ile GÜNDÜZ aynı anlama geliyor doğru mudur?
Kişi bilgilerini kendi vardiyasına ait sayfada, kendi GÜZERGAHının bulunduğu sütunda listelemek istiyorsunuz doğru mudur?

Yukarıdaki sorularımın cevapları EVET ise, HAFTALIK sayfasına bir düğme ekleyip,
bu düğmeyle aşağıdaki kodu ilişkilendirerek kullanabilirsiniz.

VBA:
Sub VARDIYA_GUZERGAH_AKTAR()
Set hv = Sheets("HAFTALIK VARDİYA")

For Each shf In ThisWorkbook.Sheets
    If shf.Name <> hv.Name And shf.Cells.SpecialCells(xlCellTypeLastCell).Row > 1 Then _
        shf.Range(shf.Cells(2, 1), shf.Cells(Rows.Count, Columns.Count)).ClearContents
Next
For sat = 2 To hv.Cells(Rows.Count, 1).End(3).Row
    isim = hv.Cells(sat, 3)
    If isim = "SABAH" Then isim = "GÜNDÜZ"
    For Each shf In ThisWorkbook.Sheets
        If isim = shf.Name Then
            sut = WorksheetFunction.Match(hv.Cells(sat, 2), shf.[1:1], 0)
            ssat = shf.Cells(Rows.Count, sut).End(3).Row + 1
            shf.Cells(ssat, sut) = ssat - 1 : shf.Cells(ssat, sut + 1) = hv.Cells(sat, 1)
            shf.Cells(ssat, sut + 2) = hv.Cells(sat, 4)
            shf.Columns.AutoFit
        End If
    Next
Next: MsgBox "İşlem tamamlandı.", vbInformation, "::.. Ömer BARAN ..::"
End Sub
 
Ömer bey tam istediğim gibi olmuş ellerinize sağlık ayrıca bir sayfada gündüz orta gece sayfalarında ki personelleri alt alta getirerek kendi personel listemizle karşılaştırıp olmayanları tespit edebilme şansımız var mı
 
Sn. @mzsakall,
Verilerin tümü zaten HAFTALIK sayfasında var ve tüm satırlar aktarılıyor.
Bir satırın aktarılmaması diye bir durum oluşmazki.
Yeterki; sayfa isimleri ve güzergah adları, HAFTALIK sayfasındakiyle birebir aynı yazılmış olsun.
 
Hocam muazzam olmuş çok teşekkürler kendisi güzegah isimlerini oluşturması mükemmel ayrıca telefon numarasının yanına durak adıda açabilir miyiz :) biliyorum .ok oldum ad soyad telefefon no durak adı şeklinde dağıttırısak mükemmel olur
 
Tekrar merhaba.

B ve C sütunu vardiya ve güzergah olmak üzere;
HAFTALIK sayfasında kaç sütunluk bilgi varsa tüm sütunlardaki bilgiler için sütun oluşturularak bilgiler aktarılır.
Varsa, işlem öncesindeki tüm veriler silinir, hücre birleştirmeleri iptal edilir ve sütun (güzergah) başlıklarının yazılması dahil
tüm işlemler makro tarafından yapılır.

Deneyiniz.

VBA:
Sub VARDIYA_GUZERGAH_AKTAR()
Set hv = Sheets("HAFTALIK VARDİYA")
sutadt = hv.Cells(1, Columns.Count).End(xlToLeft).Column
sonsat = hv.Cells(Rows.Count, 1).End(3).Row
For Each shf In ThisWorkbook.Sheets
    If shf.Name <> hv.Name Then shf.Cells.Clear: shf.Cells.UnMerge
Next
For sat = 2 To hv.Cells(Rows.Count, 1).End(3).Row
    isim = hv.Cells(sat, 3)
    If isim = "SABAH" Then isim = "GÜNDÜZ": [B][SIZE=15px][COLOR=rgb(209, 72, 65)]renk = 15[/COLOR][/SIZE][/B]
    If isim = "ORTA" Then [B][SIZE=15px][COLOR=rgb(209, 72, 65)]renk = 27[/COLOR][/SIZE][/B]
    If isim = "GECE" Then [B][SIZE=15px][COLOR=rgb(209, 72, 65)]renk = 37[/COLOR][/SIZE][/B]
    If WorksheetFunction.CountIf(Sheets(isim).[1:1], hv.Cells(sat, 2)) = 0 Then
        sut = Sheets(isim).Cells(1, Columns.Count).End(xlToLeft).Column + sutadt - 1
        Sheets(isim).Cells(1, sut) = hv.Cells(sat, 2)
        Sheets(isim).Range(Sheets(isim).Cells(1, sut), Sheets(isim).Cells(1, sut + sutadt - 2)).Merge
    Else: sut = WorksheetFunction.Match(hv.Cells(sat, 2), Sheets(isim).[1:1], 0)
    End If
    Sheets(isim).[1:1].HorizontalAlignment = xlCenter
    Sheets(isim).Range(Sheets(isim).Cells(1, 1), Sheets(isim).Cells(1, sut + sutadt - 2)).Interior.ColorIndex = renk
    Sheets(isim).Cells(1, sut) = hv.Cells(sat, 2)
    s = Sheets(isim).Cells(Rows.Count, sut).End(3).Row + 1
    Sheets(isim).Cells(s, sut) = s - 1: Sheets(isim).Cells(s, sut + 1) = hv.Cells(sat, 1)
    For sutt = 4 To sutadt: Sheets(isim).Cells(s, sut + sutt - 2) = hv.Cells(sat, sutt): Next
Next
For Each shf In ThisWorkbook.Sheets
    If shf.Name <> hv.Name Then
        sonsut = shf.Cells(1, Columns.Count).End(xlToLeft).Column + sutadt - 2
        shf.Range(shf.Cells(1, 1), shf.Cells(sonsat, sonsut)).Borders.LineStyle = xlContinuous
        For sut = 1 To sutadt - 1: shf.Columns(1).Delete: Next
    End If
Next: MsgBox "İşlem tamamlandı.", vbInformation, "::.. Ömer BARAN ..::"
End Sub

.
 
8 numaralı cevabımdaki kodu güncelledim. Sayfayı yenileyerek yeni halini görebilirsiniz.
Kırmızı renklendirdiğim kısımlar renklerin ColorIndex değerleri.
Bu değerleri, aşağıdaki sayfada bulunan ColorIndex bölümüne gözatarak değiştirebilirsiniz.
Kod:
https://www.excel-pratique.com/en/vba/colors.php
 
Leguminosea süpersin ustam eline sağlık tek fark orta sayfasında orta yazısı ile durak sarı olabilir mi gecelerde mavi her seferinde yapmayalım :)
 
Bu bahsettiğiniz dolgu rengi mi, yazı rengi mi?
Sadece başlıklara mı uygulanacak yoksa veriler de dahil edilecek mi?
Gündüz sayfasında ne yapılacak?
En iyisi siz her 3 sayfa için de elle yaptığınız şekli paylaşın ona göre düzenleyelim.
 
Gündüz gri orta sarı gece mavi dolgu olacak sadece başlıklara uygulanacak Ömer hocam yapmış yukardanörneği var ancak sizin yaptığınız hesaplama olduğu için daha kullanışlı olduğundan sizinkiyle yoluma devam edeceğim tek kalan işlem bu oldu
 
#13 Nolu mesajdaki dosyayı yeniledim.
Sayfayı yenileyip dosyayı tekrar indirin.
Renkler konusunda değişiklik gerekirse her sayfada koşullu biçimlendirme sekmesinden değiştirebilirsiniz.
 
merhaba bu uygulamayı aktif olarak kullanıyorum rica etsem ayrı sayfalara değil tek sayfaya önce sabah olanlar sonra orta olanlar ardından gece olanları alt alta vardiyalar arasında boşluk bırakarak yazdırabilir miyiz birde

tarih tarih başka sayfa açarak kayıt etmesini istiyorum

bir sayfada ise bir personelin adını seçtiğimde önce ki geldiği vardiyaların ne olduğunu görebileceğim bir opsesyon ekleyebilir miyiz ustalar.

çok teşekkürler
 
Durum
Üzgünüz bu konu cevaplar için kapatılmıştır...
Benzer Konular Popüler İçerikler Daha Fazlası
Geri
Üst Alt