• DİKKAT

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

Koşula göre StandartSapma

Merhaba.

Veri yığını büyük olduğundan kod işlemi biraz yavaş tamamlayabilir.

Yevmiye sayfasındaki veriler hesap kodu'na göre sıralı değilse aşağıdaki kodu çalıştırın.
.
Kod:
[B]Sub SSAPMA()[/B]
Set y = Sheets("Yevmiye"): Set s = Sheets("StandartSapma")
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
For kod = 3 To s.Cells(Rows.Count, 1).End(3).Row
    s.Range("D1:E" & Rows.Count).ClearContents
    y.Range("A3:F" & Rows.Count).AutoFilter Field:=2, Criteria1:=s.Cells(kod, 1).Value
    y.Range("E4:F" & y.Cells(Rows.Count, 1).End(3).Row).Copy s.[D2]
    son = s.Cells(Rows.Count, "D").End(3).Row
If s.Cells(Rows.Count, "D").End(3).Row < 3 Then GoTo 10
s.Cells(kod, 2) = WorksheetFunction.StDev(s.Range("D2:D" & son))
s.Cells(kod, 3) = WorksheetFunction.StDev(s.Range("E2:E" & son))
10: Next
y.Range("A3:F" & Rows.Count).AutoFilter Field:=2
s.Range("D1:E" & Rows.Count).ClearContents
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem Tamamlandı", vbInformation, "..::.. ÖMER BARAN ..::.."
[B]End Sub[/B]
Yevmiye sayfasındaki veriler hesap kodu'na göre sıralı ise aşağıdaki kodu çalıştırın.
.
Kod:
[B]Sub SSAPMA()[/B]
Set y = Sheets("Yevmiye")
Set s = Sheets("StandartSapma")
Set wf = Application.WorksheetFunction
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
For kod = 3 To s.Cells(Rows.Count, 1).End(3).Row
    If wf.CountIf(y.Range("B:B"), s.Cells(kod, 1)) < 2 Then GoTo 10
    ilk = wf.Match(s.Cells(kod, 1), y.Range("B:B"), 0)
    son = ilk + wf.CountIf(y.Range("B:B"), s.Cells(kod, 1)) - 1
        s.Cells(kod, 2) = wf.StDev(y.Range("E" & ilk & ":E" & son))
        s.Cells(kod, 3) = wf.StDev(y.Range("F" & ilk & ":F" & son))
10: Next
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem Tamamlandı", vbInformation, "..::.. ÖMER BARAN ..::.."
[B]End Sub[/B]
 
Merhaba Sayın Ömer Baran

s.Cells(kod, 2) = WorksheetFunction.StDev(s.Range("D2:D" & son))

satırında hata alıyorum.

Ayrıca Yevmiye sayfasında veriler Hesap Koduna göre sıralı geliyor. Bu durum için gönderdiğiniz kodda da bazı hesapları hiç göstermedi. sayıları da epey bir fazla
 
Ben kod'un "sıralı ise" kısmıyla ilgili düzeltme yaparken aynı anda kod'u kopyalamış olabilirsiniz.
Sayfayı yenileyerek kontrol edin ve yeni halini deneyin.
Örnek belgeniz üzerinde denediğimde sorunla karşılaşmadım.
.
 
Şuanda denediğim Office Sürümü 2003 belki o nedenledir. Akşam Office 2016 ile dener size sonucu bildiririm.
Yeni kodları yazdığım halde yine aynı hatalar ile karşılaştım. Yevmiye sayfası 65536 ıncı satıra kadar dolu. Normalde daha fazla.
İlginiz ve yardımlarınız için teşekkürler. Akşam deneyip sonucu yazarım.

Esenlikler dilerim. İyi çalışmalar.
 
Standart sapmanın hesaplanabilmesi için bildiğim kadarıyla veri adetinin en az 2 olması gerekir.
Eğer aranan kod'a ait Yevmiye sayfasında 1 adet kayıt varsa o kod'a ait standart sapma satırı BOŞ olur, bu normal bir durum.
 
Merhaba Ömer BARAN bey.

İlginiz için teşekkürler.
Dediğiniz gibi kodlar çalışıyor. Boş olanlar tek hareket görenler.

Ancak çok garip bir durum ortaya çıktı. Binlik ayraç değişti. Bende bu kodları çalıştırmadan önce kuruş ayracım " , " idi, bu dosyada " . " oldu.
 
GENEL:
-- Standart sapmayı 0'ları işlem dışında tutarak hesaplamak daha anlamlı olabilir,
-- KİKARE analizini konusunu araştırmanızda yarar olabilir.

ONDALIK ve BİNLİK AYRACI:
Verdiğim kod'da binlik ayracına ilişkin herhangi bir işlem yok.
Ayarlarınızı elle kendiniz veya kullandığınız başka bir kod (bu tür kod içeren başka bir excel belgesindeki kod) çalıştırıldığı için değişmiş olabilir.

