• DİKKAT

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

sütunda bulunan değerlerin kaçıncı tekrar olduğunu bulmak

Katılım
30 Nisan 2009
Mesajlar
88
Excel Vers. ve Dili
2010 tr
Merhaba,
Aşağıdaki eğer+eğersay bileşimini kullanarak bir sütuna giren değerlerin kaç defa tekrar ettiğini buluyorum. Formül aslında çalışıyor ancak her ay yeni değer eklendiğinden formül hesaplama çok uzun sürmeye başladı.
Formülle yaptığım/yapmak istediğim;

örneğin sütunda 3 tane 10 değeri var ise ilkinin yanına 1, ikinciye 2, üçüncüye 3 değerini getiriyor.Bu değerler alt alta veya aralıklarla yer alabiliyor.
Exceldeki hesaplama süresini düşürebilmem için makronun işime yarayabileceğini düşünüyorum. Yardımcı olacak arkadaşlara teşekkür ederim.


Kod:
=EĞER(EĞERSAY(D:D;D297397)>1;EĞERSAY($D$1:D297397;D297397);"1")
 
Aşağıdaki kodu ilgili sayfanın kod bölümüne yapıştırırsanız D sütunundaki her değişiklikte yanındaki E hücresine kaçıncı olduğunu yazar. Ancak mevcut değerleri değiştirmez. Sadece o an girilen değerin kaçıncı olduğunu yazar:

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
son = Cells(Rows.Count, "D").End(3).Row + 1
If Intersect(Target, Range("D1:D" & son)) Is Nothing Then Exit Sub
Target.Offset(0, 1) = WorksheetFunction.CountIf(Range("D1:D" & son), Target)
End Sub
 
Merhaba,
Makro çalışıyor teşekkürler. Ancak dediğiniz gibi sadece o an girilen değerlerin kaçıncı olduğunu gösteriyor. Tabloma her ay yaklaşık 40-50 bin civarı yeni veri ekliyorum. Değeri bulabilmem için eklediğim veriyi F2+Enter la işlemem gerekiyor. Veri çok olduğundan bu sorun oluşturacak. Mevcut yapıştırılan veriyi işlemek mümkün olmaz mı?
 
Aşağıdaki kodu bir modüle kopyalayıp deneyiniz. bir düğmeye bağladığınızda düğmeye bastıkça E sütunundaki verileri günceller. İki kodu birarada kullanmanız iyi olur. sizinki gibi büyük listelerde sürekli olarak listenin güncellenmesindense bir düğme ile gerektiğinde güncellemek daha uygun olur diye düşünüyorum:

Kod:
Sub sırano()
son = Cells(Rows.Count, "D").End(3).Row
For i = 1 To son
Cells(i, "E") = WorksheetFunction.CountIf(Range("D1:D" & son), Cells(i, "D"))
Next
End Sub
 
Evet bu eklentiyle daha kullanışlı oldu teşekkür ederim. Peki olabilirse son bir ricam daha olacak. Tabloda şuan 400-450 bin civarında satır var. Her defasında güncelleme yaptırmama gerek yok. Yaptığım son eklenen 30-40 binlik verinin eski verilerin içinde olup olmadığını, varsa kaçıncı defa olduğunu bulabilmek. Dolu satırları atlasa güncellemese, boş satırları güncellese mümkün müdür? Mümkün değilse yinede bu şekilde kullanmaya başlayacağım. İlgi ve yardımınıza teşekkür ederim.
 
Yani yukardaki kodda "eğer hücre boşsa D hücresinden kaç tane varsa onu yaz, doluysa bir şey yapma" şeklinde düzeltme istiyorsanız şöyle olabilir:

Kod:
Sub boşlukdoldur()
son = Cells(Rows.Count, "D").End(3).Row
For i = 1 To son
If Cells(i, "E") = "" Then
Cells(i, "E") = WorksheetFunction.CountIf(Range("D1:D" & son), Cells(i, "D"))
End If
Next
End Sub
 
Merhaba. Bu defada çalışma sayfasına son eklediğim (yani boşukları dolacak) satırlardaki değerlerin kendi arasındaki sıralamasını göremedim. Yani yapıştırdığım satırlarda 20 tane 1 değeri varsa 1'lerin tamamına 20 yazıyor. Benim görmem gereken 1'lerin yanına 1-2-3-...20 ye kadar sıralaması veya ilk olan 1 değerinin yanına 1, diğer 1'lerin tamamının yanına 20 yazması. İlk paylaştığınız makro işimi en doğru görmemi sağlayacak olanı. İlginiz ve yardımınıza teşekkür ederim.
 
Ne isterseniz anladığımız kadarıyla onu yapmaya çalışıyoruz. Eskiden farklı bir şey istiyordunuz şimdi farklı bir şey. Son isteğiniz E sütunundaki boş hücrelere, D sütunundaki değer o ana kadarki kaçıncı değerse onu yazdırmak mıdır?

1--3
1--3
1--3
1--
1--

Yukardaki örnekte boş olan yerlere 1 ve 2 mi yazmasını istiyorsunuz yoksa 4-5 mi yoksa 5-5'mi yoksa farklı bir şey mi?
 
Aslında ilk mesajdan son mesaja kadar aynı şeyi demeye çalışıyorum ama insanın kendi bildiğini anlatması zor oluyor. Kurduğunuz cümlede yazan tam istediğim şey aslında "E sütunundaki boş hücrelere, D sütunundaki değer o ana kadarki kaçıncı değerse onu yazdırmak" doğru tarif bu.
 
Aşağıdaki kod tüm sütuna o ana kadarki kaçıncı değer olduğunu yazar

Kod:
Sub sırano()
son = Cells(Rows.Count, "D").End(3).Row
For i = 1 To son
Cells(i, "E") = WorksheetFunction.CountIf(Range("D1:D" & [COLOR="Red"][B]i[/B][/COLOR]), Cells(i, "D"))
Next
End Sub

Aşağıdaki kod ise sütundaki boş hücrelere yine o ana kadarki kaçıncı değer olduğunu yazar:
Kod:
Sub boşlukdoldur()
son = Cells(Rows.Count, "D").End(3).Row
For i = 1 To son
If Cells(i, "E") = "" Then
Cells(i, "E") = WorksheetFunction.CountIf(Range("D1:D" & [COLOR="red"][B]i[/B][/COLOR]), Cells(i, "D"))
End If
Next
End Sub

Önceki kodlarla aralarındaki fark ise EĞERSAY formülünde tüm sütunu değil de o anki satırı baz alması için son yerine i değerinin kullanılmasıdır.
 
Kontrol ettim. Tam istediğimi karşılıyor.Teşekkürler.
 
Geri
Üst