• DİKKAT

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

Normal formüllerim makroda gösterimi nasıldır?

Katılım
26 Kasım 2017
Mesajlar
10
Excel Vers. ve Dili
2016
Herkese merhaba, Excel de normal olarak kullandığımız bazı formüllerle bir testi yapıyorum. Fakat veri fazla olunca makro ile yapmamı söylediler. Kullandığım şu normal formüllerin makroda nasıl yazabilirim?

formüller;
1-RANK.ORT(A1:$A$1:$M$50;1)
(Yani bu formülle belli aralıkta girilen değerlerin sıralaması. Burada önemli olan sonuçta tekrarlayan değerler olduğu için her aynı değerin sıra numarası farklı ama burada sıra numarasının ortlaması gerekli. örneğin;
değerler sıra
1 1
2 2
2 3
2 4
3 5
bu sıralamanın aslı 2. değerin tüm sıra değeri 2+3+4=9 9/3=3 olacak.)

2-sütunun toplaması
3- sütunun toplamasının karesi
4-bağ_değ_say(a1:m50)
5= 3.adım/4.adım
6- 5.adımın toplamı
7= 12/(4.adımdaki değer* bu değer+1)*(6.adım)-3(4.adımdaki değer+1)
 
Merhaba. Foruma hoş geldiniz.

Sorunuz biraz karmaşık. Bu nedenle örnek dosya paylaşıp, dosyanızda hangi durumda ne gibi bir sonuç istediğinizi örneklerseniz daha kolay çözüm bulursunuz.

Formüller ve kodlar dosya yapısına göre farklı şekillerde yazılabilirler.
 
Hata değerini kaldırmak için A7 hücresindeki formülü şöyle kullanabilirsiniz:

Kod:
=EĞERHATA(RANK.ORT(A2;$A$2:$C$7;1);"")

Formülü A7 hücresine yazıp diğerlerine kopyalayınız.
 
Merhaba,

İstediğiniz hesaplamanın makrosu:

Sayfa1 deki yaptığınız hesaplamaları silin. Sadece veriler kalsın. Yeni bir sayfa ekleyin. Adı Sayfa2 olsun.

Kod:
Sub Hesapla()
    
    Dim S1 As Worksheet, i As Integer, son As Long, j As Long
    Dim sut As Integer, sat As Long, k As Integer, Wf As WorksheetFunction
    Dim alan1 As Range, alan2 As Range, alan3 As Range, alan4 As Range
    
    Set S1 = Sheets("Sayfa1")
    Set Wf = WorksheetFunction
    
    Application.ScreenUpdating = False
    Sheets("[COLOR="Red"]Sayfa2[/COLOR]").Select [COLOR="Green"]'hesaplamaların listeleneceği sayfa[/COLOR]
    Rows("2:" & Rows.Count).ClearContents
    
    sut = S1.Cells(1, Columns.Count).End(xlToLeft).Column
    sat = S1.Cells.Find("*", , , , xlByRows, xlPrevious).Row
    Set alan1 = S1.Range(S1.Cells(2, 1), S1.Cells(sat, sut))
    
    Cells(sat + 2, "A") = "Topla"
    Cells(sat + 3, "A") = "Karesi"
    Cells(sat + 4, "A") = "Say"
    Cells(sat + 5, "A") = "Böl"
    Cells(sat + 6, "A") = "Genel Toplam"
    Cells(sat + 7, "A") = "Hesapla"
    
    For i = 1 To sut
        son = S1.Cells(Rows.Count, i).End(xlUp).Row
        For j = 2 To son
            Cells(j, i + 1) = Wf.Rank_Avg(S1.Cells(j, i), alan1, 1)
        Next j
        Set alan2 = Range(Cells(2, i + 1), Cells(sat, i + 1))
        Cells(sat + 2, i + 1) = Wf.Sum(alan2)
        Cells(sat + 3, i + 1) = Cells(sat + 2, i + 1) ^ 2
        Cells(sat + 4, i + 1) = Wf.Count(alan2)
        Cells(sat + 5, i + 1) = Cells(sat + 3, i + 1) / Cells(sat + 4, i + 1)
    Next i
    
    k = Cells(sat + 5, Columns.Count).End(xlToLeft).Column
    Set alan3 = Range(Cells(sat + 5, "B"), Cells(sat + 5, k))
    Set alan4 = Range(Cells(sat + 4, "B"), Cells(sat + 4, k))
    Cells(sat + 6, "B") = Wf.Sum(alan3)
    Cells(sat + 7, "B") = "=12/(" & Wf.Sum(alan4) & "*" & Wf.Sum(alan4) & "+1)*(" & Cells(sat + 6, "B").Address & " )-3*(" & Wf.Sum(alan4) & "+1)"
        
    Cells.EntireColumn.AutoFit
        
        
End Sub

.
 
Merhaba, cevap için teşekkürler. Soruma kesin ve net çözüm bu oldu gerçekten çok teşekkür ederim. Allah razı olsun senden. :) @Ömer
 
Geri
Üst