• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Tarih sınırlama

  • Konbuyu başlatan Konbuyu başlatan ormann
  • Başlangıç tarihi Başlangıç tarihi
Katılım
9 Ekim 2009
Mesajlar
1,626
Excel Vers. ve Dili
türkçe
2003
Ekteki örnek dosyada B9 hücresine tarih girdiğimde herhangi bir ayın birini(örnek 01.01.2011) girdiğimde a17 satırındaki son tarihi o ayın son tarihini 14(örnek 14.01.2011) yazmasını ve herhangi bir ayın 15 yazdığımda(örnek 15.01.2011) ise a17 satırındaki son tarihi diğer ayın 14 'ü(örnek 14.05.2011) nasıl yazdırabiliriz .Birde m16 hücresine o ayın başlangış tarihini ve s16 hücresine ise bitiş tarihini nasıl yazdırabiliriz.Yardımcı olurmusunuz.
 

Ekli dosyalar

Son düzenleme:
Merhaba,

Bir kaç kere okudum hiç bir şey anlamadım. Ayın son tarihi diyorsunuz ayın 14 ünü istiyorsunuz.

istediğiniz klasik memur maaş hesaplamasındaki ayın 15 ile bir sonraki ayın 14 ünün tarihini mi bulmak istiyorsunuz?
 
Merhaba,

Bir kaç kere okudum hiç bir şey anlamadım. Ayın son tarihi diyorsunuz ayın 14 ünü istiyorsunuz.

istediğiniz klasik memur maaş hesaplamasındaki ayın 15 ile bir sonraki ayın 14 ünün tarihini mi bulmak istiyorsunuz?


Sayın Nejdet hocam işçi puhantaj tablosunda genellkle biz ayın 15 ile diğer ayın 14 'ü arasında puhantaj hazırlarız.Bazende hesaplar kapandığı zaman(Yıl sonu) ise ayın başlangıcından yani 1 den 14'ü ne kadar puhantaj yapılır .benim istediğim her hangi bir ayın 15'ini girdiğimde diğer ayın 14'üne kadar tarih gelmesi .
 
Merhaba,

Adım Necdet, Nejdet değil.

Fonksiyonla iş uzayacak diye makroyla çözmeye çalıştım.
Aşağıdaki kodları ilgili sayfanın kod bölümüne kopyalayınız.

B9 hücresi değiştiğinde makro otomatik çalışacaktır.

M16

Kod:
=GÜN(B9)

S16

Kod:
14

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [B9]) Is Nothing Then Exit Sub
Dim BasTarih    As Date, _
    BitTarih    As Date, _
    j           As Integer
    BasTarih = Target.Value
    
If Day(BasTarih) = 1 Then
    BitTarih = BasTarih + 13
ElseIf Day(BasTarih) = 15 Then
    BitTarih = DateSerial(Year(BasTarih), Month(BasTarih) + 1, 14)
Else
    MsgBox "Tarihi Yanlaş Yazdınız"
    Exit Sub
End If
Application.ScreenUpdating = False
Range("C17:AG17").ClearContents
j = 2
Do
    j = j + 1
    Cells(17, j) = BasTarih
    BasTarih = BasTarih + 1
Loop Until BasTarih > BitTarih
Application.ScreenUpdating = True
End Sub
 

Ekli dosyalar

Tekrar Merhaba,

Fonksiyonla çözüme bir ara hücre kullanarak daha kısa ulaşmak olası.

B16 hücresini aracı hücre olarak kullanmak istersek fonksiyon:

Kod:
=EĞER(GÜN(B9)=1;B9+13;TARİH(YIL(B9);AY(B9)+1;14))

C17

Kod:
=EĞER($B$9+SÜTUN(A1)-1<=$B$16;$B$9+SÜTUN(A1)-1;"")

C17 hücresini sağa doğru kopyalayınız.
 

Ekli dosyalar

Sayın Necdet hocam ellerinize sağlık .Tam istediğim şekilde olmuş.Sizden ricam aşağıdaki makroyu düzenlemeye yardımcı olurmusunuz.

Sub makro1()
For sat = 18 To 25 'satır başlangıcı ve bitişi
For sut = 3 To 33 'sütun başlangıcı ve bitişi
GUN = Format(Cells(17, sut).Value, "dddd") 'gün okunuyor 17 tarih satırı
If Cells(sat, 2).Value <> "" Then
If GUN = "Pazar" And Cells(sat, 2).Value <> "" Then
Cells(sat, sut).Value = "p"
Else
Cells(sat, sut).Value = "x"
End If
End If

