• DİKKAT

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

Tekerrür adedini tüm sayfalarda sorgulamak

  • Konbuyu başlatan Konbuyu başlatan antonio
  • Başlangıç tarihi Başlangıç tarihi

antonio

Destek Ekibi
Destek Ekibi
Katılım
13 Şubat 2011
Mesajlar
1,167
Excel Vers. ve Dili
Microsoft Office Professional Plus 2013 Türkçe
Tüm sayfalarda ki isimlerin tekerrür sayılarını tüm sayfalarda sorgulayıp tekerrür sayısını sağında ki hücreye yazdırmak istiyorum. Makro ile bir değerin tüm sayfalarda ki tekerrür sayısını nasıl bir formülle yapabileceğimi bulamadım. Örnek dosya ektedir. Dönüş için önceden teşekkürler.
 

Ekli dosyalar

Kod:
=EĞERSAY(Sayfa1!$B$2:$B$24;B2)+EĞERSAY(Sayfa2!$B$2:$B$41;B2)++EĞERSAY(Sayfa3!$B$2:$B$41;B2)
 

Ekli dosyalar

Tüm sayfalarda ki isimlerin tekerrür sayılarını tüm sayfalarda sorgulayıp tekerrür sayısını sağında ki hücreye yazdırmak istiyorum. Makro ile bir değerin tüm sayfalarda ki tekerrür sayısını nasıl bir formülle yapabileceğimi bulamadım. Örnek dosya ektedir. Dönüş için önceden teşekkürler.

.

Dosyanız ekte.

Dört çözüm verilmiştir.

.
 

Ekli dosyalar

Sayın gulvadi ve Sayın yurttaş, ikinize de teşekkür ederim. Sayın yurttaş, sizin örneklerinizi referans olarak bilgisayarıma kaydettim. Örnek dosyada 3 sayfa vardı. Böyle olunca sizler yapılacak en iyi yöntemi önerdiniz. Ancak kullanmak istediğim dosyadaki sayısı 30 yada daha fazla da olabilir. Her sayfada ki liste farklı uzunlukta olabiliyor. Her sayfanın ilk satırına elle formül girip bunu son satıra kadar sürüklemek pek pratik yöntem olmayabilir.
Sayfa sayısını, her sayfadaki satır sayısını otomatik olarak algılayıp, sorgulamayı her sayfanın her satırı için yapan bir makro kodu daha çok işime yarayacaktır.
 
Sayfa sayısını, her sayfadaki satır sayısını otomatik olarak algılayıp, sorgulamayı her sayfanın her satırı için yapan bir makro kodu daha çok işime yarayacaktır.

Bu konuda makro ile bir çözüm olabilir mi acaba?
 
Konu günceldir.
 
.

Bir de buna bakın.

.

Sayın Yurttaş Üstat,
Bu soruna gösterdiğiniz ilgi için yeniden sonsuz teşekkürler
dosya ilk açıldığında bir hata uyarısı veriyor. Bunun etkisi var mı, bilmiyorum, ama sadece butonun bulunduğu sayfada ki verilerin tekerrür adedini sorguluyor.

Merakımı bağışlarsanız size sormak istediğim bir şey daha var: Bu siteye üye olduğumdan beri ders niteliğinde sayısız çalışmalarınızdan yararlandım. Bunlar genellikle excel formüllleri ağırlıklı. Ben makrolara fazla ilgi duymadığınız için formülleri tercih ettiğinizi düşünüyordum. Oysa makrolara hakimiyetinizin müthiş olduğunu görüyorum. Neden excel formülleri ile icra ettiğiniz işlevleri makrolarla yapmıyorsunuz? Bunu söylerken formülleri küçük gördüğüm düşüncesinin asla oluşmasını istemiyorum, ama formüllerin silinme riski var, tek tek hücrelere girmek ya da sürükleme ile zaman kaybetme var. Yanılıyor muyum?
Saygılarımla..
 

Ekli dosyalar

  • ~hata uyarısı.JPG
    ~hata uyarısı.JPG
    44.4 KB · Görüntüleme: 4
Sayın Yurttaş Üstat,
Bu soruna gösterdiğiniz ilgi için yeniden sonsuz teşekkürler
dosya ilk açıldığında bir hata uyarısı veriyor. Bunun etkisi var mı, bilmiyorum, ama sadece butonun bulunduğu sayfada ki verilerin tekerrür adedini sorguluyor.

Merakımı bağışlarsanız size sormak istediğim bir şey daha var: Bu siteye üye olduğumdan beri ders niteliğinde sayısız çalışmalarınızdan yararlandım. Bunlar genellikle excel formüllleri ağırlıklı. Ben makrolara fazla ilgi duymadığınız için formülleri tercih ettiğinizi düşünüyordum. Oysa makrolara hakimiyetinizin müthiş olduğunu görüyorum. Neden excel formülleri ile icra ettiğiniz işlevleri makrolarla yapmıyorsunuz? Bunu söylerken formülleri küçük gördüğüm düşüncesinin asla oluşmasını istemiyorum, ama formüllerin silinme riski var, tek tek hücrelere girmek ya da sürükleme ile zaman kaybetme var. Yanılıyor muyum?
Saygılarımla..

