Ekteki tabloda her kolon için makro filtreleme yapıp value yapıştıracak

uyelik.ben

Altın Üye
Katılım
20 Mayıs 2020
Mesajlar
50
Excel Vers. ve Dili
Office 365 2020
Altın Üyelik Bitiş Tarihi
26-05-2025
2 güne indirmek ya da 4 güne çıkarmak için makrodaki formül (countifs) satırını değiştirmek gerekir.

0.01 ifadesi yüzde 1'in kod karşılığıdır. 0.02 yaparsanız en az %2 olarak hesap yapar.
Sub uc_gunluk()
sonsut = Cells(10, Columns.Count).End(xlToLeft).Column
son = Cells(Rows.Count, "C").End(3).Row
For gun = sonsut To 6 Step -1
Cells(2, gun) = WorksheetFunction.CountIfs(Range(Cells(11, gun - 2), Cells(son, gun - 2)), ">=0.01", _
Range(Cells(11, gun - 1), Cells(son, gun - 1)), ">=0.01", Range(Cells(11, gun), Cells(son, gun)), ">=0.01")
Next
End Sub

Hocam merhaba, son 2 gün üst üste artanları bulmak istediğimde WorksheetFunction.CountIfs(Range(Cells(11, gun - 2), satırında (-2) yi,(-1) olarak değiştirdim makro doğru sonuç verdi ancak 4 gün üst üste artanları bulmak istediğimde (-2) yi (-3) yaptığımda doğru sonuç vermiyor. Ne yapabilirim ?

Saygılar.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Üç gün kontrolü countifs formülü içindeki üç ayrı seçenekler bulunuyor. Dikkat ederseniz 3 tane >= kontrolü var. 2 gün için 2 sorgu yani 2 >= olmalı, 4 gün için bir sorgu daha ilave edilip 4 tane >= oımalı. Tabi buna göre Range de düzenlenmeli.

Ben countifs olmayan, kaç günlük ve yüzde kaç olacağını sorup ona göre işlem yapan bir makro yazdım ama istediğim sonucu nedense alamadım. Araya da başka işler girince ilgilenemedim. Yarın tekrar bakmaya çalışırım.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,084
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bahsettiğim kodu düzelttim. aşağıdaki kodu çalıştırdığınızda size kaç günlük ve yüzde kaç kontrol edeceğinizi sorar, bunlara tamsayı girerseniz istediğiniz kontrolü yapar ve sonuçları 2. satıra yazar:

PHP:
Sub hisseler()
Dim sonsut As Integer, son As Integer, gunler As Integer, oran As Currency, gun As Integer, hisse As Integer
sonsut = Cells(10, Columns.Count).End(xlToLeft).Column
son = Cells(Rows.Count, "C").End(3).Row - 1
10:
gunler = InputBox("Lütfen kaç günlük kontrol istediğinizi belirtiniz:", cancel = True)
20:
oran = InputBox("Lütfen en az yüzde kaç artışın kontrol edilmesini istediğinizi belirtiniz:", cancel = True)
Range(Cells(2, "D"), Cells(2, sonsut)).ClearContents
If IsNumeric(gunler) = False Then
    MsgBox "Lütfen tamsayı giriniz!", vbInformation + vbOKCancel
    GoTo 10
ElseIf IsNumeric(oran) = False Then
    MsgBox "Lütfen tamsayı giriniz!", vbInformation + vbOKCancel
    GoTo 20
Else
    For gun = sonsut To 3 + gunler Step -1
        adet = 0
        For hisse = 11 To son
            If WorksheetFunction.CountIf(Range(Cells(hisse, gun - gunler + 1), Cells(hisse, gun)), ">=" & oran & "%") = gunler Then
                adet = adet + 1
            End If
        Next
        Cells(2, gun) = adet
    Next
End If
sonsut = Empty: son = Empty: gunler = Empty: oran = Empty: gun = Empty: adet = Empty: hisse = Empty
End Sub
 

uyelik.ben

Altın Üye
Katılım
20 Mayıs 2020
Mesajlar
50
Excel Vers. ve Dili
Office 365 2020
Altın Üyelik Bitiş Tarihi
26-05-2025
Üç gün kontrolü countifs formülü içindeki üç ayrı seçenekler bulunuyor. Dikkat ederseniz 3 tane >= kontrolü var. 2 gün için 2 sorgu yani 2 >= olmalı, 4 gün için bir sorgu daha ilave edilip 4 tane >= oımalı. Tabi buna göre Range de düzenlenmeli.

Ben countifs olmayan, kaç günlük ve yüzde kaç olacağını sorup ona göre işlem yapan bir makro yazdım ama istediğim sonucu nedense alamadım. Araya da başka işler girince ilgilenemedim. Yarın tekrar bakmaya çalışırım.
Hocam dediğiniz gibi sorgu sayısını arttırdım ,. Range lerde de -3'den 0 güne kadar inince çalıştı sorun yok. Bu konuya ilişkin başka sorum olmayacak. Teşekkürler. Farklı sorularda görüşmek üzere.
 
Üst