Next sut
Next sat
End Sub


Ekteki dosyadaki makroda puhantaj hesapla dediğimde c17:AG23 hücresi aralığına kadar puhantajı hesaplıyo .acaba 17. satırdaki son tarih nereye kadar gittiyse puantajdaki verileri oraya kadar yerleştirebilirmiyiz.birde son olarak n16 hücresine başlangıç ayını ve T16 hücresine ise bitiş ayını atabilirmiyiz.Yardımlarınızı bekliyorum.Saygılar
 

Ekli dosyalar

Son düzenleme:
Merhaba,

Kod:
Sub Puantaj()
    Dim Sat As Long, _
        Sut As Integer, _
        Son As Long
    
    Son = Cells(Rows.Count, "A").End(3).Row
    If Son < 18 Then Son = 18
    
    Application.ScreenUpdating = False
        Range("C18:AG" & Son).ClearContents
    For Sat = 18 To Son
        Sut = 3
        If Not Cells(Sat, "B") = "" Then
            Do
                If Weekday(Cells(17, Sut), 2) = 7 Then
                    Cells(Sat, Sut) = "P"
                Else
                    Cells(Sat, Sut) = "X"
                End If
                Sut = Sut + 1
            Loop While Not Cells(17, Sut) = ""
        End If
    Next Sat
    
    Application.ScreenUpdating = True
    MsgBox "İşlem Tamamdır....", vbInformation, "N. YEŞERTENER --> [URL="http://www.excel.web.tr"]www.excel.web.tr[/URL]"
End Sub
 

Ekli dosyalar

Sayın Necdet hocam ellerinize sağlık .Yalnız B sutununda isim girilmediği zamanda tabloyu tamamen aktarıyo.b sutununda hangi satırda veri varsa o satıra puhantaj hesaplaması gerekiyo.Birde sayın hocam N16 hücresine başlangıç ayını ve T16hücresine ise bitiş tarihini yazdırabilirmiyiz
 
Sayın Hocam yeni farkına vardım sıra numarası olduğu zaman hesaplıyo .Bu benim işimi görür .teşekkür ederim
 
Sayın Necdet hocam bir başka tabloda B12 hücresine tarih girdiğimde c17 satırına o ay kaç çekiyorsa en son o ayın tarihini girmesi gerekiyo.Diğer aya geçmemesi gerkiyo .Hesapla butonunu tıkladığımda girilen verilerin o ayın son tarihine kadar girmesi gerekiyo yani bir önceki düzenlemiş olduğunuz tablodaki gibi.Yalnız bu tabloda satırın biri pazarları p gösteriyo ,diğeri ise cumartesi günleri p gösteriyo.Hocam son olarak bu tabloyuda güncellerseniz çok makbule geçer .SAYGILAR.
 

Ekli dosyalar

Son düzenleme:
Merhaba,

7 nolu mesajımdaki kodları ve tabloyu yeniledim.
Ne bileyim ben sıra numarası olduğunda isimlerin boş olacağını :) O kontrolleri de koydum.
 
Sayın Hocam ellerinize sağlık tam istediğim şekilde olmuş.Sizden ricam 10.nolu mesajımada yardımcı olurmusunuz.
 
Son düzenleme:
Merhaba,

Dosyanızda baya bir düzeltme yaptım.

İlk yaptığım sayfa içinde yazdığınız kodları Modüle çıkarttım.

Veri doğrulamak için listenin altına personel listesini koymuşsunuz (bunu önceki dosyanızda da yapmıştınız).

Son satırı bulmak için uygulanan komutta ilgili kolonda olması durumunda son satırın değeri değişmektedir.

Bu nedenle Personel Listesini ayrı bir sayfaya aldım ve Dinamik Alan uyguladım. Veri Doğrulamayı düzenledim.

Günlerin yazılmasını Fonksiyonlarla yaptım.

C17

Kod:
=EĞER(AY($B$12)=AY($B$12+SÜTUN(A1)-1);$B$12+SÜTUN(A1)-1;"")

ve C17 yi sağdaki hücrelere kopyaladım.

Personel_Listesi Ad tanımındaki formül :