.

1. Hata vermemesi gerekiyor.

2.Tüm sayfalarda sayıyor.

3. Excel'in yerleşik fonksiyonları daha hızlı çalışır. Aksi takdirde Excel hiç bir fonksiyon vermez herkesin VBA öğrenmesini ve kullanmasını ister. Esasen yerleşik fonksiyonlar VBA içinde aynen ( Evaluate / Worksheet.Function şeklinde...) kullanılmaktadır.

4. Formüllerin silinmesine karşı önlemler almak her zaman mümkündür. Formülü yazdıktan sonra VBA ile çoğaltır.Yine VBA ile sonuçları Value alabilirsiniz.

5. Burada önemli olan bir uygulama yapıldığında bir araç kullanmaktan ziyade pek çok aracın kombine bir şekilde kullanılarak daha elverişli bir çözüme ulaşmaktır.

4. Excelin yardımından fonksiyonlarla ilgili kullanıcı rahatlıkla bilgi edinmesi mümkündür. Ancak VBA bilmeyen bir kullanıcı için verdiğiniz çözümü ayrıca açıklamanız gerekecektir.

Aklıma şimdilik gelenler bunlar...

.
 
Tüm sayfalarda ki isimlerin tekerrür sayılarını tüm sayfalarda sorgulayıp tekerrür sayısını sağında ki hücreye yazdırmak istiyorum. Makro ile bir değerin tüm sayfalarda ki tekerrür sayısını nasıl bir formülle yapabileceğimi bulamadım. Örnek dosya ektedir. Dönüş için önceden teşekkürler.

. . .

Deneyiniz.

Kod:
Sub kod()
Dim k As Range, ilk_adres As String, a As Long
Dim i  As Long, syf As String
Application.ScreenUpdating = False
Range("C2:C65536").ClearContents

For hh = 2 To [B65536].End(3).Row
If Cells(hh, "B").Value = "" Then
Else
ReDim myarr(1 To 3, 1 To 1)

For i = 1 To Sheets.Count
syf = Sheets(i).Name
Set k = Sheets(syf).Cells.Find(Cells(hh, "B").Value, , xlValues, xlWhole, , 1)

If Not k Is Nothing Then
ilk_adres = k.Address
Do
a = a + 1
ReDim Preserve myarr(1 To 3, 1 To a)
Set k = Sheets(syf).Cells.FindNext(k)
Loop While ilk_adres <> k.Address And Not k Is Nothing
End If
Next i
Set k = Nothing
Cells(hh, "C").Value = Format(a, "#,##0")
End If
a = Empty
i = Empty
Next hh
Application.ScreenUpdating = True
MsgBox " B i t t i "

End Sub

. . .
 
. . .

Deneyiniz.

Kod:
Sub kod()
Dim k As Range, ilk_adres As String, a As Long
Dim i  As Long, syf As String
Application.ScreenUpdating = False
Range("C2:C65536").ClearContents

For hh = 2 To [B65536].End(3).Row
If Cells(hh, "B").Value = "" Then
Else
ReDim myarr(1 To 3, 1 To 1)

For i = 1 To Sheets.Count
syf = Sheets(i).Name
Set k = Sheets(syf).Cells.Find(Cells(hh, "B").Value, , xlValues, xlWhole, , 1)

If Not k Is Nothing Then
ilk_adres = k.Address
Do
a = a + 1
ReDim Preserve myarr(1 To 3, 1 To a)
Set k = Sheets(syf).Cells.FindNext(k)
Loop While ilk_adres <> k.Address And Not k Is Nothing
End If
Next i
Set k = Nothing
Cells(hh, "C").Value = Format(a, "#,##0")
End If
a = Empty
i = Empty
Next hh
Application.ScreenUpdating = True
MsgBox " B i t t i "

End Sub

. . .
Hüseyin Hocam,
İlginiz için çok teşekkür ederim. Birinci sayfada ki verilerin karşısına tekerrür adetlerini yazıyor, ama sonra ki sayfalar için yapmıyor.
 
. . .

Kodlayamayı her sayfa için manuel çalıştırmak üzere yaptım.
Her sayfayı açıp, kodları çalıştırmanız gerekiyor.

Tekerrür rakamlarını kontrol edin doğru veriyor mu. Tüm sayfalarda çalışmasınıda yaparız.

. . .
 
.

İki dosya yaptım.

Birisi raporluyor. Diğeri her sayfada sayıyor.

Artık hangisi işinize yararsa...

.
Sayın Yurttaş, her iki çalışmanızı inceledim. Birinci çalışmanız (tüm sayfalarda sayım yapan) sorunsuz çalışıyor. Yeni bir sayfa ilave edildiği zaman yeni sayfayı da dikkate alarak hesap yapıyor. Ancak raporlama yapan ikinci çalışmanız; yeni bir sayfa ilave edildiği zaman bunu dikkate almıyor.
Birinci çalışmanız benim için yeterli bir referanstır. Bu güzel çalışmanız için çok teşekkür ederim. Emeğinize ve paylaşımcı yüreğinize sağlık.
 
Geri
Üst