如何在Google Sheets中通过日期查找薪酬周期编号?
解决方案
方法1:INDEX + MATCH 数组公式
直接根据排班日期匹配对应薪酬周期,无需依赖上一行数据:
=INDEX('Pay Statements'!A:A, MATCH(TRUE, ('Pay Statements'!B:B<=A33)*('Pay Statements'!C:C>=A33), 0))
- 原理:生成布尔数组,逐一判断
Pay Statements表中每个周期的起止日期是否包含当前排班日期(A33),MATCH找到第一个符合条件的周期位置,INDEX取出对应的周期编号。 - 适用场景:薪酬周期连续、无重叠的常规情况,数据量中等时效率稳定。
方法2:QUERY函数查询
用SQL风格语句筛选匹配的周期:
=QUERY('Pay Statements'!A:C, "SELECT A WHERE B <= date '"&TEXT(A33,"yyyy-mm-dd")&"' AND C >= date '"&TEXT(A33,"yyyy-mm-dd")&"' LIMIT 1", 0)
- 原理:将排班日期格式化为SQL可识别的日期格式,查询
Pay Statements表中包含该日期的周期,返回第一个匹配的编号。 - 适用场景:适合熟悉SQL逻辑的用户,数据量较大时可通过限定查询范围(比如
'Pay Statements'!A1:C100而非整列)提升效率。
优化建议
- 若
Pay Statements表数据固定,可将其设为命名范围(比如PayPeriods),公式中直接引用命名范围,既简化公式又减少计算量。 - 确保
Pay Statements表的起止日期为标准日期格式,避免匹配失败。
内容的提问来源于stack exchange,提问作者Kai
相关产品推荐
相关产品推荐

