求助:Excel公式实现INPUT!G19:G45取值至J1604并填充End of table
需求与问题
- 从
INPUT工作表的G19:G45单元格提取非空数据,填充至目标区域J1604及后续单元格 - 源数据提取完成后,在对应位置填充文本
End of the table
当前在J1604使用公式 IF(G19="","",G19) 无法满足需求,尝试以下两个公式均未达成目标:
尝试的公式1:
=LET(lst,FILTER(P$4:P$100,P$4:P$100<>""),num,COUNTA(lst),indx,ROW()/4, IF(indx<=num,INDEX(lst,indx,1),IF(indx=num+1,"End of list","")))
尝试的公式2:
=IF(COUNTIF($J$1603:$J1603,"End of List")>0,"",IFERROR(INDEX($G$19:$G$45,SMALL(IF($G$19:$G$45<> "",ROW($G$19:$G$45),""),ROWS($J$1604:$J$1604))-ROW($J$1603)),"End of List"))
解决方案
根据需求,提供两种适配不同Excel版本的公式:
适配Excel 365/2021(动态数组)
在J1604单元格输入以下公式,回车后会自动溢出填充所有数据及结束文本:
=LET( source, INPUT!$G$19:$G$45, filtered_data, FILTER(source, source<>""), data_count, ROWS(filtered_data), fill_seq, SEQUENCE(data_count + 1), IF(fill_seq <= data_count, INDEX(filtered_data, fill_seq), "End of the table") )
适配旧版Excel(需下拉填充)
在J1604单元格输入以下公式,然后下拉填充至足够行数:
=IFERROR(INDEX(INPUT!$G$19:$G$45,SMALL(IF(INPUT!$G$19:$G$45<>"",ROW(INPUT!$G$19:$G$45)-ROW(INPUT!$G$18)),ROWS($J$1604:$J1604))),"End of the table")
公式说明
- 动态数组版:先过滤源区域的非空数据,生成包含所有数据位置+1个结束位置的序列,前N个位置返回对应数据,最后一个位置显示结束文本
- 旧版公式:通过
SMALL提取源区域非空单元格的相对行号,用INDEX取值;当所有非空数据提取完成后,IFERROR触发并显示结束文本
内容的提问来源于stack exchange,提问作者HummBird
相关产品推荐
相关产品推荐

