Excel 365如何提取每行最右侧有效厚度值及对应日期?
提取每行最右侧有效厚度及对应日期(Excel 365)
问题背景
- 表格包含
ITEM、POS列,后续是数量不固定的配对THICKNESS(厚度)和THK DATE(厚度日期)列 - 无读数的
THICKNESS单元格标记为N,对应日期列保留内容 - 需要在
BASETHK和BASEDATE列,分别提取每行最右侧非“N”的厚度值及其匹配的日期
解决方案
提取最右侧有效厚度(BASETHK列)
假设数据从第2行开始,第一个厚度列为C列,在目标单元格(如J2)输入以下公式,下拉填充:
=LOOKUP(2,1/(C2:XFD2<>"N"),C2:XFD2)
逻辑:通过1/(C2:XFD2<>"N")将非N的厚度位置转为1,N的位置转为错误值;LOOKUP会忽略错误值,找到最后一个符合条件的数值(即最右侧有效厚度)。
提取对应日期(BASEDATE列)
在日期目标单元格(如K2)输入:
=LOOKUP(2,1/(C2:XFD2<>"N"),OFFSET(C2:XFD2,0,1))
逻辑:用OFFSET将厚度列整体偏移1列,得到对应的日期列范围,再用相同的LOOKUP逻辑匹配最右侧有效厚度的对应日期。
更精准的XLOOKUP写法(推荐)
针对Excel 365的动态数组特性,可直接定位所有厚度/日期列,避免OFFSET的兼容性问题:
// BASETHK 公式 =XLOOKUP(TRUE,INDEX(C2:XFD2,SEQUENCE(,COLUMNS(C2:XFD2),1,2))<>"N",INDEX(C2:XFD2,SEQUENCE(,COLUMNS(C2:XFD2),1,2)),,0,-1) // BASEDATE 公式 =XLOOKUP(TRUE,INDEX(C2:XFD2,SEQUENCE(,COLUMNS(C2:XFD2),1,2))<>"N",INDEX(C2:XFD2,SEQUENCE(,COLUMNS(C2:XFD2),2,2)),,0,-1)
逻辑:SEQUENCE(,COLUMNS(C2:XFD2),1,2)生成所有厚度列的索引(1、3、5...),INDEX提取对应列的数值;XLOOKUP的最后一个参数-1指定从右往左查找,直接定位最右侧有效数据。
注意事项
C2:XFD2涵盖了从第一个厚度列到Excel最大列的范围,Excel 365会自动忽略空列,无需手动指定最后一列- 若某行所有厚度均为
N,公式会返回#N/A,可添加IFERROR处理:=IFERROR(LOOKUP(...),"无有效读数")
内容的提问来源于stack exchange,提问作者Shaun Allan
相关产品推荐
相关产品推荐

