You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Excel公式(非VBA)创建可动态扩展的阶梯型二维方阵?

用Excel公式创建指定结构的二维数组(支持动态扩展)

完全可以用Excel原生公式(无需VBA)实现,包括结合HSTACK相关函数逻辑达成动态扩展需求,以下是两种实用方案:

方案1:支持横纵向复制的单元格公式

选择起始单元格(比如A1),输入以下公式后,横向拖曳扩展列、纵向拖曳扩展行即可自动生成目标结构:

=IF(COLUMN()-COLUMN($A$1)<ROW()-ROW($A$1),0,1)

逻辑说明

  • COLUMN()-COLUMN($A$1):计算当前单元格相对于起始单元格的列偏移量(从0开始计数)
  • ROW()-ROW($A$1):计算当前单元格相对于起始单元格的行偏移量(从0开始计数)
  • 当列偏移量小于行偏移量时显示0,否则显示1,刚好匹配「第N行前N-1个元素为0、其余为1」的需求。如果起始单元格是A1,还可以简化为=IF(COLUMN()<ROW(),0,1)。

方案2:一次性生成动态数组(无需手动复制)

如果需要直接输出整个二维数组,结合LET、SEQUENCE函数就能实现动态扩展,公式如下:

=LET(target_rows,ROWS(A1:A10),target_cols,COLUMNS(A1:J1),IF(SEQUENCE(target_rows,target_cols,0,1)<SEQUENCE(target_rows,1,0,1),0,1))

逻辑说明

  • LET函数定义两个变量:target_rows(数组行数,通过ROWS(A1:A10)动态获取,调整范围即可改变行数)、target_cols(数组列数,通过COLUMNS(A1:J1)动态获取)
  • SEQUENCE(target_rows,target_cols,0,1)生成从0开始的r行c列序列,代表每个位置的列索引
  • SEQUENCE(target_rows,1,0,1)生成从0开始的r行1列序列,代表每行的行索引
  • 通过IF判断实现「列索引 < 行索引则为0,否则为1」,最终输出符合要求的二维数组。

内容的提问来源于stack exchange,提问作者MarkJ

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 17:03:12