如何根据项目不同起始日期从Sheet B向Sheet A调取周工时数据?
Excel跨工作表按日期匹配取数解决方案
核心公式(兼容全版本Excel)
假设Sheet A的结构为:
- A列为项目名称(项目4在A4单元格)
- 第1行从B1开始为连续的周起始日期(B1=2023/6/12,依次往后每周递增7天)
- Sheet B中项目4的工时数据存于
K6:X6,对应起始周为2023/9/4
在Sheet A的B4单元格输入以下公式,然后横向填充至所有列:
=IF(B$1<DATE(2023,9,4),0,INDEX('Sheet B'!$K$6:$X$6,COLUMN()-MATCH(DATE(2023,9,4),$1:$1,0)+1))
公式解释
- 日期判断逻辑:
IF(B$1<DATE(2023,9,4),0,...)检查当前列的周日期是否早于项目4的起始周,满足则返回0 - 定位起始列:
MATCH(DATE(2023,9,4),$1:$1,0)找到2023/9/4在Sheet A第1行的列位置,确定项目4数据的起始列 - 计算偏移量:
COLUMN()-MATCH(...) +1算出当前列相对于项目4起始列的偏移数,对应Sheet B中K6开始的第N个工时单元格 - 提取数据:
INDEX('Sheet B'!$K$6:$X$6, 偏移量)从Sheet B的项目4工时区域中取出对应周的数据
灵活优化方案
如果项目4的起始日期存于Sheet B的某个单元格(比如J6),可将公式中的DATE(2023,9,4)替换为'Sheet B'!$J$6,实现动态适配:
=IF(B$1<'Sheet B'!$J$6,0,INDEX('Sheet B'!$K$6:$X$6,COLUMN()-MATCH('Sheet B'!$J$6,$1:$1,0)+1))
注意事项
- 确保Sheet A第1行的日期为连续周起始日,且日期格式统一
- Sheet B的
K6:X6区域的工时数据需按周顺序排列,与Sheet A的周序完全匹配 - 若使用Excel 365/2021,可改用
XLOOKUP简化,但上述公式兼容所有Excel版本
内容的提问来源于stack exchange,提问作者AarifB
相关产品推荐
相关产品推荐

