Google Sheets中Box Delivery对应星期几的公式优化:支持1/2行匹配
Google Sheets公式优化:提取对应星期几
问题核心
在日历中查找包含「Box delivery」的单元格,提取其对应列的星期几(星期行固定为C11:I11),需适配目标单元格在星期行下方1行或多行的场景。
原公式问题
原公式直接将FLATTEN后的匹配位置作为列号,当「Box delivery」位于星期行下方第2行及以后时,匹配位置超过C11:I11的列数(7列),导致无法正确映射到对应星期列。
优化后公式
1. 提取第一个匹配的星期几
=IFERROR(INDEX(C11:I11,1,MOD(MATCH(TRUE,ISNUMBER(SEARCH("Box delivery",FLATTEN(C12:I15))),0)-1,COLUMNS(C11:I11))+1),"")
2. 提取所有匹配的星期几(去重并逗号分隔)
=IFERROR(TEXTJOIN(", ",TRUE,UNIQUE(INDEX(C11:I11,1,MOD(SEQUENCE(COUNTA(FLATTEN(C12:I15)))-1,COLUMNS(C11:I11))+1*(ISNUMBER(SEARCH("Box delivery",FLATTEN(C12:I15))))))),"")
公式说明
FLATTEN(C12:I15):将目标区域转为一维数组,便于全局查找ISNUMBER(SEARCH("Box delivery", ...)):不区分大小写检查单元格是否包含目标文本MOD(匹配位置-1, COLUMNS(C11:I11))+1:将一维数组的匹配序号转换为对应列号,解决跨行列号偏移问题INDEX(C11:I11,1,列号):精准提取对应列的星期几IFERROR(..., ""):无匹配时返回空值
示例验证
- 若「Box delivery」在
D12(星期行下方1行),公式返回Thursday - 若「Box delivery」在
C13(星期行下方2行),公式返回Wednesday
内容的提问来源于stack exchange,提问作者taleesita
相关产品推荐
相关产品推荐

