Gün Hesabı

Katılım
9 Ekim 2009
Mesajlar
1,403
Beğeniler
7
Excel Vers. ve Dili
türkçe
2003
#1
Günaydın;
Ekli örnek dosyada X27 hücresine başlangıç tarihini;X28 hücresine bitiş tarihini yazdığımda R34 hücresine bu iki tarih arasında kaç gün olduğunu yazacak.Yalnız CheckBox1(Cumartesi) , CheckBox2 (Pazar) seçili olduğu zaman ve Z3:Z45 hücre aralığana girdiğim tarihleri saymayacak.Yardımıcı olur musunuz ?. Saygılar
http://dosya.co/dku1nmttkf19/GÜN_HESABI.xlsx.html
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
7,106
Beğeniler
100
Excel Vers. ve Dili
İş : Ofis 2016 - Türkçe
Ev: Ofis 2016 - Türkçe
#2
Aşağıdaki kodları sayfanın kod bölümüne yapıştırıp deneyin. X27 ve X28, Z3:Z45 hücrelerini değiştirdikçe ve checkbox'ları tıkladıkça istediğiniz hesaplamayı yapar:

PHP:
Private Sub CheckBox1_Click()
If [X27] <> "" And [X28] <> "" Then
    If IsDate([X27]) = True And IsDate([X28]) = True Then
        If [X28] > [X27] Then
            gun = 0
            For i = [X27] To [X28]
                If WorksheetFunction.CountIf([Z3:Z45], i) > 0 Then
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 6 And CheckBox1 = True Then
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 7 And CheckBox2 = True Then
                    GoTo 10
                Else
                    gun = gun + 1
                End If
10:
            Next
        End If
    End If
End If
[R34] = gun
End Sub

Private Sub CheckBox2_Click()
If [X27] <> "" And [X28] <> "" Then
    If IsDate([X27]) = True And IsDate([X28]) = True Then
        If [X28] > [X27] Then
            gun = 0
            For i = [X27] To [X28]
                If WorksheetFunction.CountIf([Z3:Z45], i) > 0 Then
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 6 And CheckBox1 = True Then
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 7 And CheckBox2 = True Then
                    GoTo 10
                Else
                    gun = gun + 1
                End If
10:
            Next
        End If
    End If
End If
[R34] = gun
                

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [X27:X28, Z3:Z45]) Is Nothing Then Exit Sub
If [X27] <> "" And [X28] <> "" Then
    If IsDate([X27]) = True And IsDate([X28]) = True Then
        If [X28] > [X27] Then
            gun = 0
            For i = [X27] To [X28]
                If WorksheetFunction.CountIf([Z3:Z45], i) > 0 Then
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 6 And CheckBox1 = True Then
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 7 And CheckBox2 = True Then
                    GoTo 10
                Else
                    gun = gun + 1
                End If
10:
            Next
        End If
    End If
End If
[R34] = gun
                
End Sub
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
7,106
Beğeniler
100
Excel Vers. ve Dili
İş : Ofis 2016 - Türkçe
Ev: Ofis 2016 - Türkçe
#4
Sayın İdris Serdar, Z3:Z45 aralığını gözden kaçırmış sanıyorum. Gösterdiği yoldan gidince formül şöyle de oluyor gördüğüm kadarıyla:

Kod:
=TAMİŞGÜNÜ.ULUSL(X27;X28;EĞER(VE(V1=DOĞRU;V2=DOĞRU);1;EĞER(V1=DOĞRU;17;EĞER(V2=DOĞRU;11;"0000000")));Z3:Z45)
 
Katılım
9 Ekim 2009
Mesajlar
1,403
Beğeniler
7
Excel Vers. ve Dili
türkçe
2003
#5
Sayın Yusuf bey ,Sayın İdris bey çok teşekkür ederim.Yusuf bey yapmış olduğunuz makroya ilave olarak CheckBox1(Cumartesi) seçili olduğu zaman sayılmayan cumartesi gününün kaç adet olduğunu x30 hücresine ,CheckBox2 (Pazar) seçili olduğu zaman sayılmayan pazar gününün kaç adet olduğunu x31 hücresine ve Z3:Z45 hücre aralığındaki sayılmayan günlerin adedini de x32 hücresine yazdırmak mümkün müdür ?

