电子表格根据复选框选择列出不同工作表首行非空值到单列求助
适用版本(谷歌表格 / WPS 365 / Excel 365)
直接在你要输出结果的第一个单元格输入如下公式即可:=IF(D6=TRUE,TRANSPOSE(FILTER('Sheet A'!1:1,'Sheet A'!1:1<>"")),IF(G6=TRUE,TRANSPOSE(FILTER('Sheet B'!1:1,'Sheet B'!1:1<>"")),""))
逻辑说明
- 外层IF优先判断D6复选框状态,选中时触发Sheet A首行数据提取逻辑
FILTER('Sheet A'!1:1,'Sheet A'!1:1<>"")过滤Sheet A第一行所有空单元格,仅保留非空值,默认输出为横向行结构TRANSPOSE函数将横向输出的行内容转置为纵向单列,匹配罗列需求- 第二层IF判断G6复选框状态,选中时触发Sheet B首行数据提取逻辑
- 两个复选框均未选中时,公式返回空值
特殊场景调整
如果需要实现两个复选框同时选中时,依次罗列Sheet A、Sheet B的首行非空值,可改用如下公式:=FILTER(VSTACK(IF(D6=TRUE,TRANSPOSE(FILTER('Sheet A'!1:1,'Sheet A'!1:1<>"")),NA()),IF(G6=TRUE,TRANSPOSE(FILTER('Sheet B'!1:1,'Sheet B'!1:1<>"")),NA())),NOT(ISNA(VSTACK(IF(D6=TRUE,TRANSPOSE(FILTER('Sheet A'!1:1,'Sheet A'!1:1<>"")),NA()),IF(G6=TRUE,TRANSPOSE(FILTER('Sheet B'!1:1,'Sheet B'!1:1<>"")),NA()))))
旧版Excel适配方案
旧版Excel不支持动态数组、FILTER函数,可搭配INDEX、SMALL、IF组合数组公式实现,在输出列第一个单元格输入如下公式,按Ctrl+Shift+Enter激活数组公式,下拉填充到足够多的行即可:=IF(D6=TRUE,INDEX('Sheet A'!1:1,SMALL(IF('Sheet A'!1:1<>"",COLUMN('Sheet A'!1:1),4^8),ROW(A1)))&"",IF(G6=TRUE,INDEX('Sheet B'!1:1,SMALL(IF('Sheet B'!1:1<>"",COLUMN('Sheet B'!1:1),4^8),ROW(A1)))&"",""))
注意事项
- 工作表名称如果包含空格、特殊字符,必须用单引号包裹,如
'Sheet A';如果工作表名称无空格,可直接写为SheetA - 公式中的行号、列号可根据你实际的表格结构调整
内容的提问来源于stack exchange,提问作者MightyMax

