การย้าย ค่าเฉลี่ย vba รหัส


ตารางเฉลี่ยกลิ้งด้านล่างเราจะดูที่โปรแกรมใน Excel VBA ซึ่งจะสร้างตารางเฉลี่ยโดยเฉลี่ย วางบรรทัดคำสั่งในแผ่นงานของคุณและเพิ่มบรรทัดรหัสต่อไปนี้: Range (quotB3quot).Value WorksheetFunction. RandBetween (0, 100) บรรทัดรหัสนี้ป้อนตัวเลขสุ่มระหว่าง 0 ถึง 100 ลงในเซลล์ B3 เราต้องการให้ Excel VBA ใช้มูลค่าหุ้นใหม่และวางไว้ที่อันดับแรกของตารางเฉลี่ยโดยเฉลี่ย ค่าอื่น ๆ ทั้งหมดควรย้ายลงหนึ่งแห่งและควรลบค่าสุดท้าย สร้างกิจกรรมการเปลี่ยนแปลงแผ่นงาน รหัสที่เพิ่มเข้าไปใน Worksheet Change Event จะถูกดำเนินการโดย Excel VBA เมื่อคุณเปลี่ยนเซลล์บนเวิร์กชีท 2. ดับเบิลคลิกที่ Sheet1 (Sheet1) ใน Project Explorer 3. เลือกแผ่นงานจากรายการแบบหล่นลงด้านซ้าย เลือกเปลี่ยนจากรายการแบบเลื่อนลงด้านขวา เพิ่มบรรทัดรหัสต่อไปนี้ลงในเหตุการณ์การเปลี่ยนแปลงเวิร์กชีท: 4. ประกาศตัวแปรที่เรียกว่า newvalue ของ Type Integer และสองช่วง (firstfourvalues ​​และ lastfourvalues) Dim newvalue As Integer firstfourvalues ​​As Range, lastfourvalues ​​As Range 5. เหตุการณ์การเปลี่ยนแปลงแผ่นงานจะรับฟังการเปลี่ยนแปลงทั้งหมดใน Sheet1 เราต้องการให้ Excel VBA ทำอะไรบางอย่างหากมีการเปลี่ยนแปลงอะไรในเซลล์ B3 เมื่อต้องการทำเช่นนี้เพิ่มบรรทัดรหัสต่อไปนี้: ถ้า Target. Address quotB3quot จากนั้น 6. เราเตรียม newvalue ด้วยค่าของเซลล์ B3 ค่าแรกด้วย Range (quotD3: D6quot) และ lastfourvalues ​​ที่มี Range (quotD4: D7quot) newvalue Range (quotB3quot). ค่ากำหนด firstfourvalues ​​Range (quotD3: D6quot) Set lastfourvalues ​​Range (quotD4: D7quot) 7. ตอนนี้มาพร้อมกับเคล็ดลับง่ายๆ เราต้องการอัปเดตตารางเฉลี่ยโดยรวม คุณสามารถทำได้โดยการแทนที่สี่ค่าล่าสุดด้วยสี่ค่าแรกของตารางและวางมูลค่าสต็อคใหม่ในตำแหน่งแรก lastfourvalues. Value firstfourvalues. Value Range (quotD3quot). Value newvalue 8. อย่าลืมปิดคำสั่ง if 9. ป้อนสูตร AVERAGE (D3: D7) ลงในเซลล์ D8 10. ทดสอบโปรแกรมด้วยการคลิกที่ปุ่มคำสั่งฉันต้องการคำนวณค่าเฉลี่ยเคลื่อนที่ของคำพูดสุดท้ายกล่าวคือ 20 ตัวเลขของคอลัมน์ ปัญหาคือบางส่วนของเซลล์ของคอลัมน์อาจว่างเปล่าพวกเขาควรจะละเลย ตัวอย่าง: ค่าเฉลี่ยเคลื่อนที่ของสามตัวสุดท้ายคือ (155167201) 3. Ive พยายามใช้นี้โดยใช้ค่าเฉลี่ย, ชดเชยดัชนี แต่ฉันก็ไม่ทราบ. ฉันนิดหน่อยคุ้นเคยกับมาโครดังนั้นโซลูชันจะทำงานได้ดี: MovingAverage (A13) ขอขอบคุณสำหรับคำแนะนำหรือคำแนะนำที่ถาม 12 มีนาคม 11 เวลา 15:36 ป้อนข้อมูลนี้ด้วย controlshiftenter เพื่อทำให้เป็นสูตรอาร์เรย์ ค่านี้จะเป็นค่าล่าสุดสามค่า ถ้าคุณต้องการมากหรือน้อยเปลี่ยนสองอินสแตนซ์ของ 3 ในสูตรเพื่อสิ่งที่คุณต้องการ ส่วนนี้จะส่งกลับจำนวนแถวสูงสุดที่ 4 ของเซลล์ทั้งหมดที่มีค่าหรือ 5 ในตัวอย่างของคุณเนื่องจากแถวที่ 6, 8 และ 9 เป็นแถวที่ 1 ถึงสูงสุดที่ 3 ซึ่งมีค่า ส่วนนี้จะส่งคืน 9 TRUE หรือ FALSEs ตามจำนวนแถวที่มีขนาดใหญ่กว่าอันดับที่ 4 มากที่สุด คูณค่าใน A1: A9 โดย 9 TRUEs หรือ FALSEs TRUE ถูกแปลงเป็น 1 และ FALSE เป็นศูนย์ นี้จะออกจากฟังก์ชัน SUM เช่นนี้เนื่องจากค่าทั้งหมดข้างต้น 155 ไม่เป็นไปตามเกณฑ์จำนวนแถวคูณด้วยศูนย์ ฉันได้เขียนสคริปต์สั้น ๆ ใน VBA แล้ว Hopefull มันไม่สิ่งที่คุณต้องการ นี่คือ: 1) ฉันได้กำหนดวงเงินไว้ที่ 360 เซลล์แล้ว หมายความว่าสคริปต์จะไม่มองหาเซลล์มากกว่า 360 ถ้าคุณต้องการเปลี่ยนแล้วเปลี่ยนค่าเริ่มต้นของตัวนับ 2) สคริปต์ส่งกลับค่าเฉลี่ยไม่กลม เปลี่ยนแถวสุดท้ายเป็น MovingAverage Round (CDbl (tmp i), 2) 3) การใช้งานเป็นแบบที่คุณต้องการเพียงพิมพ์ MovingAverage (a13) ลงในเซลล์ ความคิดเห็นใด ๆ ยินดีต้อนรับค่าเฉลี่ยใน VBA เฉลี่ยเคลื่อนที่ใน VBA สวัสดี Ive รับมองไปทั่ว MrExcel และส่วนที่เหลือของเว็บ แต่ทุกโพสต์เกี่ยวกับรหัส VBA สำหรับค่าเฉลี่ยเคลื่อนที่ไม่ได้เป็นทางออกสำหรับสิ่งที่ฉันต้องการจะทำ การทำงานกับข้อมูลจำนวนมาก ประมาณ 10 ปีของการคืนหุ้นทุกวันและทำ 10 สต็อกต่อครั้ง (ประมาณ 20 กิโลจุดข้อมูล) และฉันจำเป็นต้องคำนวณค่าเฉลี่ยเคลื่อนที่ 10, 50 หรือ 100 วันสำหรับแต่ละสต็อกในแต่ละวัน ฉันรู้วิธีการทำเช่นนี้ในสูตรปกติ แต่ thats ได้ช้าและยังมีแนวโน้มที่จะเกิดข้อผิดพลาดของผู้ใช้ตั้งแต่ 1 จังหวะพลาดสามารถโยนออกเป็นปีของการย้ายค่าเฉลี่ย หลังจากประมาณ 3 วันของการทำงานผมพบว่าโซลูชันที่ทำงาน แต่เป็นวิธีที่ช้ากว่าก่อนนี่คือรหัสที่ Im ทำงานกับตอนนี้ Dim I As Long Dim LastRow เป็น Long LastRow Range (B amp Rows. Count). End (xlUp).Rows l เซลล์ (1, W). ค่าถ้า l 0 แล้ว MsgBox ใส่ช่วงใน C1 GoTo Lastline อื่นสำหรับ il To LastRow - 2 Range (N amp i 2).FormulaR1C1 AVERAGE (RC-12: R แอมป์ l - 1 amp C-12) ถัดไป i Range (N2: N5000) เลือก Selection. Copy Selection. PasteSpecial Paste: xlPasteValues ​​Selection. NumberFormat 00 Application. CutCopyMode False End หากคอลัมน์ที่สองช่วง (o3: o5000).Clear สำหรับ Il To LastRow - 2 Range (o amp i 2).FormulaR1C1 AVERAGE (RC-12: R แอมป์ l - 1 amp C-12) ถัดไป i Range (o2: o5000). เลือก Selection. Copy Selection. Paste วางพิเศษ: xlPasteValues ​​Selection. NumberFormat .00 Application. CutCopyMode เท็จ คอลัมน์ที่สองซ้ำ 8 ครั้งขึ้นไปคอลัมน์ W บรรทัดสุดท้าย: End Sub ผลงานนี้เป็นอย่างดีจากแต่ละบรรทัดที่จุดเริ่มต้นของจุดข้อมูล 10 จุด (เป็นค่าเฉลี่ยเคลื่อนที่ 10 วัน) กรอกข้อมูลในโค้ดจะย้อนกลับไปสิบวันในแต่ละครั้ง . จากนั้นเมื่อถึงจุดสิ้นสุดก็จะคัดลอกและวางค่าของคอลัมน์เพื่อให้สูตรไม่ต้องคำนวณอีกครั้งจากนั้นเป็นต้นไป ปัญหาที่ฉันได้พบคือการไปต่อไปลงรายการสำหรับ 2000 วันเป็นเหลือทน ฉันพยายามที่จะออกกำลังกาย Application. WorksheetFunction. Average แต่ฉัน couldnt ได้รับช่วงกำหนดจะเป็นคอลัมน์จำนวน X วันข้างต้นแต่ละบรรทัด คนสามารถช่วยได้โดยที่ 2 (1 n) ตัวห้อย subscript t ใช้เพื่อแสดงถึงเวลาเช่น t-1 หมายถึงระยะเวลาก่อนที่ t และ n ซึ่งผู้ใช้กำหนดโดยอ้างถึงระยะเวลาการค้ำประกันของ EMA ตัวอย่างเช่นค่า EMA ที่เทียบเท่ากับค่าเฉลี่ยเคลื่อนที่แบบง่าย 3 ช่วงมี n จาก 3 ค่าที่มากขึ้นของ n จะเล็กลง ส่งผลให้มีขนาดใหญ่ขึ้น (1) และมี EMA t-1 อยู่ใน EMA t ค่าแรกของ EMA ในชุดข้อมูลเวลาอาจถือได้ว่าเป็นค่าเฉลี่ยเคลื่อนที่ที่น้อยที่สุดของวันที่ 8217 ของราคา ผู้ใช้บางรายอาจต้องการเริ่มต้นค่า EMA แรกตั้งแต่ช่วงที่สองเป็นต้นไปที่ EMA ในช่วง 2 x ช่วง 2 ราคา (1 8211) x ช่วงเวลาราคา 1 ผู้ใช้ควรเข้าใจว่าค่าเฉลี่ยเคลื่อนที่แบบเสวนาคือการขยายตัวแบบอนันต์โดยที่ราคาก่อนหน้านี้มีน้ำหนักน้อยลงเมื่อใช้ EMA t พิจารณาสิ่งต่อไปนี้: ส่งผลให้ EMA มีการตอบสนองและความผันผวนน้อยกว่าค่าเฉลี่ยของค่าเฉลี่ยเคลื่อนที่ การอภิปรายรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้สามารถพบได้ในบทความของฉันเกี่ยวกับตัวกรองการเงินและการวิเคราะห์ทางเทคนิค วิธี A ใช้ฟังก์ชันในขณะที่วิธี B ใช้วิธีย่อยในการคำนวณ CMF วิธี B มีความรวดเร็วและยืดหยุ่นมากขึ้น วางรหัสนี้ลงในหน้าต่างรหัส ThisWorkBook ใน VBA คลิกขวาที่ WorkBook นี้ใน Project Explorer และคลิก View Code Private WorkbookOpen WorkbookOpen () ส่วนที่เหลืออยู่ในโมดูลใด ๆ บอกให้ Excel รวมรายการเหล่านี้ไว้ในรายการฟังก์ชันเพิ่มคำอธิบายให้กับ Excel และสร้างหมวดหมู่ใหม่ที่ชื่อ Technical Indicators มาโครแมโคร Macro: EMA, คำอธิบาย: ส่งกลับค่าเฉลี่ยการเคลื่อนที่แบบ Exponential แอมป์ Chr (10) แอมป์ Chr (10) amp เลือกช่วงเวลาล่าสุด EMA หรือช่วงราคาที่ผ่านมาถ้างวดปัจจุบันเป็นอันดับแรก แอมป์ Chr (10) แอมป์ Chr (10) แอมป์ตามด้วยราคาปัจจุบันและ n (10) แอมป์ Chr (10) แอมป์ Chr (10) แอมป์ปัจจัยการสลายตัวของค่าเฉลี่ยเคลื่อนที่แบบเสวนาถูกคำนวณเป็น alpha2 (n1) ฟังก์ชันสาธารณะ EMA (เมื่อวานนี้ราคา n) ราคาอัลฟาอีมา (1 - alpha) เมื่อวานนี้คุณสามารถคำนวณค่าเฉลี่ยเคลื่อนที่แบบเสวนาได้โดยพิมพ์ลงในเซลล์ใด ๆ EMA (Last EMA Period, Current Price, n) ป้อนราคาช่วงสุดท้ายเป็น EMA งวดล่าสุดถ้าคุณกำลังคำนวณ EMA แรกของชุดข้อมูลของคุณ เมื่อต้องการเรียกใช้เมธอด B คุณต้องคัดลอกส่วนย่อย Runthis จากหน้าใน AccumulationDistribution Line ลงในโมดูลของคุณ นอกจากนี้คุณต้องเรียกใช้ EMA จากหมวดย่อย Runthis เพิ่มบรรทัดต่อไปนี้ไปยังย่อย Runthis วางไว้ทางด้านขวาก่อน End Sub และปิดใช้งานแมโครอื่น ๆ ทั้งหมดที่ Runthis จะเรียก Sub นี้จะเริ่มคำนวณ EMA ตั้งแต่ t2 เป็นต้นไป Sub EMA (close1 เป็นช่วงเอาท์พุทเป็น Range, n As Long) close0 close1 ( 1, 1).Address (False, False) close1a close1 (2, 1).Address (False, False) เอาท์พุทเอาต์พุต 1 (1, 1).Address (False, False) เอาต์พุต (2, 1). ค่า 2 (1 แอมป์แอมป์ amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp amp close0 เช่นเดียวกับที่คุณเพิ่งอ่าน Digg หรือ Tipd วัตถุประสงค์ของ Finance4Traders คือการช่วยให้ผู้ค้าเริ่มต้นโดยนำพวกเขาเป็นกลางการวิจัยและความคิด ตั้งแต่ปลายปีพศ. 2548 เป็นต้นมาผมได้พัฒนายุทธศาสตร์การซื้อขายโดยใช้พื้นฐานส่วนบุคคล ไม่ใช่รูปแบบเหล่านี้ทั้งหมดเหมาะสำหรับฉัน แต่นักลงทุนรายอื่นหรือผู้ค้าอาจเห็นว่ามีประโยชน์ หลังจากที่ทุกคนมีเป้าหมายการลงทุนที่แตกต่างกันและนิสัย Finance4Traders กลายเป็นแพลตฟอร์มที่สะดวกในการเผยแพร่งานของฉัน (อ่านเพิ่มเติมเกี่ยวกับ Finance4Traders) กรุณาใช้เว็บไซต์นี้ในลักษณะที่เหมาะสมและมีน้ำใจ ซึ่งหมายความว่าคุณควรอ้างอิง Finance4Traders อย่างน้อยให้ลิงก์ย้อนกลับไปยังไซต์นี้หากคุณใช้เนื้อหาใด ๆ ของเรา นอกจากนี้คุณยังไม่ได้รับอนุญาตให้ใช้เนื้อหาของเราในลักษณะที่ไม่ชอบด้วยกฎหมาย นอกจากนี้คุณควรเข้าใจด้วยว่าเนื้อหาของเราไม่ได้รับการรับประกันและคุณควรตรวจสอบเนื้อหาของเราโดยไม่คิดค่าใช้จ่ายก่อนที่จะใช้เนื้อหาเหล่านี้ โปรดดูที่นโยบายเนื้อหาและนโยบายความเป็นส่วนตัวของไซต์เมื่อเข้าสู่ไซต์นี้ comments 0 ความเห็น: โพสต์ความคิดเห็นกลยุทธ์การค้าจะคล้ายกับกลยุทธ์ขององค์กร การศึกษาทรัพยากรของคุณอย่างละเอียดจะช่วยให้คุณสามารถตัดสินใจได้อย่างมีประสิทธิภาพมากขึ้น (อ่านต่อ) 8226 การทำความเข้าใจตัวชี้วัดทางเทคนิคตัวชี้วัดทางเทคนิคมากกว่าแค่สมการ ตัวชี้วัดที่มีการพัฒนาอย่างดีเมื่อนำมาประยุกต์ใช้ทางวิทยาศาสตร์เป็นเครื่องมือที่ช่วยให้นักค้าดึงข้อมูลที่สำคัญจากข้อมูลทางการเงิน (อ่านต่อ) 8226 เหตุใดฉันจึงต้องการใช้ Excel Excel แสดงข้อมูลให้คุณเห็น ทำให้คุณเข้าใจการทำงานของคุณได้ง่ายขึ้นและประหยัดเวลา (อ่านต่อ)

Comments