http://dosya.co/ye1dzib8bnar/GÜN_HESABI.xlsm.html
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
7,106
Beğeniler
100
Excel Vers. ve Dili
İş : Ofis 2016 - Türkçe
Ev: Ofis 2016 - Türkçe
#6
Aşağıdaki gibi deneyin. Yalnız çakışan günlerde tam olarak hangisini sayar emin değilim. Sayarkan önce Z sütununa sonra cumartesiye, sonra da pazara bakıyor. Bir tarih hem z sütununda varsa hem de cumartesi ise sanıyorum X32^de gösterir:

PHP:
Private Sub CheckBox1_Click()
If [X27] <> "" And [X28] <> "" Then
    If IsDate([X27]) = True And IsDate([X28]) = True Then
        If [X28] > [X27] Then
            gun = 0
            [X30:X32] = ""
            For i = [X27] To [X28]
                If WorksheetFunction.CountIf([Z3:Z45], i) > 0 Then
                    [X32] = [X32] + 1
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 6 And CheckBox1 = True Then
                    [X30] = [X30] + 1
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 7 And CheckBox2 = True Then
                    [X31] = [X31] + 1
                    GoTo 10
                Else
                    gun = gun + 1
                End If
10:
            Next
        End If
    End If
End If
[R34] = gun
End Sub

Private Sub CheckBox2_Click()
If [X27] <> "" And [X28] <> "" Then
    If IsDate([X27]) = True And IsDate([X28]) = True Then
        If [X28] > [X27] Then
            gun = 0
            [X30:X32] = ""
            For i = [X27] To [X28]
                If WorksheetFunction.CountIf([Z3:Z45], i) > 0 Then
                    [X32] = [X32] + 1
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 6 And CheckBox1 = True Then
                    [X30] = [X30] + 1
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 7 And CheckBox2 = True Then
                    [X31] = [X31] + 1
                    GoTo 10
                Else
                    gun = gun + 1
                End If
10:
            Next
        End If
    End If
End If
[R34] = gun
                

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [X27:X28, Z3:Z45]) Is Nothing Then Exit Sub
If [X27] <> "" And [X28] <> "" Then
    If IsDate([X27]) = True And IsDate([X28]) = True Then
        If [X28] > [X27] Then
            gun = 0
            [X30:X32] = ""
            For i = [X27] To [X28]
                If WorksheetFunction.CountIf([Z3:Z45], i) > 0 Then
                    [X32] = [X32] + 1
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 6 And CheckBox1 = True Then
                    [X30] = [X30] + 1
                    GoTo 10
                ElseIf WorksheetFunction.Weekday(i, 2) = 7 And CheckBox2 = True Then
                    [X31] = [X31] + 1
                    GoTo 10
                Else
                    gun = gun + 1
                End If
10:
            Next
        End If
    End If
End If
[R34] = gun
                
End Sub
 
Katılım
9 Ekim 2009
Mesajlar
1,403
Beğeniler
7
Excel Vers. ve Dili
türkçe
2003
#8
Sayın Yusuf bey ve Sayın İdris bey ilgi alaka ve yardımlarınız için çok teşekkür ederim. Aynı dosyada x27 hücresine başlangıç tarihini ;X34 hücresine ise gün sayısını girdiğimizde X28 hücresine bitiş tarihini atabilir mi?.Yine şartlar aynı CheckBox lar seçili ise seçili günleri saymayacak.Ayrıca Z3:Z45 arasındaki yazılı tarihide saymayacak. Ayrıca Y31,Y32 ve Y33 hücresine sayılmayan gün adetlerini yazacak. Formül ve makro ile aynı şekilde yapılır mı?

http://dosya.co/sldcyxijbzyt/GUN_HESABI2.xlsx.html
 
Katılım
9 Ekim 2009
Mesajlar
1,403
Beğeniler
7
Excel Vers. ve Dili
türkçe
2003
#14
İdris bey zannedersem yanlış izah ettim.CheckBox3 ü seçtiğim zaman G3:G45 gücre arasında girdiğim tarihleri hesaplamadan geçecekti.
 
Katılım
9 Ekim 2009
Mesajlar
1,403
Beğeniler
7
Excel Vers. ve Dili
türkçe
2003
#20
CheckBox1 seçili ise Cumartesi ,CheckBox2 seçili ise Pazarı,CheckBox3 seçili ise G3:G45 hücre aralığındaki günleri saymayacak.Seçili değilse tüm günleri hesaplayacak.
 
Üst