Moving Average Contoh ini mengajarkan cara menghitung moving average dari deret waktu di Excel. Rata-rata bergerak digunakan untuk memperlancar penyimpangan (puncak dan lembah) agar mudah mengenali tren. 1. Pertama, mari kita lihat rangkaian waktu kita. 2. Pada tab Data, klik Analisis Data. Catatan: cant menemukan tombol Analisis Data Klik disini untuk memuat add-in Analisis ToolPak. 3. Pilih Moving Average dan klik OK. 4. Klik pada kotak Input Range dan pilih range B2: M2. 5. Klik di kotak Interval dan ketik 6. 6. Klik pada kotak Output Range dan pilih sel B3. 8. Plot grafik nilai-nilai ini. Penjelasan: karena kita mengatur interval ke 6, rata-rata bergerak adalah rata-rata dari 5 titik data sebelumnya dan titik data saat ini. Akibatnya, puncak dan lembah dihaluskan. Grafik menunjukkan tren yang semakin meningkat. Excel tidak bisa menghitung moving average untuk 5 poin data pertama karena tidak ada cukup data point sebelumnya. 9. Ulangi langkah 2 sampai 8 untuk interval 2 dan interval 4. Kesimpulan: Semakin besar interval, semakin puncak dan lembah dihaluskan. Jeda yang lebih kecil, semakin dekat rata-rata bergerak ke titik data aktual. Saya ingin menghitung rata-rata bergerak yang terakhir, katakanlah 20, sejumlah kolom. Masalahnya adalah bahwa beberapa sel kolom mungkin kosong, seharusnya diabaikan. Contoh: Rata-rata bergerak dari tiga yang terakhir adalah (155167201) 3. Saya sudah mencoba menerapkannya dengan menggunakan indeks rata-rata, offset, tapi saya tidak tahu caranya. Saya sedikit akrab dengan makro, jadi solusi seperti itu akan berhasil dengan baik: MovingAverage (A13) Terimakasih atas tip atau solusi yang diajukan Mar 12 11 at 15:36 Masukkan ini dengan controlshiftenter untuk membuatnya menjadi formula array. Ini akan menemukan tiga nilai terbaru. Jika Anda menginginkan lebih atau kurang, ubah dua contoh 3 dalam formula menjadi apapun yang Anda inginkan. Bagian ini mengembalikan nomor baris tertinggi ke-4 dari semua sel yang memiliki nilai, atau 5 pada contoh Anda karena baris 6, 8, dan 9 adalah baris pertama sampai 3 tertinggi dengan nilai. Bagian ini mengembalikan 9 TRUEs atau FALSEs berdasarkan pada apakah jumlah baris lebih besar dari yang terbesar ke-4. Ini mengalikan nilai dalam A1: A9 oleh 9 TRUEs atau FALSEs tersebut. TRUEs dikonversi menjadi 1 dan FALSEs menjadi nol. Ini meninggalkan fungsi SUM seperti ini Karena semua nilai di atas 155 tidak memenuhi kriteria jumlah baris, maka kalikan dikalikan dengan nol. Saya telah menulis naskah pendek di VBA. Hopefull itu apa yang Anda inginkan. Ini dia: 1) Saya telah menetapkan batas untuk 360 sel. Artinya skrip tidak akan mencari lebih dari 360 sel. Jika ingin mengubahnya maka ganti nilai awal counter. 2) Script kembali tidak membulat rata-rata. Ubah baris terakhir ke MovingAverage Round (CDbl (tmp i), 2) 3) Penggunaannya seperti yang Anda inginkan, jadi cukup ketik MovingAverage (a13) ke dalam sel. Setiap komentar are welcome. Moving Perhitungan Rata-rata Moving Average Calculation Moving Average Calculation Saya mencoba untuk menghitung moving average untuk serangkaian data. Saya ingin menghasilkan rata-rata bergerak untuk setiap titik dalam data, agar dapat ditampilkan dalam grafik. Anyway, dibawah ini adalah contoh dari MS Support. Saya telah mengikuti surat itu, tapi saya tidak memberikan rata-rata bergerak. Ini mengulang titik data yang sama berulang-ulang (titik data pertama). Jadi, saya tidak percaya fungsinya adalah menemukan startdate di baris MyRST. Seek, oleh karena itu baru mengembalikan titik data pertama. Akhirnya (mungkin akan membuat ini sangat mudah) Saya bingung bagaimana cara kerja indeks. Saya pikir Anda hanya bisa memiliki satu kunci utama, namun ternyata Anda dapat membuat beberapa kendala di lapangan. Saya telah mencoba melakukan ini dengan query definisi data berikut: ALTER TABLE Table1 ADD CONSTRAINT NoDupes UNIQUE (CurrencyType, TransactionDate) Maaf tentang panjang posting ini. Saya menghargai bantuan Anda. Fungsi contoh berikut menghitung moving averages berdasarkan tabel dengan primary key beberapa field. Nilai mingguan mata uang asing digunakan untuk contoh ini. Untuk membuat fungsi sampel, ikuti langkah-langkah berikut: Buat tabel berikut dan simpan sebagai Tabel1: Tabel: Table1 --------------------------- -------------- Field Name: CurrencyType Primary Key Tipe Data: Text Field Size: 25 Field Name: TransactionDate Tipe Data Primer Utama: Format DateTime: Nama Field Tanggal Pendek: Rate Tipe Data: Mata Uang Tempat Desimal: 4 Lihat tabel di tampilan Datasheet dan masukkan nilai berikut: Transkrip Kurs Mata Uang Tingkat Sekarang ------------------------------- ------------- Yen 8693 0.0079 Yen 81393 0.0082 Yen 82093 0.0085 Yen 82793 0.0088 Yen 9393 0,0091 Mark 8693 0.5600 Mark 81393 0.5700 Mark 82093 0.5800 Mark 82793 0.5900 Mark 9393 0.6000 Membuka modul baru dan ketik Fungsi berikut: Function MAvgs (Periods As Integer, StartDate, TypeName) Dim MyDB Sebagai DATABASE, MyRST Sebagai Recordset, MySum Sebagai Double Dim i, x Set MyDB CurrentDb () Set MyRST MyDB. OpenRecordset (Table1) Pada Error Resurr Next MyRST. Index PrimaryKey x Periods - 1 ReDim Store (x) MySum 0 For i 0 To x MyRST. MoveFirst MyRST. Seek, TypeName, StartDate Kedua variabel ini harus berada dalam urutan yang sama dengan field primary key di tabel Anda. Store (i) MyRSTRate Jika i lt x Then StartDate StartDate - 7 The 7 disini mengasumsikan data mingguan 1 untuk data harian. Jika StartDate lt 8693 Kemudian MAvgs Null: Exit Function 8693 diganti dengan tanggal paling awal data di tabel Anda. MySum Store (i) MySum Selanjutnya i MAvgs MySum Periods MyRST. Close End Function Buat query berikut berdasarkan tabel Table1: Query: Query1 --------------------- ---------------------------------- Lapangan: Bidang Tipe Mata Uang: TransactionDate Field: Rate Field: Expr1: MAvgs (3 , TransactionDate, CurrencyType) CATATAN: Permintaan ini akan menghasilkan rata-rata pergerakan tiga minggu dari data Tingkat. Untuk menghitung rata-rata bergerak yang lebih lama atau lebih pendek, ganti angka 3 di kolom Expr1 kueri ke nilai yang ingin Anda hitung. Jalankan kueri. Perhatikan bahwa Anda melihat rata-rata pergerakan tiga minggu berikut untuk setiap mata uang. Nilai Null menunjukkan bahwa tidak cukup banyak nilai awal untuk menghitung rata-rata minggu itu. CurrencyType TransactionDate Rate Expr1 Mark 080693 0.5600 Mark 081393 0.5700 Mark 082093 0.5800 0.57 Mark 082793 0.5900 0.58 Mark 090393 0.6000 0.59 Yen 080693 0.0079 Yen 081393 0.0082 Yen 082093 0.0085 0.0082 Yen 082793 0.0088 0.0085 Yen 090393 0.0091 0.0088 RE: Perhitungan Rata-rata Bergerak dhookom (Programmer) 28 10 Jun 21:15 Berapa lama kode itu tidak secara eksplisit menggunakan DAO dan tidak menyebutkan bahwa wont ini bekerja dengan tabel terkait. Dim MyDB sebagai DAO. Database, MyRST sebagai DAO. Recordset. Saya akan menggunakan subkueri dan bukan recordset. Ini mungkin terlihat seperti: SELECT CurrencyType, TransactionDate, Rate, (SELECT Avg (Rate) FROM Table1 B WHERE A. CurrencyType B. CurrencyType DAN A. TransactionDate BETWEEN B. TransactionDate - 14 AND B. TransactionDate) FROM Table1 A RE: Moving Perhitungan rata-rata itu sangat sempurna. Saya sangat menghargai bantuan anda Namun, kode yang Anda berikan adalah menghitung rata-rata pergerakan maju 14 hari (menempatkan rata-rata bergerak dalam catatan untuk hari 1 rata-rata, di mana saya menginginkannya menjadi rata-rata terbelakang, ditempatkan dalam catatan 14). Saya mengubah sedikit ke yang berikut dan tampaknya bekerja SELECT A. CurrencyType, A. TransactionDate, A. Rate, (SELECT Avg (Rate) FROM Table1 B WHERE A. CurrencyType B. CurrencyType DAN B. TransactionDate ANTARA A. TransactionDate - 14 DAN A. TransactionDate) AS Expr1 DARI Table1 SEBAGAIMANA Anda dapat melihat, yang saya lakukan hanyalah menukar A untuk B di bagian mana. Ini sangat membantu saya dan saya sangat menghargainya. Saya belum pernah melihat coding seperti ini sebelumnya, dan sejujurnya, saya tidak terlalu memahaminya. Saya tidak tahu bagaimana SQL memahami apa itu B dan A. Saya berasumsi bahwa mereka menciptakan semacam referensi alternatif untuk Table1. Jika Anda bisa memberikan panduan saya akan sangat menghargainya. Juga, mungkin beberapa referensi untuk materi yang dapat saya lihat Saya selalu sangat bersemangat untuk belajar sesuatu yang baru tentang VBASQL, dan saya sangat menghargai bantuan Anda RE: Moving Average Calculation PHV (SIM) 29 Jun 10 12:22 mengerti apa B dan A Apakah mereka alias RE: Moving Average Calculation Terima kasih, PHV. Ini membuat rasa lebih baik sudah RE: Moving Average Calculation joshery420 (TechnicalUser) 6 Jul 10 15:06 Wow, jangan pernah melihat tampilan SQL sebelumnya. Sangat membantu Saya mencoba untuk mendapatkan kode ini berfungsi dalam dataset saya sendiri dan saya terjebak pada satu masalah tertentu. Pd2004, tidak yakin apakah kode subkueri yang baru bekerja sama dengan kode VBA lama Anda atau tidak, namun dengan data saya, data ini tetap menunjukkan rata-rata rolling meskipun ada cukup banyak waktu untuk menciptakan rata-rata itu. misalnya Jika Im melakukan rata-rata rolling 7 hari, hari 1 menunjukkan data yang sama di kolom 7DayAvg seperti pada kolom data harian. Hari ke 2 akan menunjukkan rata-rata Hari 1 dan 2, dll. Lakukan salah satu dari kalian yang tahu bagaimana memperbaikinya secara kebetulan Juga, terima kasih atas tip kode PHV yang bagus. RE: Moving Average Calculation joshery420 (TechnicalUser) 6 Jul 10 15:08 Woops, dimaksudkan untuk berterima kasih kepada dhookom untuk tip kode, bukan PHV. Tapi, hei, terima kasih untuk kalian berdua. XD RE: Perhitungan Rata-rata Bergerak Saya akan memberikan solusi terbaik kepada para profesional di sini, namun Anda dapat melihat di tulisan asli saya bagaimana contoh Bantuan Microsoft mencoba untuk mengatasinya. Inilah kodenya: If StartDate lt 8693 Then MAvgs Null: Fungsi Keluar 8693 diganti dengan tanggal paling awal data di tabel Anda. Mereka hanya keluar dari fungsi jika tanggal tidak sesuai dengan kriteria. Saya tidak tahu apakah Anda bisa memasukkan sesuatu seperti itu ke dalam kode alias yang disediakan oleh dhookem. Saya tidak suka cara mereka menangani ini, dan saya menduga bahwa dhookem akan memberikan solusi yang jauh lebih elegan. Untuk tujuan saya, masalah yang Anda gambarkan bukanlah sebuah masalah, tapi saya akan tertarik untuk melihat solusi apa pun. RE: Moving Average Calculation dhookom (Programmer) 6 Jul 10 17:05 Anda bisa mencoba menggunakan IIf () untuk menguji hitungan jumlah rekaman. Perhatian: kode notepad yang belum diuji berikut: SELECT A. CurrencyType, A. TransactionDate, A. Rate, IIF ((SELECT Count (Rate) FROM Table1 C WHERE A. CurrencyType C. CurrencyType DAN C. TransactionDate ANTARA A. TransactionDate - 14 AND A. TransactionDate) 7, (SELECT Avg (Rate) FROM Table1 B WHERE A. CurrencyType B. CurrencyType DAN B. TransactionDate ANTARA A. TransactionDate - 14 AND A. TransactionDate), Null) AS Expr1 FROM Table1 SEBAGAI RE: Moving Average Calculation
No comments:
Post a Comment