Kod:
=KAYDIR(Parametre!$A$2;;;BAĞ_DEĞ_DOLU_SAY(Parametre!$A:$A)-1;1)

Puantajdaki kodda da küçük bir düzeltme yaptım, Kırmızı ile belirttim değişikliği.


Güle güle Kullanınız.



Kod:
Sub Puantaj()
    Dim Sat As Long, _
        Sut As Integer, _
        Son As Long
 
    Son = Cells(Rows.Count, "B").End(3).Row - 1
    If Son < 18 Then Son = 18
 
    Application.ScreenUpdating = False
    Range("C18:AG" & Son).ClearContents
    For Sat = 18 To Son
        Sut = 3
        If Not Cells(Sat, "B") = "" Then
            Do
                If Weekday(Cells(17, Sut), 2)[B][COLOR=red] > 5[/COLOR][/B] Then
                    Cells(Sat, Sut) = "P"
                Else
                    Cells(Sat, Sut) = "X"
                End If
                Sut = Sut + 1
            Loop While Not Cells(17, Sut) = ""
        End If
    Next Sat
 
    Application.ScreenUpdating = True
    MsgBox "İşlem Tamamdır....", vbInformation, "N. YEŞERTENER --> [URL="http://www.excel.web.tr/"]www.excel.web.tr[/URL]"
End Sub
 

Ekli dosyalar

Hocam 7nolu mesajınızda 15.04.2011 gibi tarihi girip puhantaj hesapla dediğimde hata verdi
 
Hocam sizide bunalttığım için çok özür dilerim.13 nolu mesajınızdaki düzenleme çok güzel olmuş .Yalnız benim istediğim ekteki örnek dosyadaki gibi olacak .Bu cetvel puantaj değil 49.Madde tazminat cetveli .
 

Ekli dosyalar

Hocam 7nolu mesajınızda 15.04.2011 gibi tarihi girip puhantaj hesapla dediğimde hata verdi

Ben gönderdiğim dosyada bir hata ile karşılaşmıyorum, hatanın ne olduğunu da söyleyin bari de belki anlarız.
 
Ben gönderdiğim dosyada bir hata ile karşılaşmıyorum, hatanın ne olduğunu da söyleyin bari de belki anlarız.

Hocam sadece 15.04.2011 tarihini girdiğimde işlem tama diyo.Fakat 15.03.2011 dediğimde veya 15.07.2011 gibi tarih girdiğimde hata veriyo


Option Explicit

Sub Puantaj()

Dim Sat As Long, _
Sut As Integer, _
Son As Long

Son = Cells(Rows.Count, "A").End(3).Row
If Son < 18 Then Son = 18

Application.ScreenUpdating = False
Range("C18:AG" & Son).ClearContents
For Sat = 18 To Son
Sut = 3
If Not Cells(Sat, "B") = "" Then
Do
If Weekday(Cells(17, Sut), 2) = 7 Then
Cells(Sat, Sut) = "P"
Else
Cells(Sat, Sut) = "X"
End If
Sut = Sut + 1
Loop While Not Cells(17, Sut) = ""
End If
Next Sat

Application.ScreenUpdating = True
MsgBox "İşlem Tamamdır....", vbInformation, "N. YEŞERTENER --> www.excel.web.tr"

End Sub
 
Son düzenleme:
Hocam sizide bunalttığım için çok özür dilerim.13 nolu mesajınızdaki düzenleme çok güzel olmuş .Yalnız benim istediğim ekteki örnek dosyadaki gibi olacak .Bu cetvel puantaj değil 49.Madde tazminat cetveli .

Ben iki dosya arasındaki farkı anlamadım. 49. Madde tazminat cetveli nedir ne değildir hiç bir fikrim yok.

Yani benim için fransız kaldınız. :)
 
Hocam Orman İşletme Müdürlüğünde Orman Muhafaza Memurlarına ödenen arazi tazminatıdır.Birinci satırdaki kişi tatili pazara denk gelirse ikinci satırdaki kişi ise tatili cumartesi gününe denk geliyor.İkisi birbirini dengeliyo
 
If Weekday(Cells(17, Sut), 2) = 7 Then Sayın Necdet hocam her iki dosyadada aynı hatayı veriyo
01.03.2011 tarihini girdiğimde yukarıdaki makroda hata beliriyo
 
Geri
Üst