如何通过单元格引用整列并生成动态连续数据区域(规避易失性函数)
非易失性实现从指定单元格到列末的动态数组方案
方案1:使用FILTER函数(推荐)
利用FILTER自动过滤空值的特性,结合INDEX非易失性引用目标列,实现内容新增时自动扩展结果:
=LET( col, INDEX($A:$XFD, , COLUMN(B5)), start_range, INDEX(col, ROW(B5)):INDEX(col, ROWS(col)), UPPER(FILTER(start_range, start_range <> "")) )
公式说明:
col:通过COLUMN(B5)获取B5所在列的列号,再用INDEX非易失性引用该整列,替代直接写B:B的写法start_range:定义从B5开始到该列最后一行的区域FILTER(start_range, start_range <> ""):过滤区域内的空单元格,仅保留有内容的部分,新增内容时结果会自动扩展UPPER():将结果转为大写(保留原需求的转换逻辑)
方案2:使用INDEX+COUNTA组合
如果需要严格基于非空单元格计数确定范围,可采用此方案:
=LET( col, INDEX($A:$XFD, , COLUMN(B5)), start_row, ROW(B5), non_empty_count, COUNTA(INDEX(col, start_row:ROWS(col))), data_range, INDEX(col, start_row):INDEX(col, start_row + non_empty_count - 1), UPPER(data_range) )
公式说明:
col:同方案1,非易失性获取目标整列start_row:获取B5的行号non_empty_count:统计从B5到列末的非空单元格数量data_range:通过计算得到从B5到最后一个非空单元格的区域UPPER():转为大写
内容的提问来源于stack exchange,提问作者DS_London
相关产品推荐
相关产品推荐

