• DİKKAT

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

İki tarih aralığındaki pazarları saymasın

vba kodlama ile;
Kod:
Sub pazar59()
Dim tarih As Date, say As Long
Dim baslangic As Date, bitis As Date
baslangic = Range("A1").Value
bitis = Range("B1").Value
For tarih = baslangic To bitis
    If VBA.Weekday(tarih, 2) < 7 Then say = say + 1
Next tarih
MsgBox "Pazar hariç gün sayısı : " & say
End Sub

elinize sağlık rakamsal olarak doğru verdi peki bunu c1 sutünuna nasıl ekleyebilirim

yani b1-a1=c1 verirse sorunum çözülmüş olacak
 
elinize sağlık rakamsal olarak doğru verdi peki bunu c1 sutünuna nasıl ekleyebilirim

yani b1-a1=c1 verirse sorunum çözülmüş olacak

Kırmızı satırı diğer satırın yerine koydum.:cool:
Kod:
Sub pazar59()
Dim tarih As Date, say As Long
Dim baslangic As Date, bitis As Date
baslangic = Range("A1").Value
bitis = Range("B1").Value
For tarih = baslangic To bitis
    If VBA.Weekday(tarih, 2) < 7 Then say = say + 1
Next tarih
[B][COLOR="Red"]range("C1").value = say[/COLOR][/B]
End Sub
 
Çok teşekkür ederim ellerine sağlık çok oluyorum ama
diyelimki benim isim listem var bu kişilerin karşılarına izin başlangıç ve bitiş tarihlerini yazacağım

örnek olarak B4 te isim-soyisim C4 te ilk tarih D4 te son tarih E4 te toplam izin
devamında F4 te ilk tarih G4 te son tarih H4 te toplam izin gibi bunu nasıl uygulayabilirim
sizin yaptığınız sadece A1-B1-C1 OLUYOR çünkü ben size öyle tarif etmiştim.
 
Çok teşekkür ederim ellerine sağlık çok oluyorum ama
diyelimki benim isim listem var bu kişilerin karşılarına izin başlangıç ve bitiş tarihlerini yazacağım

örnek olarak B4 te isim-soyisim C4 te ilk tarih D4 te son tarih E4 te toplam izin
devamında F4 te ilk tarih G4 te son tarih H4 te toplam izin gibi bunu nasıl uygulayabilirim
sizin yaptığınız sadece A1-B1-C1 OLUYOR çünkü ben size öyle tarif etmiştim.

Örnek dosya ekleyiniz.:cool:
 
Çoklu kontroller için yazılan kodu fonksiyona dönüştürmek daha akıllıca olacaktır.

Dosyanıza boş bir modül ekleyin.
Modül içine aşağıdaki kodu uygulayın.

Kod:
Function İŞ_GÜNÜ_SAY(İlk_Tarih, Son_Tarih)
    Rem Pazar günü hariç tüm günler işgünü olarak sayılır...
    For Tarih = İlk_Tarih To Son_Tarih
        If Tarih <> 0 Then
            If WorksheetFunction.Weekday(Tarih, 2) < 7 Then Say = Say + 1
        End If
    Next
    İŞ_GÜNÜ_SAY = Say
End Function

Daha sonra excel sayfanıza dönün ve E4 hücresine aşağıdaki formülü uygulayın. İhtiyacınız kadar alt hücrelere sürükleyin.

Kod:
=İŞ_GÜNÜ_SAY(C4;D4)
 
korhan bey çok teşekkür ederim zar zor denedim oldu çok ufak sapma var sanki ama problem değil
asıl problem dün den beri vba da bir bozukluk var şöyle ki önceden makro oluşturduğumda vba girdiğimde solda project leri sağda da kod ları görüyordum ama şuan tek bir sayfada kodlar açılıyor ne yaptıysam olmadı resimdeki gibi yapamadım
 

Ekli dosyalar

  • vba-code.jpg
    vba-code.jpg
    19.9 KB · Görüntüleme: 5
Kod editörünü açın.
CTRL+R tuşuna basın.
F4 tuşuna basın.

Bu işlemlerden sonra ekranların tekrar açılması gerekiyor.

Fonksiyonda ne gibi bir sapma var. Açıklarsanız düzeltmeye çalışırız.
 
Kod editörünü açın.
CTRL+R tuşuna basın.
F4 tuşuna basın.

Bu işlemlerden sonra ekranların tekrar açılması gerekiyor.

Fonksiyonda ne gibi bir sapma var. Açıklarsanız düzeltmeye çalışırız.

özür dilerim ben yanlış hesaplamışım sapma yok elinize sağlık tekrardan.

resmi tatil yada bayram tatillerine denk geldiği zaman ne yapabiliriz?
 
teşekkür ederim paylaşım için cahilliğimi mazur görün yaptığınız çalışmayı korhan bey in yapmış olduğu makroya nasıl entegre edebilirim
 
Deneyin...

Z1:Z20 aralığına sorguladığınız yıla ait resmi tatil günlerini yazın.

Kod:
=İŞ_GÜNÜ_SAY(A1;A2;Z1:Z20)

Kod:
Function İŞ_GÜNÜ_SAY(İlk_Tarih, Son_Tarih, Resmi_Tatiller)
    Rem Pazar günü ve resmi tatiller hariç tüm günler işgünü olarak sayılır...
    For Tarih = İlk_Tarih To Son_Tarih
        If Tarih <> 0 Then
            If WorksheetFunction.Weekday(Tarih, 2) < 7 Then
                If WorksheetFunction.CountIf(Resmi_Tatiller, Tarih) = 0 Then
                    Say = Say + 1
                End If
            End If
        End If
    Next
    İŞ_GÜNÜ_SAY = Say
End Function
 

Ekli dosyalar

Geri
Üst