です。したがって、日付のリストがあります。私は、各年の指定された「開始日」と「終了日」と同じ範囲(曜日と月)に該当する日付を見つける必要があります。同じ月に該当する日付を識別します。年に一度の期間は
開始日:2004年2月12日、終了日:2005年3月31日、2000年2月12日から2001年3月31日まで、2002年2月12日から31/1/2002、 2001および31/1/2002などは "有効"とフラグが立てられます。
現在、私は上下限を使用して、範囲内の日付をテストします。
エクセル式:
アッパー:= DATE(YEAR(日)、MONTH(テスト)、DAY(テスト)+ルック・バック期間)
下:= DATE(YEAR(日)、MONTH (テスト)、DAY(テスト)-look戻る期間)
有効:= IF(AND(日< =アッパー、日付> =低)、1,0)
Test 1/1/2005
Look Back Period (Days) 30
Start Date 2/12/2004 (=Test + Look Back Period)
End Date 31/1/2005 (=Test - Look Back Period)
Date Upper Lower Valid
04/01/2000 31/1/2000 2/12/1999 1
05/01/2000 31/1/2000 2/12/1999 1
06/01/2000 31/1/2000 2/12/1999 1
07/01/2000 31/1/2000 2/12/1999 1
10/01/2000 31/1/2000 2/12/1999 1
11/01/2000 31/1/2000 2/12/1999 1
12/01/2000 31/1/2000 2/12/1999 1
13/01/2000 31/1/2000 2/12/1999 1
14/01/2000 31/1/2000 2/12/1999 1
17/01/2000 31/1/2000 2/12/1999 1
18/01/2000 31/1/2000 2/12/1999 1
19/01/2000 31/1/2000 2/12/1999 1
20/01/2000 31/1/2000 2/12/1999 1
21/01/2000 31/1/2000 2/12/1999 1
24/01/2000 31/1/2000 2/12/1999 1
25/01/2000 31/1/2000 2/12/1999 1
26/01/2000 31/1/2000 2/12/1999 1
27/01/2000 31/1/2000 2/12/1999 1
28/01/2000 31/1/2000 2/12/1999 1
31/01/2000 31/1/2000 2/12/1999 1
01/02/2000 31/1/2000 2/12/1999 0
02/02/2000 31/1/2000 2/12/1999 0
03/02/2000 31/1/2000 2/12/1999 0
04/02/2000 31/1/2000 2/12/1999 0
07/02/2000 31/1/2000 2/12/1999 0
.
.
.
30/11/2000 31/1/2000 2/12/1999 0
01/12/2000 31/1/2000 2/12/1999 0
04/12/2000 31/1/2000 2/12/1999 0 <-- :(
05/12/2000 31/1/2000 2/12/1999 0 <-- :(
06/12/2000 31/1/2000 2/12/1999 0 <-- :(
07/12/2000 31/1/2000 2/12/1999 0 <-- :(
08/12/2000 31/1/2000 2/12/1999 0 <-- :(
11/12/2000 31/1/2000 2/12/1999 0 <-- :(
12/12/2000 31/1/2000 2/12/1999 0 <-- :(
13/12/2000 31/1/2000 2/12/1999 0 <-- :(
14/12/2000 31/1/2000 2/12/1999 0 <-- :(
15/12/2000 31/1/2000 2/12/1999 0 <-- :(
18/12/2000 31/1/2000 2/12/1999 0 <-- :(
19/12/2000 31/1/2000 2/12/1999 0 <-- :(
20/12/2000 31/1/2000 2/12/1999 0 <-- :(
21/12/2000 31/1/2000 2/12/1999 0 <-- :(
22/12/2000 31/1/2000 2/12/1999 0 <-- :(
25/12/2000 31/1/2000 2/12/1999 0 <-- :(
26/12/2000 31/1/2000 2/12/1999 0 <-- :(
27/12/2000 31/1/2000 2/12/1999 0 <-- :(
28/12/2000 31/1/2000 2/12/1999 0 <-- :(
29/12/2000 31/1/2000 2/12/1999 0 <-- :(
01/01/2001 31/1/2001 2/12/2000 1
02/01/2001 31/1/2001 2/12/2000 1
03/01/2001 31/1/2001 2/12/2000 1
04/01/2001 31/1/2001 2/12/2000 1
05/01/2001 31/1/2001 2/12/2000 1
08/01/2001 31/1/2001 2/12/2000 1
09/01/2001 31/1/2001 2/12/2000 1
10/01/2001 31/1/2001 2/12/2000 1
11/01/2001 31/1/2001 2/12/2000 1
式が正常に動作します期間が何年にもわたっていない限り。ただし、上限と下限が2年の間に交差する場合、有効な計算式では前年の値が除外されます。
解決方法はありますか?式でこれを行うには
これは、セグメントツリーの良い例のようです。 https://en.wikipedia.org/wiki/Segment_treeアルゴリズムとVBAに精通していますか? – Vityata
私はvbaでソリューションをコーディングすることができます。しかし、このシートの遺産(誰かに伝えられない可能性が高い)のために、私はこれに優れた公式の解法を好むだろう。 – adam
plzが動作しない例を教えてもらえますか? –