Accessのクエリーにて、開始日と終了日から該当月の貸し出し期間の算出方法を教えて下さい。
条件ですが、
月単位での算出の為、1ヶ月は「1」、半月は「0.5」で算出します。
当月に開始された明細では、
15日までに開始されれば1ヶ月で算出
16日以降に開始されれば半月で算出
当月に終了された明細では、
15日までに終了されれば半年で算出
16日以降に終了されれば1ヶ月で算出
同月内に開始・終了の場合は1ヶ月で算出
貸し出し中の明細の場合、「終了日」はNULLです。
算出年月 200712の場合のデータは下記の通りです
「算出年月」、「開始日」、「終了日」、
200712、20071210、、、期間は「1」
200712、20071220、、、期間は「0.5」
200712、20050505、20071219、期間は「1」
200712、20061222、、、期間は「1」
200712、20071201、20071210、期間は「1」
宜しくお願い致します。
No.2ベストアンサー
- 回答日時:
データは長整数型ですよね?
条件を整理します。
1ヶ月と計算されるのは、
(a)当月の開始・終了の場合(この場合、日付は関係なし)
(b)開始日が当月15日以前、終了日が当月16日以後(又は貸し出し中)
半月と計算されるのは、
(c)開始日が当月で、16日以後。
(d)終了日が当月で、15日以前。
但し、上記の(a)に該当する場合は、(a)の条件を優先。
上記の条件を具体的な式で表わすと下記。
(a) (Int(Nz(開始日,99999999)/100) = 算出年月) AND (Int(Nz(終了日,99999999)/100) = 算出年月)
(b) (Nz(開始日,99999999) <= 算出年月 * 100 + 15) AND (算出年月 * 100 + 16 <= Nz(終了日,99999999))
(c) (Int(Nz(開始日,99999999)/100) = 算出年月) AND (算出年月 * 100 + 16 <= Nz(開始日,99999999))
(d) (Int(Nz(終了日,99999999)/100) = 算出年月) AND (Nz(終了日,99999999) <= 算出年月 * 100 + 15)
求める値は、下記の様になります。
IIf( (a) OR (b), 1, IIf( (c) OR (d), 0.5, 0) )
式を代入して、下記で完成。
IIf( ((Int(Nz(開始日,99999999)/100) = 算出年月) AND (Int(Nz(終了日,99999999)/100) = 算出年月)) OR ((Nz(開始日,99999999) <= 算出年月 * 100 + 15) AND (算出年月 * 100 + 16 <= Nz(終了日,99999999))), 1, IIf( ((Int(Nz(開始日,99999999)/100) = 算出年月) AND (算出年月 * 100 + 16 <= Nz(開始日,99999999))) OR ((Int(Nz(終了日,99999999)/100) = 算出年月) AND (Nz(終了日,99999999) <= 算出年月 * 100 + 15)), 0.5, 0) )
かなり複雑ですね。(^^;
これでもまだ、矛盾するデータを考慮していません。
・開始日がNullで、終了日がある。
・終了日が開始日以前。
この辺りも考慮する必要があれば、もう少し条件を加える必要があります。
回答ありがとうございます。
うまくいきました!
>>これでもまだ、矛盾するデータを考慮していません。
>>・開始日がNullで、終了日がある。
>>・終了日が開始日以前。
これに関しては入力時にチェックしてますので大丈夫です。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 不動産業・賃貸業 賃貸の解約について質問です。 不動産会社の言うことが分からず質問させていただきました。 新築のマンシ 1 2022/08/06 19:35
- その他(住宅・住まい) 賃貸の解約について質問です。 不動産会社の言うことが分からず質問させていただきました。 新築のマンシ 6 2022/08/06 19:42
- Java Java 年数計算 3 2023/01/28 10:52
- 財務・会計・経理 もう一度減価償却について質問です。 (pc11月31日に、利用開始して1月末決算) 決算終了後の減価 2 2023/04/12 15:08
- Excel(エクセル) 指定した値以上の中で最小値を出したい 7 2022/10/24 21:12
- その他(税金) 専従者控除について 3 2022/10/27 13:07
- Excel(エクセル) Excelの計算式の意味が知りたい 3 2023/06/19 17:49
- その他(Microsoft Office) 【スプレッドシート】最初の契約日と最後の契約期間を抽出したい 添付のように派遣先、スタッフ、契約開始 2 2023/03/13 21:18
- その他(法律) 飲酒、喫煙は20歳からですよね? しかし、民法 143条では、 週、月又は年によって期間を定めたとき 4 2022/09/18 16:40
- メルカリ メルカリには出品開始日~終了日がないのでしょうか 2 2022/09/16 22:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コンピューターで2進法が採用...
-
SQLの質問です。
-
エクセルで生年月日と現在の日...
-
Excel 隣のセルが空白以外の場...
-
「24日の0時」って・・・
-
パソコンで購入したデーターが...
-
VBAでエクセルシートを更新...
-
回覧板の日付について質問です...
-
エクセルのチェックボックスを...
-
VBAで「セルに何か入っている場...
-
「時間」、「期日」、「日付」...
-
エクセル マクロ 名前を付けて...
-
差し込み印刷に当日の日付が入...
-
エクセルで最高値、最低値の日...
-
excelで、セル内に文字が入力さ...
-
日付の大小の表現
-
エクセルで数字から名前に変...
-
エクセルで6ヵ月後を自動入力で...
-
エクセルでのセルをまたぐ文字...
-
エクセルVBAで65536レコードを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 隣のセルが空白以外の場...
-
コンピューターで2進法が採用...
-
アクセスである時点での年齢を...
-
ファイルメーカープロ8で生年月...
-
生年月日から年齢を取得する方法
-
エクセルで四捨五入ではなく、5...
-
【ACCESS】未定義関数が発生。...
-
計算結果をCASE WHENで判断した...
-
ファイルメーカーPro7での経過...
-
ACCESSでの時間外計算方法
-
エクセルでeのマイナス乗の計算...
-
ファイルメーカーで給与計算
-
ファイルメーカーで小数点以下...
-
ファイルメーカーで時間の表示...
-
生年月日から年齢を計算したい。
-
整列の比較回数を表す数式でよ...
-
Accessクエリーにて開始日と終...
-
SQLの質問です。
-
ACCESSのバグ?
-
ファイルメーカーで学年を表示...
おすすめ情報