Google Sheets查找相同员工表头列自动提取非空值的公式实现问询
解决方案
通用自动适配公式(无需手动调整列范围)
直接在你要放置合并后员工工时的列第一行输入以下数组公式即可,以合并「Employee 1」的所有历史数据为例:
=ARRAYFORMULA( LET( // 配置参数:修改这里的员工姓名即可适配不同员工 target_name, "Employee 1", // 定位所有表头为目标员工的列 header_row, 1:1, target_cols, FILTER(COLUMN(header_row), header_row=target_name), // 按列序号从旧到新排序(如果需要从新到旧优先取最新值,把SORT的第二个参数改成-1) sorted_cols, SORT(target_cols, 1, TRUE), // 逐行遍历取第一个非空值 result, BYROW(INDIRECT("A:"&MAX(sorted_cols)), LAMBDA(row, IF(INDEX(row, 1)="", "", // 首列(一般是日期/序号)为空则跳过整行 IFERROR(XLOOKUP(TRUE, INDEX(row, sorted_cols)<>"", INDEX(row, sorted_cols), "")) ) )), // 输出表头+对应结果 {"Employee 1 Hours"; IF(SEQUENCE(ROWS(result)-1), result)} ) )
功能说明
- 自动搜索整个表头行所有匹配目标员工姓名的列,不需要手动指定BS、CT这类列范围,员工变动新增重复列后公式会自动识别
- 可自定义取值优先级:如果要优先取最新生成的列的非空值,只需要把
sorted_cols行的TRUE改成FALSE即可 - 整列自动溢出计算结果,不需要手动下拉填充
场景适配调整
如果你的表头不是在第1行,把公式里的header_row, 1:1改成对应表头所在的行范围即可,比如表头在第2行就改成2:2。
内容的提问来源于stack exchange,提问作者Gage1929
相关产品推荐
相关产品推荐

