シナリオ: Excel に共通の列「日付」を持つ 2 つの名前付きテーブルがあります。
- 「マンスリーシート[日付]」
- "WorkShiftAll[日付]"
サンプル データセットを見てみましょう。
WorkShiftAll[date]
2 つの異なる名前付きセルに定義された 2 つの日付の間にあるからすべてのレコードを動的にインデックス付けしようとしています:PayPeriodStartDate
とPayPeriodEndDate
、次のMonthlySheet[date]
数式を使用して (Shift + Ctrl + Enter):
=IF(ROWS(C$10:C10)>(SUMPRODUCT((WorkShiftAll[date]>=PayPeriodStartDate)*(WorkShiftAll[date]<=PayPeriodEndDate))),"",INDEX(workShiftsDateRange,SMALL(IF((WorkShiftAll[date]>=PayPeriodStartDate)*(WorkShiftAll[date]<=PayPeriodEndDate),ROW(WorkShiftAll[date])-ROW(WorkShiftAll[date])+1),ROWS(C$10:C10))))
ここで、はテーブルC10
内の最初の空白です。MonthlySheet
そして(SUMPRODUCT((WorkShiftAll[date]>=PayPeriodStartDate)*(WorkShiftAll[date]<=PayPeriodEndDate)))
、基準を満たすレコードの数をカウントするために使用した数式です (2 つの日付の間にある)。
問題: データセットに記録されているため、10 月の 2 つのレコードが正常にリストされますが、SMALL (最初のレコード) が 2 回繰り返されます! 10 月 26 日金曜日と 10 月 29 日ではありません。
INDEX をアドレス指定する列の代わりに範囲を使用すると、機能します!! 私が使用する場合のように:
INDEX(**WorkShifts!A2:A14**,SMALL(IF((WorkShiftAll[date]>=PayPeriodStartDate)
... 動作し、10 月 26 日と 29 日の 2 つのレコードが表示されます。しかし、範囲を動的にする必要があるため、テーブルを使用したいと考えています。範囲に変換する必要がありますか?他に方法はありませんか?