Page 1 of 1

การหา average and stdev

Posted: Thu Apr 26, 2012 11:40 am
by Palmib
จากไฟล์ที่แนบมานะคะ อยากทราบว่าถ้าจะหา
average and stdev ของคอลัมม์ทุกคอลัมม์
เลยอ่ะค่ะ แต่ความจริงใช้แค่คอลัมม์ที่เป็นทศนิยม
แต่ว่า ต้องทำเป็นมาโครอ่าค่ะ แล้วทีนี้
จำนวนของ row มันจะไม่แม่นอน จะต้องปรับเปลี่ยน
โค้ดยังไงหรอคะ

Code: Select all

    Range("A1").Select
    ActiveWindow.SmallScroll ToRight:=1
    Selection.End(xlDown).Select
    Selection.Offset(1, 0).Select
    ActiveCell.FormulaR1C1 = "=AVERAGE(R[-33]C:R[-1]C)"
    Selection.AutoFill Destination:=Range(Selection, Selection.End(xlToRight)), Type:=xlFillDefault
โค้ดนี่แค่หา AVERAGE อย่างเดียวอ่ะคะ

Re: การหา average and stdev

Posted: Thu Apr 26, 2012 1:53 pm
by bank9597
:D พยายามทำความเข้าใจโจทย์อยู๋ครับ แต่ยังไม่เข้าใจ

อธิบายแบบละเอียดอีกครั้งได้ไหมครับ :D

Re: การหา average and stdev

Posted: Thu Apr 26, 2012 2:28 pm
by Palmib
ฮ่าฮ่า :lol: ขอโทษนะคะ ที่พิมพ์ไม่ค่อยรู้เรื่อง

เอาใหม่นะคะคืออยากหา average and stdev แล้วให้มันอยู่
เป็น 2 rows ล่างสุดเลยค่ะ ของแต่ละคอลลัมม์
แต่ทีนี้ข้อมูลในไฟล์ที่แนบไปมันจะได้มาจากการกรองอีกทีหนึ่งอ่าค่ะ
ทีนี้การกรองมันก็แล้วแต่เราจะทำหนดตัวกรองใช่ไหมคะ
ทีนี้ จำนวน row มันเลยไม่ฟิกอ่ะค่ะ ก็เลยไม่รู้ว่าจะแก้

ActiveCell.FormulaR1C1 = "=AVERAGE(R[-33]C:R[-1]C)"

range ของการหายังงัยดีเวลาเขียนใน VBA อ่ะค่ะ
พอเข้าใจมากขึ้นไหมคะ??

Re: การหา average and stdev

Posted: Thu Apr 26, 2012 2:41 pm
by snasui
:D ลองดูตัวอย่าง Code ตามด้านล่างครับ

Code: Select all

Dim rAll As Range
Dim lng As Long
Dim i As Integer
Dim j As Integer
lng = Range("B" & Rows.Count).End(xlUp).Row
i = Range("B1", Range("B1").End(xlToRight)).Count
Set rAll = Range("B2:B" & lng)
For j = 1 To i
    rAll(rAll.Count).Offset(1, 0) = Application.Average(rAll)
    rAll(rAll.Count).Offset(2, 0) = Application.StDev(rAll)
    Set rAll = rAll.Offset(0, 1)
Next j

Re: การหา average and stdev

Posted: Thu Apr 26, 2012 2:56 pm
by Palmib
ขอบคุณมากๆๆๆนะคะ :D