0

シナリオ: Excel に共通の列「日付」を持つ 2 つの名前付きテーブルがあります。

  1. 「マンスリーシート[日付]」
  2. "WorkShiftAll[日付]"

サンプル データセットを見てみましょう。

ここに画像の説明を入力

WorkShiftAll[date]2 つの異なる名前付きセルに定義された 2 つの日付の間にあるからすべてのレコードを動的にインデックス付けしようとしています:PayPeriodStartDatePayPeriodEndDate、次の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 つのレコードが表示されます。しかし、範囲を動的にする必要があるため、テーブルを使用したいと考えています。範囲に変換する必要がありますか?他に方法はありませんか?

4

1 に答える 1