Binlik ve ondalık ayraçlarına ilişkin aşağıdaki konu sayfasında açıklama mevcut.
-- İsterseniz önce, Sayın uzmanamele'nin (Süleyman Bey) verdiği kod'u
(bir kez, verdiğim kod'u kullanmadığınız bir belgede, bir kez de verdiğim kodun kullanıldığı belgede)
çalıştırın ve sonucu gözlemleyin.
-- Ardından da Sayın OSMA'nın verdiği YAZ kod'unun son iki satırı yeterli sanırım
( ....\sDecimalSymbol", "," ve ....\sDigitGroupingSymbol", "." )
onu çalıştırarak sorunu çözün.

Excel VBA binlik ayracını değiştirme

.
 
Tavsiyelerinizi dikkate alacağım.
Bizim yapmak istediğimiz her hesabın standart sapmasını yada anlamlı bir ortalamasını bulup bu ortalamanın + - %20 aralığı dışında kalan hareketlerini inceleme altına almak. Anlamlı örnekleme belirleye bilmek için.

Bu işlem için Arry liste yöntemini uygulamaya çalıştım ancak bir türlü beceremedim. Hesap koduna eşit olanları Arry liste ekleyeceğim koşula göre sonra bu listenin Standart Sapmasını hesaplayacağım ancak bir türlü yapamadım. Bununla ilgili bir örnek göndere bilir misiniz. Böylelikle birkaç koşula uyan işlemleri Arry liste ekleye bilirim böylelikle dahil edilecek ve hariç tutulacakları kolaylıkla belirleye bilirim.

Ondalık ayırıcıda bölge ve dil ayarlarında değişmemiş, Excelin kendi ayarı değişmiş. Düzelttim şimdi normal çalışıyor.

İlginiz için teşekkürler
 
Ki Kare testi ile de anladığım kadarıyla seçtiğim işlemlerin uygunluğunu hesaplaya bilirim. Araştırmaya devam edeceğim. Tavsiyeleriniz ve ilginiz için teşekkürler.

Arry list konusunda da yardımcı olursanız sevinirim. Koşula göre Arry liste veri ekleme ve bu lsteyi hesaplatma yada yazdırma ile örnek verebilirseniz sevinirim
 
Diziyi oluşturuyorum ancak Standart Sapmasını hesaplamıyor

Merhaba
Aşağıdaki kodlar ile dizi oluşturuyorum ancak dizinin standart sapmasını hesaplamıyor. Nerede hata yapıyorum. İnceleye bilir misiniz.

Sub Dizi()
Dim Dizi(), a As Long, veri As Worksheet, son As Long, i As Long

Set S1 = Sheets("Yevmiye")
Set S2 = Sheets("StandartSapma")
son1 = S1.Range("A1048576").End(xlUp).Row
son2 = S2.Range("A1048576").End(xlUp).Row

ReDim Dizi(son1)

For j = 3 To son2
For i = 4 To son1
If S1.Cells(i, "B").Value = S2.Cells(i, "A").Value Then
Dizi(a) = Array(S1.Cells(i, "E"))
a = a + 1
End If
Next
Ss = Application.StDev(Dizi(a)) 'Dizi nin Standart Sapmasını Hesaplama
S2.Cells(j, "B").Value = Ss
Next

End Sub
 
Tekrar merhaba.

Ekli dosyada bir örnek hazırladım.
Dizi yöntemi değil ama bir deneyin bakalım.
Sonucunu konu sayfasına yazarsınız.

Hazırladığım belgeye, fareyle buraya tıklayarak da erişebilirsiniz.
.
 

Ekli dosyalar

Merhaba Sayın Ömer BARAN

İlginiz için teşekkür ederim.

Altın üye olmadığım için dosyayı indiremiyorum. Dosya indirme sitelerine yükleyebilmeniz mümkün mü ?
 
Altın üyelik durumunu atlamışım.
Önceki cevabıma harici erişim bağlantı adresini ekledim.
Sayfayı yenileyerek bundan önceki son cevabımı tekrar kontrol ediniz.
.
 
Sayın Ömer BARAN

Yardımlarınız için çok teşekkürler. Büyük veri yığınlarıyla uğraşınca hız çok önemli. Vermiş olduğunuz örnek denediğim yöntemler arasında en hızlı ve excele hata verdirmeyeni.

Ben genelde veri analizleri yapıyorum, Exceli ve bilgisayarı yormadan kod yazmak için nelere dikkat etmeliyim. Excel kodlarını analiz eden ve farklı çözüm yolları öneren programlar var mı? Bazı programlama dilleri için buna benzer uygulamalara rastlamıştım.

Esenlikler dilerim. İyi çalışmalar.
 
Geri
Üst