如何结合IF、AND、NOT函数使用VSTACK计算发货日期?
Excel动态数组公式解决方案
核心公式
假设零件号列是B2:B45,生产日期(DOM)列是C2:C45,发货日期(Ship By)输出到D2单元格,直接输入以下公式:
=IF(C2:C45="","",IF(ISNUMBER(MATCH(B2:B45,{"S12345","S12346","S12347","S12348"},0)),C2:C45+185,C2:C45+245))
公式逻辑拆解
- 优先判断DOM是否为空,为空则返回空值,避免生成无效日期
- 通过
MATCH检查当前零件号是否在指定的4个型号列表中,ISNUMBER将匹配结果转换为布尔值(匹配成功返回TRUE,失败返回FALSE) - 匹配成功时,DOM加185天;匹配失败且DOM非空时,DOM加245天
之前公式失效原因排查
- 若仅返回单个值或
FALSE,大概率是公式只引用了单个单元格(如B2、C2)而非整个数据范围(B2:B45、C2:C45),无法触发动态数组的逐行运算 - 避免使用
OR(B2="S12345",B2="S12346")这类单个单元格的条件判断,它无法在数组环境中逐行生效,MATCH+ISNUMBER的组合更适配VSTACK生成的动态数据集
注意事项
- 确保DOM列设置为日期格式,否则日期加法运算会返回数值而非日期
- 输入公式后Excel会自动填充到
D45,无需手动下拉
内容的提问来源于stack exchange,提问作者vicarious
相关产品推荐
相关产品推荐

