Thursday 20 July 2017

Vba คำนวณ ง่าย เคลื่อนไหว ค่าเฉลี่ย


ค่าเฉลี่ยเคลื่อนที่ตัวอย่างนี้สอนวิธีคำนวณค่าเฉลี่ยเคลื่อนที่ของชุดเวลาใน Excel ค่าเฉลี่ยเคลื่อนที่จะใช้เพื่อทำให้เกิดความผิดปกติ (ยอดเขาและหุบเขา) เพื่อรับรู้แนวโน้มได้ง่ายขึ้น 1. ขั้นแรกให้ดูที่ซีรี่ส์เวลาของเรา 2. ในแท็บข้อมูลคลิกการวิเคราะห์ข้อมูล หมายเหตุ: ไม่สามารถหาปุ่ม Data Analysis คลิกที่นี่เพื่อโหลด Add-in Analysis ToolPak 3. เลือก Moving Average และคลิก OK 4. คลิกที่กล่อง Input Range และเลือกช่วง B2: M2 5. คลิกที่ช่อง Interval และพิมพ์ 6. 6. คลิกที่ Output Range box และเลือก cell B3 8. วาดกราฟของค่าเหล่านี้ คำอธิบาย: เนื่องจากเราตั้งค่าช่วงเป็น 6 ค่าเฉลี่ยเคลื่อนที่คือค่าเฉลี่ยของ 5 จุดข้อมูลก่อนหน้าและจุดข้อมูลปัจจุบัน เป็นผลให้ยอดเขาและหุบเขาจะเรียบออก กราฟแสดงแนวโน้มที่เพิ่มขึ้น Excel ไม่สามารถคำนวณค่าเฉลี่ยเคลื่อนที่สำหรับจุดข้อมูล 5 จุดแรกเนื่องจากไม่มีจุดข้อมูลก่อนหน้านี้เพียงพอ 9. ทำซ้ำขั้นตอนที่ 2 ถึง 8 สำหรับช่วงที่ 2 และช่วงที่ 4 ข้อสรุป: ช่วงที่ใหญ่กว่ายอดเนินและหุบเขาจะยิ่งเรียบขึ้น ช่วงค่าที่น้อยกว่าค่าเฉลี่ยเคลื่อนที่ที่ใกล้เคียงกับจุดข้อมูลจริงวิธีคำนวณค่าเฉลี่ยเคลื่อนที่ใน Excel Excel การวิเคราะห์ข้อมูลสำหรับ Dummies รุ่นที่ 2 คำสั่งการวิเคราะห์ข้อมูลมีเครื่องมือสำหรับคำนวณค่าเฉลี่ยที่เคลื่อนที่และค่าเฉลี่ยที่คลี่คลายได้ใน Excel สมมติว่าเพื่อให้เห็นภาพประกอบคุณได้รวบรวมข้อมูลอุณหภูมิประจำวันแล้ว คุณต้องการคำนวณค่าเฉลี่ยเคลื่อนที่สามวัน 8212 โดยเฉลี่ยในสามวันที่ผ่านมา 8212 ซึ่งเป็นส่วนหนึ่งของการพยากรณ์อากาศที่เรียบง่าย หากต้องการคำนวณค่าเฉลี่ยเคลื่อนที่สำหรับชุดข้อมูลนี้ให้ทำตามขั้นตอนต่อไปนี้ หากต้องการคำนวณค่าเฉลี่ยเคลื่อนที่ก่อนคลิกปุ่มคำสั่ง Data Analysis ข้อมูล tab8217s เมื่อ Excel แสดงไดอะล็อกบ็อกซ์การวิเคราะห์ข้อมูลเลือกรายการย้ายค่าเฉลี่ยจากรายการแล้วคลิกตกลง Excel จะแสดงกล่องโต้ตอบ Moving Average ระบุข้อมูลที่คุณต้องการใช้เพื่อคำนวณค่าเฉลี่ยเคลื่อนที่ คลิกในกล่องข้อความ Input Range ของกล่องโต้ตอบ Moving Average จากนั้นระบุช่วงการป้อนข้อมูลโดยพิมพ์ที่อยู่ช่วงเวิร์กชีทหรือใช้เมาส์เพื่อเลือกช่วงของแผ่นงาน การอ้างอิงช่วงของคุณควรใช้ที่อยู่ของเซลล์สัมบูรณ์ แอดเดรสเซลล์ที่แน่นอนนำหน้าด้วยตัวอักษรคอลัมน์และหมายเลขแถวที่มีเครื่องหมายเช่นใน A1: A10 ถ้าเซลล์แรกในช่วงอินพุทของคุณมีป้ายข้อความเพื่อระบุหรืออธิบายข้อมูลของคุณให้เลือกช่องทำเครื่องหมายในช่องแรก ในกล่องข้อความช่วงบอก Excel จำนวนค่าที่จะรวมไว้ในการคำนวณค่าเฉลี่ยเคลื่อนที่ คุณสามารถคำนวณค่าเฉลี่ยเคลื่อนที่โดยใช้จำนวนค่าใด ๆ โดยค่าเริ่มต้น Excel จะใช้ค่าล่าสุดสามค่าในการคำนวณค่าเฉลี่ยเคลื่อนที่ ในการระบุว่าจะใช้ค่าอื่น ๆ เพื่อคำนวณค่าเฉลี่ยเคลื่อนที่ให้ป้อนค่านั้นลงในช่องข้อความช่วงเวลา บอก Excel ให้ใส่ข้อมูลค่าเฉลี่ยเคลื่อนที่ ใช้กรอบข้อความ Output Range เพื่อระบุช่วงเวิร์กชีตที่คุณต้องการวางข้อมูลค่าเฉลี่ยเคลื่อนที่ ในตัวอย่างเวิร์กชีทข้อมูลค่าเฉลี่ยเคลื่อนที่จะถูกใส่ลงในช่วงเวิร์กชีท B2: B10 (ไม่บังคับ) ระบุว่าคุณต้องการใช้แผนภูมิหรือไม่ ถ้าคุณต้องการแผนภูมิที่แปลงข้อมูลค่าเฉลี่ยเคลื่อนที่ให้เลือกช่องทำเครื่องหมายแผนภูมิเอาท์พุท (ไม่บังคับ) ระบุว่าคุณต้องการคำนวณข้อมูลข้อผิดพลาดมาตรฐานหรือไม่ ถ้าคุณต้องการคำนวณข้อผิดพลาดมาตรฐานสำหรับข้อมูลให้เลือกกล่องกาเครื่องหมายข้อผิดพลาดมาตรฐาน Excel วางค่าความผิดพลาดมาตรฐานถัดจากค่าเฉลี่ยที่เคลื่อนที่ได้ (ข้อมูลข้อผิดพลาดมาตรฐานจะปรากฏเป็น C2: C10) หลังจากที่คุณระบุข้อมูลค่าเฉลี่ยเคลื่อนที่ที่คุณต้องการคำนวณและตำแหน่งที่คุณต้องการแล้วคลิกตกลง Excel คำนวณข้อมูลค่าเฉลี่ยเคลื่อนที่ หมายเหตุ: หาก Excel doesn8217t มีข้อมูลเพียงพอที่จะคำนวณค่าเฉลี่ยเคลื่อนที่สำหรับข้อผิดพลาดมาตรฐานระบบจะวางข้อความแสดงข้อผิดพลาดลงในเซลล์ คุณสามารถดูหลายเซลล์ที่แสดงข้อความแสดงข้อผิดพลาดนี้ว่าเป็นค่านี่เป็นโค้ดที่ควรมีประโยชน์สำหรับผู้ที่ใช้การวิเคราะห์ทางเทคนิคในการซื้อขายและต้องการทดสอบกลยุทธ์ใน Excel คำนวณค่าเฉลี่ยเคลื่อนที่แบบเส้นตรงน้ำหนักและค่าเสี้ยน ต่อไปฉันจะนำเสนอและอธิบายขั้นตอนในการสร้างฟอร์มและรหัส VBA ใส่ชื่อผู้ใช้ UserForm 8211: MAForm เพิ่มสี่ป้ายกำกับจากตัวควบคุมกล่องเครื่องมือ 8211 คำอธิบายภาพตามภาพพิมพ์ด้านบนหน้าจอเพิ่ม ComboBox สำหรับการเลือกชนิดการเคลื่อนย้ายค่าเฉลี่ย เป็นชื่อ comboTypeMA เพิ่มการควบคุม RefEdit สองชุดสำหรับช่วงการป้อนข้อมูลและช่วงเอาท์พุท เพิ่มช่องสองปุ่ม: ชื่อ: buttonSubmit, Caption: Submit and Name: buttonCancel, Caption: Cancel เพื่อสร้างรายการแบบหล่นลงสำหรับการเลือกประเภท MA และโหลดฟอร์มผู้ใช้โมดูลใหม่ จะแทรกด้วยรหัสด้านล่าง จะมีการโหลดรายการ ComboBox ที่มีการเติมข้อมูลโดยย้ายแบบเฉลี่ยและแบบฟอร์มผู้ใช้ Option Sub loadMAForm () ด้วย MAFormboTypeMA. RowSource. AddItem Simple. AddItem Weighted. AddItem Exponential End มี MAForm. Show End Sub ด้านล่างนี้เป็นรหัสที่มาจากปุ่ม Submit ปุ่มย่อยส่วนตัว SubSubmitClick () Dim inputRange, outputRange เป็น Range InputRange จะมีชุดราคาที่ใช้สำหรับการคำนวณ MA และเอาท์พุทRangeจะบรรจุด้วยค่าเฉลี่ยเคลื่อนที่ Dim inputPeriod As Integer มีการประกาศระยะเวลาเฉลี่ยที่เคลื่อนที่ Dim inputAddress, outputAddress As String ช่วงอินพุตและเอาต์พุตที่ประกาศเป็นสตริง หาก comboTypeMA. Value ltgt Exponential และ comboTypeMA. Value ltgt Simple และ comboTypeMA. Value ltgt Weighted True จากนั้น MsgBox โปรดเลือกค่าเฉลี่ยเคลื่อนที่จากรายการ RefInputRange. SetFocus Exit Sub ส่วนหนึ่งของกระบวนการนี้จะบังคับใช้ข้อ จำกัด ข้อแรกเกี่ยวกับข้อมูลที่ส่งมา หากไม่มีประเภทค่าเฉลี่ยเคลื่อนที่ในรายการแบบเลื่อนลงขั้นตอนจะไม่ดำเนินการต่อในขั้นตอนถัดไปและผู้ใช้จะได้รับพร้อมท์ให้เลือกอีกครั้ง ElseIf RefInputRange. Value จากนั้น MsgBox โปรดเลือกช่วงของการป้อนข้อมูล RefInputRange. SetFocus Exit Sub ElseIf RefOutputRange. Value จากนั้น MsgBox กรุณาเลือกช่วงเอาท์พุท RefOutputRange. SetFocus Exit Sub ElseIf RefInputPeriod. Value จากนั้น MsgBox โปรดเลือกช่วงเวลาเฉลี่ยที่เคลื่อนที่ RefInputPeriod. SetFocus Exit Sub ElseIf ไม่ใช่ IsNumeric (RefInputPeriod. Value) จากนั้น MsgBox การย้ายระยะเวลาเฉลี่ยต้องเป็นตัวเลข RefInputPeriod. SetFocus Exit Sub End หากมีการสร้างข้อ จำกัด อื่น ๆ ช่วงการป้อนข้อมูลช่วงเอาต์พุตและระยะเวลาการป้อนข้อมูลต้องไม่เว้นว่างไว้ นอกจากนี้ระยะเวลาเฉลี่ยที่เคลื่อนที่ต้องเป็นตัวเลข (inputAddress) inputPeriod RefInputPeriod. Value อาร์กิวเมนต์สำหรับ inputRange และ outputRange ช่วงจะ inputAddress และ outputAddress ประกาศเป็นสตริง ถ้า inputRange. Columns. Count ltgt 1 จากนั้น MsgBox ช่วงป้อนข้อมูลสามารถมีได้เพียงคอลัมน์เดียว RefInputRange. SetFocus Exit Sub InputRange ต้องมีเพียงคอลัมน์เดียว ป้อนข้อมูล OutputRange. Rows. Count เอาต์พุต Range. Rows. Count จากนั้น MsgBox ช่วงเอาต์พุตมีจำนวนแถวมากกว่าช่วงอินพุท RefInputRange. SetFocus Exit Sub End ถ้า InputRange และ OutputRange ต้องมีจำนวนแถวเท่ากัน Dim RowCount เป็นจำนวนเต็ม RowCount inputRange. Rows. Count Dim cRow เป็นจำนวนเต็ม ReDim inputarray (1 ถึง RowCount) สำหรับ cRow 1 เมื่อต้องการ InputRray RowCount (cRow) inputRange. Cells (cRow, 1) ค่าต่อไป cRow inputarray ถูกประกาศเป็นอาร์เรย์และ it8217s องค์ประกอบ ตรงกับค่าจากแต่ละแถวของช่วงอินพุท ถ้า InputPeriod gt RowCount แล้ว MsgBox จำนวนของการสังเกตที่เลือกคือแอมป์ RowCount และระยะเวลาคือ amp inputPeriod amp ช่วงการป้อนข้อมูลต้องมีองค์ประกอบมากกว่าหรือสูงกว่าช่วงเวลาที่เลือก RefInputRange. SetFocus Exit Sub End ถ้ามีการเพิ่มข้อ จำกัด อีก 8211 ช่วงอินพุทต้องมีองค์ประกอบมากกว่าหรือเท่ากับจำนวนรอบ ถ้า inputPeriod lt 0 แล้ว MsgBox ระยะเวลาการเคลื่อนที่เฉลี่ยต้องสูงกว่า 0 RefInputPeriod. SetFocus Exit Sub End ถ้าระยะเวลาเฉลี่ยเคลื่อนที่ต้องสูงกว่าศูนย์ ReDim outputarray (inputPeriod To RowCount) เป็น Variant นอกจากนี้ยังกำหนดมิติอาร์เรย์ของเอาพุทอาร์เรย์เอาไว้ ขอบเขตล่างของอาร์เรย์คือค่า inputPeriod และขอบเขตบนคือค่าของ RowCount (จำนวนองค์ประกอบใน inputRange) ด้านล่างของขั้นตอนคำนวณค่าเฉลี่ยเคลื่อนที่แบบง่ายๆถ้าการเลือก comboTypeMA เป็นแบบเรียบง่าย SMA ----------------------------------------- หาก comboTypeMA. Value Simple แล้ว Dim i , j As Integer Dim temp As Double สำหรับ i inputPeriod To RowCount temp 0 สำหรับ j (i - (inputPeriod - 1)) ไปที่ i temp temp inputarray (j) ถัดไป j outputarray (i) input ชั่วคราว outputRange. Cells (i, 1) . ค่า outputarray (i) ถัดไป i outputRange. Cells (0, 1). ค่า SMA (amp inputPeriod ampd) โดยทั่วไปขั้นตอนคำนวณค่าเฉลี่ยเคลื่อนที่ของตัวเลข x ล่าสุด (x เท่ากับ InputPeriod) เริ่มต้นด้วยองค์ประกอบของ inputarray เท่ากับ inputPeriod ด้านล่างนี้เป็นตัวอย่างที่ง่ายซึ่งจะแสดงขั้นตอนแต่ละขั้นตอน ในตัวอย่างนี้มีสี่หมายเลข (no01, no02, no03 และ no04) จากแถว 1 ถึงแถว 4 และระยะเวลาเฉลี่ยที่เคลื่อนที่ได้คือ 3. หลังจากคำนวณค่าเฉลี่ยเคลื่อนที่ใหม่แต่ละเซลล์ของ OutputRange จะนำค่าจาก outputarray และหลังจากคำนวณค่าเฉลี่ยเคลื่อนที่ทั้งหมดแล้วในเซลล์ด้านบน outputRange จะมีการแทรกชื่อที่มีประเภทเฉลี่ยและระยะเวลาที่เคลื่อนที่ ส่วนถัดไปนี้จะคำนวณค่าเฉลี่ยเคลื่อนที่แบบเสวนา EMA ------------------------------------------ ElseIf comboTypeMA. Value Exponential แล้ว Dim อัลฟาเป็น Double alpha 2 (inputPeriod 1) สำหรับ j 1 เมื่อต้องการป้อนข้อมูลอุณหภูมิชั่วคราว temp inputarray (j) ค่า outputarray (inputPeriod) ถัดไป InputPeriod ค่า alpha จะถูกกำหนดก่อน เนื่องจากในการคำนวณค่าของ EMA จะขึ้นอยู่กับ EMA ก่อนหน้าค่าแรกจะเป็นค่าเฉลี่ยเคลื่อนที่โดยเฉลี่ย สำหรับ i inputPeriod 1 ถึง RowCount outputarray (i) outputarray (i - 1) alpha (inputarray (i) - outputarray (i - 1)) ถัดไป i เริ่มต้นด้วยค่าเฉลี่ยเคลื่อนที่ที่สองจะคำนวณจากสูตรข้างต้น: EMA ก่อนหน้าบวก alpha คูณด้วยความแตกต่างระหว่างจำนวนปัจจุบันจาก inputarray และค่า EMA ก่อนหน้า สำหรับ i inputPeriod To RowCount outputRange. Cells (i, 1) ค่า outputarray (i) ถัดไป i outputRange. Cells (0, 1). ค่า EMA (amp inputPeriod amp) เช่นเดียวกับรหัสสำหรับ SMA, outputarray จะถูกบรรจุและ เซลล์ด้านบน outputarray จะแสดงประเภทและระยะเวลาของค่าเฉลี่ยเคลื่อนที่ ด้านล่างนี้เป็นรหัสสำหรับคำนวณค่าเฉลี่ยเคลื่อนที่ที่ถ่วงน้ำหนัก WMA ------------------------------------------ ElseIf comboTypeMA. Value Weighted Then Dim temp2 As Integer สำหรับ i inputPeriod To RowCount temp 0 temp2 0 สำหรับ j (i - (inputPeriod - 1)) ไปยัง i temp temp inputarray (j) (j - i inputPeriod) temp2 temp2 (j - i inputPeriod) ถัดไป j outputarray (i. ) temp temp2 outputRange. Cells (i, 1) ค่า outputarray (i) ถัดไป i outputRange. Cells (0, 1).Value WMA (amp inputPeriod amp) สิ้นสุดหากตารางด้านล่างมีขั้นตอนสำหรับการคำนวณแต่ละตัวแปรที่ใช้สำหรับ การคำนวณ WMA เช่นเดียวกับในตัวอย่างก่อนหน้านี้ในตัวอย่างนี้มีตัวเลขสำหรับ inputRange และระยะเวลาการป้อนข้อมูลคือ 3 ด้านล่างเป็นรหัสสุดท้ายของขั้นตอนซึ่งจะยกเลิกการโหลดฟอร์มผู้ใช้ ยกเลิกการโหลด MAForm End Sub ขั้นตอนด้านล่างสำหรับปุ่ม Cancel มันจะถูกเพิ่มเข้าไปในโมดูลเดียวกัน ปุ่มย่อย PrivateCancelClick () ยกเลิกการโหลด MAForm End SubMoving การคำนวณเฉลี่ย Moving Average Calculation การคำนวณเฉลี่ยเคลื่อนที่ฉันพยายามคำนวณค่าเฉลี่ยเคลื่อนที่สำหรับชุดของข้อมูล ฉันต้องการสร้างค่าเฉลี่ยเคลื่อนที่สำหรับแต่ละจุดภายในข้อมูลเพื่อที่จะแสดงในกราฟ ต่อไปนี้เป็นตัวอย่างจาก MS Support ฉันได้ตามจดหมาย แต่ฉันไม่ได้ให้ค่าเฉลี่ยเคลื่อนที่ ซ้ำจุดข้อมูลเดียวกันซ้ำแล้วซ้ำอีก (จุดข้อมูลแรก) ดังนั้นฉันไม่เชื่อว่าการทำงานคือการหา startdate ใน MyRST. Seek line ดังนั้นเพียงแค่ส่งกลับจุดข้อมูลแรก สุดท้าย (อาจจะทำให้ง่ายมาก) ฉันสับสนเกี่ยวกับวิธีการทำงานของดัชนี ฉันคิดว่าคุณสามารถมีคีย์หลักหนึ่งได้ แต่เห็นได้ชัดว่าคุณสามารถสร้างข้อ จำกัด หลายฟิลด์ได้ ฉันได้พยายามทำสิ่งนี้กับแบบสอบถามเกี่ยวกับคำจำกัดความต่อไปนี้: ALTER TABLE Table1 เพิ่ม CONDORD NoDupes UNIQUE (CurrencyType, TransactionDate) ขออภัยเกี่ยวกับความยาวของโพสต์นี้ ขอขอบคุณสำหรับความช่วยเหลือของคุณ ฟังก์ชันตัวอย่างต่อไปนี้คำนวณค่าเฉลี่ยเคลื่อนที่โดยขึ้นอยู่กับตารางที่มีคีย์หลักของฟิลด์หลายฟิลด์ ใช้ค่าเงินตราต่างประเทศประจำสัปดาห์สำหรับตัวอย่างนี้ เมื่อต้องการสร้างฟังก์ชันตัวอย่างทำตามขั้นตอนเหล่านี้: สร้างตารางต่อไปนี้และบันทึกเป็นตารางที่ 1: ตาราง: Table1 --------------------------- -------------- ชื่อฟิลด์: CurrencyType ประเภทข้อมูลคีย์หลัก: ขนาดฟิลด์ข้อความ: 25 ชื่อฟิลด์: TransactionDate คีย์ข้อมูลหลักประเภทข้อมูล: DateTime รูปแบบ: Short Date ชื่อฟิลด์: Rate Data Type: Currency Decimal Places: 4 ดูตารางในมุมมองแผ่นข้อมูลและป้อนค่าต่อไปนี้: CurrencyType TransactionDate Rate ------------------------------- ------------- เยน 8693 0.0079 เยน 81393 0.0082 เยน 82093 0.0085 เยน 82793 0.0088 เยน 9393 0.0091 เครื่องหมาย 8693 0.5600 เครื่องหมาย 81393 0.5700 เครื่องหมาย 82093 0.5800 เครื่องหมาย 82793 0.5900 เครื่องหมาย 9393 0.6000 เปิดโมดูลใหม่และพิมพ์ ฟังก์ชันต่อไปนี้: ฟังก์ชัน MAvgs (Periods As Integer, StartDate, TypeName) Dim MyDB เป็นฐานข้อมูล MyRST As Recordset, MySum As Double Dim i, x ตั้ง MyDB CurrentDb () ตั้ง MyRST MyDB. OpenRecordset (Table1) On Error ต่อไป MyRST. Index ช่วงเวลา PrimaryKey x - 1 เก็บ ReDim (x) MySum 0 สำหรับ i 0 ถึง x MyRST. MoveFirst MyRST. Seek, TypeName, StartDate ตัวแปรสองตัวนี้ควรเป็นลำดับเดียวกับฟิลด์คีย์หลักในตารางของคุณ Store (i) MyRSTRate ถ้า i lt x จากนั้น StartDate StartDate - 7 7 ที่นี่สมมติข้อมูลรายสัปดาห์ 1 สำหรับข้อมูลรายวัน ถ้า StartDate 8693 แล้ว MAvgs Null: ออกจากฟังก์ชัน 8693 จะถูกแทนที่ด้วยวันที่เก่าที่สุดของข้อมูลในตารางของคุณ MySum Store (i) MySum ต่อไป i MAvgs MySum Periods MyRST. Close End Function สร้างแบบสอบถามต่อไปนี้ขึ้นอยู่กับตาราง Table1: Query: Query1 --------------------- ---------------------------------- ฟิลด์: ฟิลด์สกุลเงิน: เขตข้อมูลรายการ: ฟิลด์อัตรา: Expr1: MAvgs (3 , TransactionDate, CurrencyType) หมายเหตุ: แบบสอบถามนี้จะสร้างค่าเฉลี่ยเคลื่อนที่ของข้อมูลอัตราสามสัปดาห์ หากต้องการคำนวณค่าเฉลี่ยเคลื่อนที่ที่ยาวหรือสั้นให้เปลี่ยนหมายเลข 3 ในคอลัมน์ Expr1 แบบสอบถามเป็นค่าที่คุณต้องการคำนวณ เรียกใช้แบบสอบถาม โปรดทราบว่าคุณเห็นค่าเฉลี่ยเคลื่อนที่สามสัปดาห์ต่อไปนี้สำหรับแต่ละสกุลเงิน ค่า Null บ่งชี้ว่าไม่มีค่าก่อนหน้านี้เพียงพอที่จะคำนวณค่าเฉลี่ยของสัปดาห์ที่ผ่านมา CurrencyType TransactionDate อัตรา Expr1 Mark 080693 0.5600 เครื่องหมาย 081393 0.5700 เครื่องหมาย 082093 0.5800 0.57 เครื่องหมาย 082793 0.5900 0.58 เครื่องหมาย 090393 0.6000 0.59 เยน 080693 0.0079 เยน 081393 0.0082 เยน 082093 0.0085 0.0082 เยน 082793 0.0088 0.0085 เยน 090393 0.0091 0.0088 RE: การคำนวณค่าเฉลี่ย dhookom (โปรแกรมเมอร์) 28 10 มิถุนายน 21:15 รหัสนี้ใช้ไม่ได้แค่ไหนมันไม่ได้ใช้ DAO อย่างชัดเจนและไม่ได้พูดถึงว่าเคยทำงานกับตารางที่เชื่อมโยงอยู่ Dim MyDB เป็น DAO. Database, MyRST เป็น DAO. Recordset ฉันจะใช้แบบสอบถามย่อยมากกว่าชุดระเบียน อาจมีลักษณะดังนี้: SELECT CurrencyType, TransactionDate, Rate, (SELECT Avg (Rate) จาก Table1 B WHERE A. CurrencyType B. CurrencyType และ A. TransactionDate ระหว่าง B. TransactionDate - 14 และ B. TransactionDate) จาก Table1 A RE: Moving การคำนวณเฉลี่ยที่สมบูรณ์แบบจริงๆ ผมขอขอบคุณความช่วยเหลือของคุณ. อย่างไรก็ตามรหัสที่คุณให้กำลังคำนวณค่าเฉลี่ยเคลื่อนที่ไปข้างหน้า 14 วัน (การย้ายค่าเฉลี่ยเคลื่อนที่ในระเบียนสำหรับวันที่ 1 ของค่าเฉลี่ยซึ่งฉันต้องการให้เป็นค่าเฉลี่ยย้อนกลับไปอยู่ในบันทึก 14) ฉันเปลี่ยนเพียงเล็กน้อยต่อไปนี้และดูเหมือนจะทำงาน SELECT A. CurrencyType, A. TransactionDate, A. Rate, (เลือกเฉลี่ย (อัตรา) จากตารางที่ 1 B WHERE A. CurrencyType B. CurrencyType และ B. TransactionDate ระหว่างวันที่ A. TransactionDate - 14 AND A. TransactionDate) AS Expr1 จากตารางที่ 1 AS A คุณสามารถดูสิ่งที่ฉันได้ทำคือแลก A สำหรับ B ในข้อที่ นี่เป็นความช่วยเหลือที่ยิ่งใหญ่อย่างมากสำหรับผมและผมก็ชื่นชมจริงๆ ฉันไม่เคยเห็นการเขียนโค้ดแบบนี้มาก่อนและสุจริตฉันไม่เข้าใจจริงๆ ฉันไม่รู้ว่า SQL เข้าใจสิ่งที่ B และ A ได้อย่างไร ฉันสมมติว่าพวกเขากำลังสร้างการอ้างอิงอื่นใน Table1 ถ้าคุณสามารถให้คำแนะนำฉันจะขอบคุณมัน นอกจากนี้อาจมีการอ้างอิงถึงเนื้อหาบางอย่างที่ฉันสามารถมองไปที่ฉันรู้สึกตื่นเต้นมากที่ได้เรียนรู้อะไรใหม่ ๆ เกี่ยวกับ VBASQL และขอขอบคุณสำหรับความช่วยเหลือของคุณ RE: การคำนวณค่าเฉลี่ยเคลื่อนที่ PHV (MIS) 29 Jun 10 12:22 เข้าใจว่า B และ A พวกเขาจะเป็นนามแฝง RE RE: การคำนวณค่าเฉลี่ยโดยประมาณขอขอบคุณ, PHV มีความรู้สึกดีขึ้นแล้ว RE: การคำนวณค่าเฉลี่ยโดยเฉลี่ย joshery420 (TechnicalUser) 6 Jul 10 15:06 ว้าวไม่เคยมอง SQL มาก่อน มีประโยชน์อย่างยิ่ง Im พยายามรับรหัสนี้ทำงานในชุดข้อมูลของฉันเองและ Im ติดปัญหาเฉพาะหนึ่ง. pd2004 ไม่แน่ใจว่ารหัส subquery ใหม่ทำงานเหมือนรหัส VBA เก่าของคุณหรือไม่ แต่ข้อมูลของฉันยังคงแสดงค่าเฉลี่ยโดยเฉลี่ยแม้ว่าจะมีวันที่เพียงพอที่จะสร้างความยาวเฉลี่ยดังกล่าว เช่น. หาก Im มีค่าเฉลี่ยการกลิ้ง 7 วันวันที่ 1 แสดงข้อมูลเดียวกันในคอลัมน์ 7DayAvg ตามที่ปรากฏในคอลัมน์ข้อมูลรายวัน วันที่ 2 จะแสดงค่าเฉลี่ยของวันที่ 1 และ 2 ฯลฯ อย่าให้คนใดคนหนึ่งของคุณรู้จักวิธีแก้ไขปัญหานี้โดยบังเอิญนอกจากนี้ขอขอบคุณสำหรับเคล็ดลับ PHV ที่ยอดเยี่ยม RE: การคำนวณค่าเฉลี่ยโดยเฉลี่ย joshery420 (TechnicalUser) 6 Jul 10 15:08 Woops หมายถึงต้องขอบคุณ dhookom สำหรับเคล็ดลับรหัสไม่ใช่ PHV แต่เดี๋ยวก่อนขอบคุณทั้งสองคน XD RE: การคำนวณค่าเฉลี่ยโดยการย้ายฉันจะปล่อยให้คำแนะนำที่ดีที่สุดสำหรับมืออาชีพที่นี่ แต่คุณสามารถดูได้ในบทความต้นฉบับของฉันว่าตัวอย่างความช่วยเหลือของ Microsoft พยายามที่จะจัดการกับสิ่งนั้นอย่างไร นี่คือรหัส: ถ้า StartDate lt 8693 จากนั้น MAvgs Null: ออกจากฟังก์ชัน 8693 จะถูกแทนที่ด้วยวันที่เร็วที่สุดของข้อมูลในตารางของคุณ พวกเขาเพิ่งออกจากฟังก์ชันถ้าวันที่ไม่เหมาะกับเกณฑ์ ฉันไม่ทราบว่าคุณสามารถรวมสิ่งที่ต้องการลงในรหัสนามแฝงให้โดย dhookem ฉันไม่ชอบวิธีการจัดการปัญหานี้และฉันสงสัยว่า dhookem จะให้โซลูชันที่สง่างามมากขึ้น สำหรับจุดประสงค์ของฉันปัญหาที่คุณกำลังอธิบายไม่ใช่เรื่องที่น่าสนใจ แต่ฉันจะสนใจที่จะได้เห็นแนวทางใด ๆ RE: การคำนวณค่าเฉลี่ย dhookom (Programmer) 6 Jul 10 17:05 คุณสามารถลองใช้ IIf () เพื่อทดสอบจำนวนของระเบียน ข้อควรระวัง: รหัส Notepad ที่ไม่ผ่านการทดสอบดังต่อไปนี้: SELECT A. CurrencyType, A. TransactionDate, A. Rate, IIF ((SELECT Count (Rate) จากตารางที่ 1 C โดยที่ C: CurrencyType C. CurrencyType และ C. TransactionDate A. TransactionDate - 14 และ A. TransactionDate) 7, (SELECT Avg (Rate) จาก Table1 B WHERE A. CurrencyType B. CurrencyType และ B. TransactionDate ระหว่างวันที่ A. TransactionDate - 14 และ A. TransactionDate), Null) AS Expr1 จากตารางที่ 1 AS A RE: การคำนวณค่าเฉลี่ยเคลื่อนที่

No comments:

Post a Comment