场景: 我在 Excel 中有两个命名表,公共列“日期”:
- “月票[日期]”
- “WorkShiftAll[日期]”
让我们看一下示例数据集:
我正在尝试动态索引来自定义为两个不同命名单元格的两个日期之间的所有记录:WorkShiftAll[date]
并PayPeriodStartDate
使用此公式(Shift+Ctrl+Enter):PayPeriodEndDate
MonthlySheet[date]
=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)))
是我用来计算有多少记录符合我的标准的公式(在两个日期之间)
问题: 10 月份的两条记录成功列出,因为它记录在数据集中,但是,它重复了 SMALL(第一条记录)两次!不是 10 月 26 日和 10 月 29 日星期五。
当我使用范围而不是列来寻址索引时,它可以工作!就像我使用:
INDEX(**WorkShifts!A2:A14**,SMALL(IF((WorkShiftAll[date]>=PayPeriodStartDate)
...它的工作原理和两个记录,10 月 26 日和 29 日出现。但我需要我的范围是动态的,所以我想使用一个表格。我应该将其转换为范围吗?还有没有其他办法?