![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
早速ですが、皆様のお知恵を拝借したく投稿します。
販売記録をテーブルに入力している状態で(下記参照)、直近6か月の販売金額の合計と直近3か月の販売金額の合計を同じ表の中で表現したく思っています。
販売記録テーブル
|販売月|品名|個数|単価|売上|
|2014/6|AAA| 2| 100| 200|
|2014/8|BBB| 1| 200| 200|
|2014/9|CCC| 1| 200| 600|
上記データであれば以下のように表現させたいのです。
|直近3か月|直近6か月|
| 800| 1000|
このようなことは可能でしょうか?
できるとすればどのような方法でできますでしょうか?
よろしくご教示いただけますと幸いです。
No.1ベストアンサー
- 回答日時:
これは、ちょっと苦労するでしょうね。
問題は、MoveMonth()ですね。Public Function MoveMonth(ByVal strMonth As String, _
ByVal intMove As Integer, _
Optional strFormat As String = "yyyy/mm") As String
Dim YYYY As Long
Dim MM As Long
Dim YYYYMM As String
YYYYMM = Format(strMonth, "yyyymm")
YYYY = Val(YYYYMM) / 100
MM = Val(YYYYMM) - YYYY * 100
MoveMonth = Format(DateSerial(YYYY, MM + intMove, 1), strFormat)
End Function
イミディエイトウインドウで確認してもらえればわかりますが、これで WHERE 節が書けるようになります。
SELECT
DSum("個数*単価","販売履歴",
"販売月 Between MoveMonth('2014/9', -2, 'yyyy/m') AND '2014/9'") AS 直近3か月,
DSum("個数*単価","販売履歴",
"販売月 Between MoveMonth('2014/9', -5, 'yyyy/m') AND '2014/9'") AS 直近6か月;
SQL文は、このように書けば目的を達成できます。
PS、"2014/09"の埋め込みについて
あくまでもサンプルということ。現実には、VBAなどで基準月を指示することになろうかと思います。
![「Access 直近3か月及び6か月のデー」の回答画像1](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/2/1232063_5497e75387e3c/M.jpg)
当方がまだAccessのVBAには明るくなく、おそらくコード丸写しになってしまうかもしれないという懸念はありますが、丁寧にサンプルまで作って教えて頂いてありがとうございました!
現状急ぎの作業ではないので、フォーマットの指定も考慮しつつお教えいただいた手法でやってみます!
No.5
- 回答日時:
【補足】日付型として・・・
添付図のように日付型であれば、YYYY/M も YYYY/MM も同じ。
SELECT
DSum("個数*単価",
"販売履歴",
"CDATE(販売月) Between #" & MoveMonth('2014/9',-2,'yyyy/m') & "# AND #2014/9#")
AS 直近3か月,
DSum("個数*単価",
"販売履歴",
"CDATE(販売月) Between #" & MoveMonth('2014/9',-5,'yyyy/m') & "# AND #2014/9#")
AS 直近6か月;
あくまでも YYYY/M に拘るのであれば、[販売月]は日付型として扱うことをお勧めします。
![「Access 直近3か月及び6か月のデー」の回答画像5](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/b/1232063_5497ef30e6a93/M.jpg)
当方がまだAccessのVBAには明るくなく、おそらくコード丸写しになってしまうかもしれないという懸念はありますが、丁寧にサンプルまで作って教えて頂いてありがとうございました!
現状急ぎの作業ではないので、フォーマットの指定も考慮しつつお教えいただいた手法でやってみます!
No.4
- 回答日時:
>yyyy/m では
>'2014/10' < '2014/5'
>ですから、期間が正しく判定できません。
これは、その通りですね。
まあ、多分、そうだろうと思って・・・。
Between MoveMonth('2014/9', -2, 'yyyy/m') AND '2014/9'")
↓
Between MoveMonth('2014/9', -2) AND '2014/09'")
とすれば、この不具合は回避できます。その為に、MoveMonth()関数は、"yyyy/m"、"yyyym"形式で受け取ろうともデフォルトで"yyyy/mm"形式で返すように仕組んでいます。
No.3
- 回答日時:
[販売月] の データ型 や 実際のデータの内容によって変わってきます。
テキスト型 で、サンプルのような記述であれば 下記のクエリで。
データ量が多ければ
Where 条件 を付けて 絞ったほうが良いでしょう。
SELECT
Sum(IIf([販売日] Between [三か月前] And [前月末],[売上],0)) AS 直近3か月,
Sum(IIf([販売日] Between [六か月前] And [前月末],[売上],0)) AS 直近6か月
FROM (
SELECT
売上,
IIf(IsDate([販売月] & "/1"), CDate([販売月] & "/1"),Null) AS 販売日,
DateSerial(Year(Date()),Month(Date())-3,1) AS 三か月前,
DateSerial(Year(Date()),Month(Date())-6,1) AS 六か月前,
DateSerial(Year(Date()),Month(Date()),0) AS 前月末
FROM 販売記録テーブル
) AS Q;
なお、[販売月] が、yyyy/mm (例 '2014/06') の形式なら
No.1 さんの 回答のような方法でも動作します。
yyyy/m では
'2014/10' < '2014/5'
ですから、期間が正しく判定できません。
細部に至りお教えいただきありがとうございます。
データとしては例文と同程度の量なので、クエリも試させていただきます。
何分、まだAccessは初心者同然の為、お教えいただいたコードを理解していくことから始めたいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(Microsoft Office) パワークエリの複数ファイルのデータ統合について 3 2022/07/14 17:06
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Excel(エクセル) エクセルで、未来の月の数値を表示させないようにしたい 1 2022/05/07 18:58
- 財務・会計・経理 【仕訳】集計されて引かれる販売手数料について 5 2023/04/26 15:32
- その他(お金・保険・資産運用) 至急!【Wolt】各メニューの価格設定の簡単な計算方法 3 2023/03/05 11:58
- 財務・会計・経理 この問題の正解を教えて欲しいです。 決算書のうち、企業の一定時点の「財政状態」を表すものは? 貸借対 1 2023/05/10 20:55
- 会社・職場 平成30年3月~平成30年8月 コンビニ 平成30年9月~平成30年1月 食品販売員 平成31年4月 2 2023/02/06 19:24
- Excel(エクセル) エクセル count関数で出てきた数だけの行数をリンクで参照する 3 2022/08/10 12:02
- 高校 日商簿記3級の勉強中なのですが 精算表が完成せず困っています。 こちらの問題の回答を教えていただきた 2 2023/03/02 09:07
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
Accessで○ヶ月前以前を抽出する方法はありますか?
Access(アクセス)
-
OR関数
その他(Microsoft Office)
-
ACCESS 「パラメータの入力」を消したい!!
Access(アクセス)
-
-
4
Access2003 クエリで、空の列は作れますか?
Access(アクセス)
-
5
accessの日付フィールドから前年度だけを取り出したい
Access(アクセス)
-
6
前のレコードの値を自動で入れたい
PowerPoint(パワーポイント)
-
7
Accessで今日から5日後
その他(データベース)
-
8
テーブルでメモ型になっているのにクエリで結合ができません。
その他(データベース)
-
9
アクセスに自動入力を入れたい
Access(アクセス)
-
10
ACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ
Access(アクセス)
-
11
「直近」という言葉は、一般的ではないのですか?
日本語
-
12
ACCESS IIF関数 複数条件の設定について
Excel(エクセル)
-
13
ACCESSでのひとつ前レコードの求め方について
その他(Microsoft Office)
-
14
ACCESS 集計クエリの列見出し名を変更したい
Access(アクセス)
-
15
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
16
【Access】Dcount関数の複数条件で順位を付ける方法について
Access(アクセス)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アダルトビデオのモザイクにつ...
-
危険物取扱いの「貯蔵」と「取...
-
市販商品の加工販売は違法?
-
桃中軒雲右衛門事件(大審院大...
-
男性下着が盗まれる理由について
-
既製品をに手を加えて、販売す...
-
市販のお酒を加工して売ると・・・
-
アセトン(有機溶剤)の販売に...
-
猥褻(わいせつ)ものデータ所...
-
インターネットアーカイブにWin...
-
量販店モデルって何ですか?
-
個人作成のアダルト画像販売は...
-
富くじに抵触?
-
限定数より多く販売する行為は...
-
大阪・京都周辺で日本刀の販売...
-
未成年でもネットでお酒は買え...
-
Access レポートを開く時、2つ...
-
製品供給責任の法的義務につい...
-
市販商品のラベルを張り替えて...
-
ヤマザキパンは勝ち組?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アダルトビデオのモザイクにつ...
-
個人作成のアダルト画像販売は...
-
Access レポートを開く時、2つ...
-
男性下着が盗まれる理由について
-
既製品をに手を加えて、販売す...
-
富くじに抵触?
-
インターネットアーカイブにWin...
-
危険物取扱いの「貯蔵」と「取...
-
未成年でもネットでお酒は買え...
-
品質表示のない洋服の販売について
-
パラメーターが少なすぎます 1...
-
買った種を育てて売ると?
-
くじ引きを利用した販売法は問...
-
本物の近親相姦ビデオを売る・...
-
アセトン(有機溶剤)の販売に...
-
Access 直近3か月及び6か月のデ...
-
「日本に住所を有するもの」の...
-
新潟県内で谷川岳のもつ煮販売...
-
市販商品の加工販売は違法?
-
無修正ポルノは日本の法律適用...
おすすめ情報