2

リストからの日付の配列を表す動的範囲の OFFSET 式を作成しました。今日の日付に基づいて、X 週間前の月曜日から Y 週間先の金曜日までの日付が取得されます。配列出力から週末の日付を除外したいという事実を除けば、すべてが楽しいです。

私の元のデータには、日付が複数回出現することがあります。

04/03/2013 = Mo
05/03/2013 = Tu
06/03/2013 = We
06/03/2013 = We
07/03/2013 = Th
08/03/2013 = Fr
09/03/2013 = Sa
10/03/2013 = Su
11/03/2013 = Mo
12/03/2013 = Tu

これが私のダイナミックレンジです。Calendar!$D:$D は、上記の形式のすべての日付が見つかる場所です。

=OFFSET(Calendar!$D$1,MATCH(TODAY()+1-WEEKDAY(TODAY(),2)-14,Calendar!$D:$D,0)-1,0,MATCH(TODAY()+28-WEEKDAY(TODAY()+1),Calendar!$D:$D,0)-MATCH(TODAY()+1-WEEKDAY(TODAY(),2)-14,Calendar!$D:$D,0)+1)

今日の日付を指定すると、2 週間前の月曜日が検索され、3 週間先の金曜日まで範囲が拡張されます。動的範囲から週末を除外するにはどうすればよいですか?

4

1 に答える 1

1

日付のリストは実際には必要ありません。この数式は、ワークシート リストを参照せずに、同じ日付の配列 (月曜日から金曜日のみ) を生成します。

=WORKDAY(TODAY()-WEEKDAY(TODAY(),2)-14,ROW(INDIRECT("1:30")))

Excel 2007 以降で動作します

以下のコメントを考えると、上記は機能しないと思われるため、2 つの日付の間のリストから平日のみを抽出する代替アプローチは次のように機能します。

=SMALL(IF((Range>=Start)*(Range<=End)*(WEEKDAY(Range,2)<6),Range),ROW(INDIRECT("1:"&SUM((Range>=Start)*(Range<=End)*(WEEKDAY(Range,2)<6)))))

これにより、すべての平日が(リストの順序に関係なく)昇順で表示されます。ここで、Range は日付のリスト、Start は必要な開始日、End は必要な終了日です。必要に応じて詳細を追加できます。その方法を追求するために……。

于 2013-03-13T16:39:57.330 に答える