• ベストアンサー

access2013で移動平均を出したいです。

お願いいたします。 年月日(8桁の数字) 品名 単価の入ったテーブルがあります。 8桁の年月日の月より3か月前からの、品名毎の、単価の月平均を計算させたいのですが、どうしていいのかわかりません。御教授をお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • tamu1129
  • ベストアンサー率58% (1295/2223)
回答No.3

昔ならすぐに適切な回答付いたんですけどね 回答書き込みしてくれる人がいませんね 今だと何度も回答付いているのにしつこく同じ質問繰り返す人や意味不明の質問繰り返す輩が増えてしまったので、利用する人間少なくなってしまいましたからね やりたい事はクエリで簡単に出来ますよ 集計クエリ作成して型番でグループ化させる 平均値を出したいフィールドを追加で作成してその部分の平均値を求めるように指定するだけです 後は抽出するデータの抽出範囲を3か月前までに指定して抽出すればいいだけです これはフォームのテキストボックスで期間抽出するように指定してもいいですし、パラメータクエリにして実行時に聞いてくるようにしてもいいし、実行時に自動的に実行日よりも三ヶ月前から当日までのデータを対象とするにしてもいいし このあたりは自分の行いたい事に合わせてください 期間指定しないクエリなら添付画像のようなクエリで実行出来るので、後は抽出条件の部分に対象となる期間になる条件を指定してやるだけです

siyan
質問者

お礼

ありがとうございます。 この方法なら、私にもできそうです。 勉強しながら頑張ります。 これからもよろしくお願いいたします。

その他の回答 (3)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.4

#1です。 移動平均と言うと、この質問では、商品ごとの移動平均でしょうね? 普通は単一の指標で考える場合が多いように感じるが。 一度に考えるのは、複数の、代表の商品の、市況のインデックス1つの時系列などがそれ。 だったら複数の指標を1度に考える本質問では、データを、品名でソートして、塊に集めないと、3か月データを指定する(とびとびに、存在すると、どこにそのレコードにあるか探す)のが、プログラム的に難しいのではないか。 商品ごとに集まっていて、その中で、過去3か月(最大3レコード(=表では3行)、データなしの月もある)の(近接)データを対象に、ずらし乍ら平均を計算する方法なら、すこし考えやすくなるような気がする。 ーーー そうすれば、アクセスのVBAのレコードのシーケンシャル処理で扱えるように思う。 (参考サンプル) Sub Sample() Dim rs As New ADODB.Recordset rs.Open "名簿", CurrentProject.Connection Do Until rs.EOF Debug.Print rs!名前 '本当はここで複数行の、処理を書く rs.MoveNext Loop rs.Close End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

#1です。補足を頂いて、ありがとうございます。 でも、これは難しい、と思いました。当面、微力な小生ではギブアップです。 ーーー ただし、(データ例を掲示する、もちろん大切だが、普通は1例しか上げないので、加えて、本例以外のバリエーションも補足する解説も必要と思います。)ので、推測で、 補足して、文章表現にすると ・品名ごと!に、過去3か月をさかのぼるらしい。 ・さかのぼるのは、月(暦)単位で3か月間!で、前月、前々月データで、 ・同じ品名データ!を、1つづつ?探す、らしい。その計3データで移動平均を出すらしい。 ・前月内に同じ品名が、2つ以上ないのか、もし在ればどういうルールで採るのか、など、説明がない。 ・当月には同じ品名が2つ以上あれば、2つ目は、どのように、データを取り上げるのか? などの疑問を感じました。 これで正しいですか(後続の回答者のために)? === たまたま、「SQL 移動平均」でWEB照会すると、 「移動平均をwindow関数で求める」と言った、処理例があります。 こういうのにさらにルールを追加して、応用できないでしょうか。 ただアクセスでは難しい点もあるようです。 「SQLをACCESSで使えるようにするにはどうすればよいでしょうか? 」

siyan
質問者

お礼

いろいろとご指導いただきありがとうございました。 私には、かなり難しい領域のようです。 accessではあきらめて、エクセルで、挑戦してみます。 もし、解らないことがあったら、その時は、またご指導お願いいたします。 誠にありがとうございました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.1

>移動平均を出したいです。 どれだけ勉強したのか? WEBなど照会した? Googleで「アクセス 移動平均の出し方」で照会したか?相当数の記事がでるようだ。 その中にヒントは得られないか? ーー 原理は下記などを読めば、難しさはない。 https://bellcurve.jp/statistics/blog/15528.html 移動平均の計算方法 毎日のデータがもれなく(歯抜けなし)備わっているのか? 株など土日祝はデータなしだが、そういう差しさわりはない(質問者のデータのあるがままで計算して良いのか。) 1月に1データのデータらしいが、その点=データ状況(時系列データのあり様)をはっきり説明すること。また「計算対象とする期間」は3か月(前後3個データ)か? 3か月揃えば、次のスパンでは、今月を足し、覚えておいた3か月前を引き、3で割るとかすればよいわけだ。3か月分を3つの変数に記憶して、足して3で割るのも良いわけだが。 期間内データが多ければ(30日分として、毎回30日全部足すより)多少計算時間が早いかな。 ーーー むしろ表計算シートのデータであれば、式の複写で、範囲(セルデータ数)の始まりと最後を「ずらせられる」(先頭1つ捨て、新たな最後尾1つ加える)ので簡単。 だからエクセルにエクスポートしてやる手もある。グラフ化はどちらにもあるが。 アクセスVBAなら1レコードづつ読みこめるから、対象期間データ(3か月分?) を変数に覚えておくのは出来る。レコード処理では簡単。 ー アクセスのクエリでやるなら、 https://zawazawa.jp/ms-access/topic/7 動的に過去数カ月間の平均値を算出するクエリ という記事もある。

siyan
質問者

補足

ご指導有難うございます。 私のしたいことは、下記の通りです。 説明不足で、申し訳ございません。 宜しくお願い致します。 売上テーブル 売上テーブル 月日 年月 品名 単価 20200101 202001 a 10 20200101 202001 a 15 20200101 202001 b 20 20200101 202001 b 20 20200205 202002 a 10 20200205 202002 b 25 20200205 202002 c 30 20200206 202002 c 30 20200206 202002 c 35 20200310 202003 a 10 20200310 202003 c 35 20200522 202005 a 15 20200523 202005 e 40 20200610 202006 b 25 クエリー 月日 年月 品名 平均単価 20200523 202005 a 11.7 5月15+3月10+2月10 20200523 202005 b 25 2月25 20200523 202005 c 32.5 3月35+2月35+2月30+2月30 20200523 202005 e 40 5月40 クエリー 月日 年月 品名 平均単価 20200610 202006 a 12.5 6月15+5月10 20200610 202006 b 25 6月25 20200610 202006 c 35 3月35 20200610 202006 e 40 5月40

関連するQ&A