• DİKKAT

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

COUNTIF(EĞERSAY) ile basit bir macro

Katılım
14 Ocak 2009
Mesajlar
14
Excel Vers. ve Dili
excel 2003
excel 2007 tr
Merhaba Arkadaşlar;
Elimdeki excelde bir sayfadaki tekerrür eden değerleri gösteren bir macro kullanmak istiyorum. COUNTIF fonksiyonunu kullandım ancak çok fazla değer olduğu için macro ile otomatik olarak yapabilirim diye düşünüyorum.

C2:C3000 arası çeşitli sayılar var. D2: D3000 arasında ise bu sayılar kaçar kere yazılmış görmek istiyorum.

Mesela:

C2 1 D2 1
C3 2 D3 2
C4 2 D4
C5 3 D5 3
C6 3 D6
C7 3 D7
C8 4 D8 4
C9 4 D9
C10 4 D10
C11 4 D11

Yukarıdaki örneğimden anlaşıldı mı bilmiyorum ama örnekteki gibi düzgün girilmemiş değerler için de çalışacak bir macro yapılabilir mi? C2'den C11'e kadar değerler girilmiş. Toplamda bir tane 1 var mesela, karşısındaki satıra, D2'ye 1 adet olduğu yazıyor. Aynı şekilde C8'de 4 var ve tüm değerlere bakıyor D8'e 4 tane 4 var diyor.

Dediğim gibi ben EĞERSAY ile tüm değerleri saydırdım ama çok fazla değer olduğu için gene el ile düzeltmek gerekiyor. Bunu bana anlattığım örnekteki gibi gösterecek bir macro istiyorum. Yardımcı olursanız çok sevinirim. (excel 2003 türkçe) :redface:
 
Ek dosya

Ekte düzenlediğim bir döküman var. Burada ben EĞERSAY fonksiyonunu kullanarak aynı değerleri saydırdım. Ama elle sadece en yüksek değeri bırakmak suratiyle diğer değerleri sildim. C sütunundaki değerlerin bazıları karışık yani ard arda değil o nedenle silerken de dikkat etmek gerekiyor. Umarım anlaşılmıştır :) Bunu otomatik yapacak bir macro istiyorum ben
 

Ekli dosyalar

Kod:
Sub say()
    For i = 2 To [c65536].End(3).Row
        Cells(i, 4) = WorksheetFunction.CountIf(Columns(3), Cells(i, 3))
    Next
End Sub
 
Aşağıdaki kodu dener misin ? ( Alternatif olarak)
Kod:
Sub say()
For i = 2 To [C65536].End(3).Row
If Cells(i, 3) = Cells(i - 1, 3) Then
Else
Cells(i, 4) = WorksheetFunction.CountIf(Range("C2:C" & [C65536].End(3).Row), Cells(i, 3))
End If
Next i
MsgBox " İşlem Tamamdır "
End Sub
 
Son düzenleme:
Teşekkür ederim. Benim dediğimde biraz farklı aslında... Sizin kodlama ile sayılarını veriyor ama hepsinin karşısında değil sadece ilk değerin karşısında yazsın istiyorum. Countif ile elle yapmak zorunda kaldığım da bu olmuştu. Bunu nasıl yapabilirim? Yani eklediğim dökümanda en başta 9362 yazılmış 3 tane var. ilk değerin ya da son değerin karşısında 3 tane olduğu yazsın istiyorum. 1 taneyse zaten sorun yok ama 1'den fazlaysa sadece ilk değerin karşısında ya da son değerin karşısında yazsın istiyorum. Countif fonk. ile yapamadım bunu, el ile silmem gerekti sonradan.
 
ozgretmen, sizin kodlamada sadece msgbox'lar geldi hiçbir işlem yapmadı maalesef.
 
Ekte düzenlediğim bir döküman var. Burada ben EĞERSAY fonksiyonunu kullanarak aynı değerleri saydırdım. Ama elle sadece en yüksek değeri bırakmak suratiyle diğer değerleri sildim. C sütunundaki değerlerin bazıları karışık yani ard arda değil o nedenle silerken de dikkat etmek gerekiyor. Umarım anlaşılmıştır :) Bunu otomatik yapacak bir macro istiyorum ben

Formülle dosyanız ekte.

.
 

Ekli dosyalar

yurttas teşekkür ederim ama nasıl yaptığını da yazabilir misin? kodlamasını nereden görebilirim bilemedim ya kusura bakma :/
 
Başka dökümanlara da uygulayacağım o nedenle görmem lazım :(
 
tamam teşekkür ederim ben makro ile yaptınız sanmıştım. dikkat etmedim. 3000'den fazla satır olunca aşağı doğru sürüklemek yerine macro ile otomatik yapılabilir mi diye merak ettim ben. böyle birşey biliyor musunuz peki?
 
Merhaba

Macrolu bir çözümde benden (Syn yurttaş üstadımın formülü ile aynı)

Kod:
Sub saydir()
For i = 2 To [c65536].End(3).Row
    If Cells(i, 3) = Cells(i - 1, 3) Then
        Cells(i, 4) = ""
    Else
        Cells(i, 4) = WorksheetFunction.CountIf(Range("C2:C" & [c65536].End(3).Row), Cells(i, 3))
    End If
Next
End Sub
 
Cevaplar verildi ama bende kodları düzenledim.sadece yanlış bir anlaşılmadan dolayı o kodları vermişitm.Hayırlısı...İyi çalışmalar dilerim.
 
herkese çok teşekkürler. Ayhan Ercan arkadaşımız son noktayı koydu valla...süper oldu :D Teşekkürler
 
benimde bu konuya benzer bir sorum var.
eğersay fonksiyonuna bir koşul daha eklemek mümkünmüdür?
yani bir sayfada veri varken diğer sayfada rapor almak için, fakat aynı anda iki koşul sağlayarak sayı vermesini istiyorum...

ekte örnek bir dosya gönderdim. bu rnekte aynı tarihteki yeni ve eski koşullarını farklı sütunlarda saydıracağım.
yani aynı tarihte kaç tane yeni yazılmış? bunu görmek istiyorum.

yardımcı olursanız çok mutlu olurum.
 

Ekli dosyalar

Son düzenleme:
birden fazla koşullu eğersay???

acaba çözümümü yoktur bu konunun?
 
buldum..

ben bir dizi formülle yaptım istediğimi . teşekkür ederim. kolay gelsin.
 
"Topla.çarpım" fonksiyonunu kullanın.
 
teşekkür ederim. evet topla.çarpım ile çözdüm pronlemimi. tabiiki sizin geçmiş örneklerinizi inceleyerek ulaştım. emeğinize sağlık.
 
Geri
Üst