[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『日付の計算について』(gumi)
〜10日までを「上旬」
〜21日までを「中旬」
〜31日までを「下旬」とし、
2022/8/中旬+3週間=2022/9/上旬を計算したいです。
2022/8/中旬 |3週間| 2022/9/上旬(←)
具体的な日付(2022/8/21の3週間後等)の計算式(DATE関数)は理解できました。
日付の計算をする際はやはり具体的な日付を用いないと計算できないのでしょうか。
excelに慣れておらず、申し訳ないのですが
わかりやすく説明いただけると幸いです。
< 使用 Excel:Excel2019、使用 OS:unknown >
A B C 1 2022/8/中旬|3週間後|2022/9/中旬
2022/9/中旬と、計算・表記できる方法についてお聞きしたいです。
仮に、2022/8/21とした場合は
A B C 1 2022/8/21 | 3 | 2022/9/11
C1=A1+B1*7
と計算できると思うのですが、
2022/9/中旬 と表現したい場合には、
C1の計算結果をD1(例えば)に、以下の式を用い変換するという方法になるのでしょうか
(D1=YEAR(C1)&"/"&MONTHC1)&"/"&IF(DAY(C1)<=10,"上旬",IF(DAY(C1)<=20,"中旬","下旬"))
(gumi) 2022/08/21(日) 18:19
日付の計算をする際は、
具体的な日付を入力し、計算するしかないのでしょうか。
2022/8/中旬 という表記のまま加減することは難しいのでしょうか。
分かりにくい説明となってしまい、申し訳ございません。
ご返信いただけますと幸いです。
(gumi) 2022/08/21(日) 18:30
>2022/8/中旬 という表記のまま加減することは難しいのでしょうか。 「2022/8/中旬」というのが文字列だとすると、関数で加減するのは難易度が高いと思います。 日付を表すシリアル値を条件付き書式で「2022/8/中旬」と表示するなら、 加減することは難しくないでしょう。 それはつまり、具体的な日付を入力し、計算するということになりますけど。
条件付き書式の「数式を使用して初期設定するセルを決定」を選び、 「次の数式を満たす場合に値を書式設定」の欄に、 =DAY(A1)<=10 「書式」ボタンを押して「表示形式」タブの「ユーザー定義」を選び、 「種類」の欄に yyyy/m/"上旬" と入力してOKボタン。
同様に以下の条件を追加する。
=AND(DAY(A1)>10,DAY(A1)<=20) yyyy/m/"中旬"
=DAY(A1)>=21 yyyy/m/"下旬"
条件付き書式の設定方法が不明なら、 Web検索すると、図解してあるサイトがたくさん見つかります。 (623P) 2022/08/21(日) 19:34
>2022/8/中旬 |3週間| 2022/9/上旬(←) >具体的な日付(2022/8/21の3週間後等)の計算式(DATE関数)は理解できました。 >日付の計算をする際はやはり具体的な日付を用いないと計算できないのでしょうか。
3週間は21日間だから、ほぼ10日間刻みなので違和感が余りないかも知れないですが、 他にも1週間とか5週間とかバラバラだったりするんですよね。
すると、「xDayの中旬」のn週間後が「yDayの△旬」になるなんて軽はずみに言えなくなるのですが、 実務上不都合が出ていないのでしょうか?
例えば、 2022/8/上旬 |1週間| なら 引き続き、2022/8/上旬 かも知れないし、2022/8/中旬 かも知れない(のでは?)
(半平太) 2022/08/21(日) 20:43
もしかして、最終日からカウントする、と言う事なんですかね?
上旬は、10日からカウント 中旬は、21日からカウント 下旬は、月末からカウント
(半平太) 2022/08/21(日) 20:48
同様の疑問です。
2022/8/上旬の3週間後を計算する場合、
8/1の3週間後と考えると8/22=>2022/8/下旬 同じ上旬でも8/10の3週間後と考えると9/1=>2022/9/上旬
で計算結果が変わってきます。
そこの仕様をはっきりさせれば、文字列操作関数とVLOOKUP関数等の関数でも対応可能でしょう。
(*) 2022/08/21(日) 21:05
8/10の3週間後は8/31の間違いでした。 でも、言いたいのは、計算結果が変わってくる場合があるという事です。
(*) 2022/08/21(日) 21:12
日付の加減はやはり、具体的な日にち指定が必要だということが分かりました。
その上での表記の方法の変更は、設定で操作できるということですね。
初心者にも理解しやすくご説明いただき、本当にありがとうございます。
大変勉強になりました。
(gumi) 2022/08/21(日) 21:47
〉上旬、中旬、下旬を、
自動で 判定させたいなら、
ですが、
此方 試して、
頂けますか?
_
例えば、
〉A1に 日付が、
文字列ではなく シリアル値として、
入っている、
とする 時に、
=CHOOSE(SUMPRODUCT(FREQUENCY(DAY(A1),{10;20})*ROW(OFFSET($A$1,0,0,3,1))),"上旬","中旬","下旬")
此ですね。
_
此方ですが、
少し 解説すると、
上旬、中旬、下旬、
て、
10日、20日に、
各々 境が、
ありますよね。
_
受けて、
FREQUENCY構文で 値を、
3つの 域に、
分けています。
_
具体的には、
本式内では FREQUENCY(DAY(χ),{10:20})
と して、
χ<=10日の 時、
1;0:0
10日<=χ<20日の 時、
0;1;0
20日<=χの 時、
0;0;1
と、
各々 返す、
事を 利用し。
_
row(offset($a$1,0,0,3,1))
此の 式を、
用いて、
1;2;3
という データを、
生成して かけあわせています。
_
まあ、
単純な 話ですが、
1×1=1
1×2=2
1×3=3
となる 事より、
1;0;0*1;2;3=1;0;0
0;1;0*1;2;3=0;2;0
0;0;1*1;2;3=0;0;3
と なりますので、
SAMPRODUCT構文で 集計して、
1〜3を 割り出して、
CHOOSE構文で、
上旬、中旬、下旬、
此等を 選ばせて、
変換しています。
_
エクセルで、
数値が どの値域かを、
判定させる場合は、
RANK構文が 先に、
思い浮かぶかと 思いますが。
_
RANK構文は、
境界として 指定したい、
情報を、
セルに 予め、
保管しておいて、
セル参照で 指定する、
必要があると 思っています。
_
一方で、
FREQUENCY構文では、
セル参照でも、定数配列でも、
指定できますので、
戻り値が 配列数式型では、
ありますが、
式構築面では 楽なのですね。
_
他方、
〉SUM構文ではなく、SAMPRODUCT構文を、
何故 用いるか、
ですが、
SUM構文は 集計元データーに対して、
何処に 置かれるかによって、
自動で 集計結果を、
変える 機能が、
内包されています。
_
いい変えれば、
同じ 式を、
組んでも、
同じ 演算結果を、
必ずしも 得られない、
詰まりは 超低信頼性構文なのです、
回答者手元と、質問者先で、
同じ 結果か、
期待できないのです。
_
勿論、
〉質問者は 知らないから、
問う、
という 前提ですから、
配置依存性が みられる、
関数の 存在も、
知らない 前提と、
やはり すべきでしょう、
となれば 配置位置依存性の、
存在を 知っいてさえいれば、
普通は 回答には、
使わないのです。
_
如何ですか、
お役に たてていたら、
幸いなのですが。
_
因みに、
結果実現性に 一片も、
嘘がない 事を、
実証する ファイルを、
添えておきますので、
気が 向かれたら、
ご覧くださいね。
_
実証ファイル、
https://1drv.ms/x/s!AjviygfJDgV_gY9Ry3kk2drstuFZ5w
_
尚、
ファイルは 1度、
ローカルに 別名保存して、
其の 保存ファイルを、
扱うように してくださいね、
別名保存でないと、
意味が 無いですよ。
_
さすれば、
閲覧も、編集も、
叶うものと 思いますよ。
(Nouble) 2022/08/22(月) 03:10
>日付の加減はやはり、具体的な日にち指定が必要だということが分かりました。
何かポイントにズレがある気がするんですけど。 問題は「旬と週がミスマッチ」と言うことだと思うんですけどね。
これが「旬後」と言うような指定なら、3旬で1カ月と言う換算ができるので、 具体的な日付は必要ないとも言えます。(計算過程で日付型を使いはしますが)
(半平太) 2022/08/22(月) 10:08
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.