Çözüldü Eğerli BağDeğDoluSay formülünü makrolaştırmak

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,096
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Aşağıdaki kodu ilgili sayfanın kod bölümüne uygulayıp deneyiniz.
PHP:
Private Sub Worksheet_Activate()
Dim a As Byte, say As Integer, syf As Worksheet
For a = 8 To 67
    For Each syf In Sheets
        If syf.Name <> ActiveSheet.Name Then
            say = say + WorksheetFunction.CountA(syf.Range("E" & a - 1 & ":Z" & a - 1 & ", AD" & a - 1 & ":AK" & a - 1))
        End If
    Next
    Cells(a, "E").Value = IIf(say = 0, "", say)
    say = 0
Next
End Sub
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.
Elbette başka şekillerde de sonuç alınabilir.
Aşağıda iki alternatif de ben verdim.

EK NOT: İlgili sayfalara veri eklendikçe hesaplamanın yenilenmesi için aşağıdaki kodlardan dilediğinizin içeriğini (sub...end sub arasını),
Private Sub Worksheet_Activate()..... End Sub arasına yapıştırmanız gerekecek.
Worksheet_Activate() kodu, Sayfa1'in adına fareyle sağ tıklayıp, KOD GÖRÜNTÜLEyi seçtiğinizde göreceğiniz
VBA ekranının sağ tarafında oluşturulması gerekecek.

CSS:
Sub DOLU_SAY1()
For sat = 7 To 66
    For Each s In ThisWorkbook.Sheets
        If s.Name <> "Sayfa1" Then
            For sut = 5 To 37
                If sut = 27 Then sut = 30
                If s.Cells(sat, sut) <> "" Then say = say + 1
            Next
        End If
    Next
    If say = 0 Then Sheets("Sayfa1").Cells(sat + 1, 5) = ""
    If say > 0 Then Sheets("Sayfa1").Cells(sat + 1, 5) = say: say = 0
Next
End Sub


Sub DOLU_SAY2()
  With Sheets("Sayfa1").Range("E8:E67")
        .Formula = "=IF(COUNTA('BİRİNCİ GÜN'!E7:Z7,'BİRİNCİ GÜN'!AD7:AK7,'İKİNCİ GÜN'!E7:Z7,'İKİNCİ GÜN'!AD7:AK7,'ÜÇÜNCÜ GÜN'!E7:Z7,'ÜÇÜNCÜ GÜN'!AD7:AK7," & _
                        "'DÖRDÜNCÜ GÜN'!E7:Z7,'DÖRDÜNCÜ GÜN'!AD7:AK7)=0,"""",COUNTA('BİRİNCİ GÜN'!E7:Z7,'BİRİNCİ GÜN'!AD7:AK7," & _
                    "'İKİNCİ GÜN'!E7:Z7,'İKİNCİ GÜN'!AD7:AK7,'ÜÇÜNCÜ GÜN'!E7:Z7,'ÜÇÜNCÜ GÜN'!AD7:AK7,'DÖRDÜNCÜ GÜN'!E7:Z7,'DÖRDÜNCÜ GÜN'!D7:AK7))"
        .Value = .Value
    End With
End Sub
 
Son düzenleme:
Katılım
12 Haziran 2017
Mesajlar
103
Excel Vers. ve Dili
2021 64 Bit Tr
ÖmerBey kod hatasız çalıştı. Teşekkür ederim.

Ömer BARAN kodlar hatasız çalışıyor. Teşekkür ederim.
Kodda Düzeltme: İkinci önerinizdeki formülün sonunda yer alan 'DÖRDÜNCÜ GÜN'D7:AK7 aralığı eksik kopyalanmış. 'DÖRDÜNCÜ GÜN'AD7:AK7 olmalı.
Bilgi verme amaçlı yazdım.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,096
Excel Vers. ve Dili
2007 Türkçe
Rica ederim, iyi çalışmalar diliyorum.
 
Üst