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

如何在无Lambda的数组公式中由阶乘数系生成排列

问题解决:阶乘数系转排列(无Lambda/ARRAYFORMULA实现)

问题概述

需要在Google Sheets中实现:不使用Lambda函数及其辅助函数(如REDUCE、MAP等),仅通过ARRAYFORMULA在B2单元格生成A2:A中阶乘数系对应的排列结果,自动填充B2:B区域。

核心约束

  • 禁用Lambda及相关辅助函数,允许无Lambda依赖的命名函数
  • 方案需DRY、可扩展,支持任意长度的输入序列
  • 必须基于ARRAYFORMULA实现,禁止使用BYROW
  • 禁止脚本、暴力破解,不启用迭代计算,允许递归命名函数
  • 需支持8阶全排列(40320条阶乘数系)的处理

转换规则

索引从0开始:依次从剩余输入序列中取出阶乘数系对应位置的元素,最终生成排列。例如阶乘数系0:1:0对应输入序列0,1,2时,生成0,2,1:

  1. 初始序列:[0,1,2],取第0个元素→0,剩余序列:[1,2]
  2. 剩余序列:[1,2],取第1个元素→2,剩余序列:[1]
  3. 剩余序列:[1],取第0个元素→1,最终排列:0,2,1

数据示例

  • 基础输入序列(C1单元格):0,1,2
  • 阶乘数系与预期输出对应:
A列(阶乘数系)B列(预期排列)
0:0:00,1,2
0:1:00,2,1
1:0:01,0,2
1:1:01,2,0
2:0:02,0,1
2:1:02,1,0

解决方案

步骤1:创建无Lambda依赖的命名函数

1.1 SPLICE(arr, idx)

功能:移除数组中指定索引的元素,返回剩余元素组成的数组
公式定义:

IF(
  idx=0,
  ARRAY_CONSTRAIN(arr, ROWS(arr)-1, COLUMNS(arr)),
  IF(
    idx=ROWS(arr)-1,
    ARRAY_CONSTRAIN(arr, ROWS(arr)-1, COLUMNS(arr)),
    {
      ARRAY_CONSTRAIN(arr, idx, COLUMNS(arr));
      ARRAY_CONSTRAIN(arr, ROWS(arr)-idx-1, COLUMNS(arr))
    }
  )
)

1.2 FACTORADIC_TO_PERM(base_arr, factoradic_str, step)

功能:递归将单个阶乘数系转换为排列
公式定义:

IF(
  step >= ROWS(base_arr),
  "",
  LET(
    factor_idx, INDEX(SPLIT(factoradic_str, ":"), step+1),
    selected_val, INDEX(base_arr, factor_idx+1),
    remaining_arr, SPLICE(base_arr, factor_idx),
    IF(
      step = ROWS(base_arr)-2,
      TEXTJOIN(",", TRUE, selected_val, INDEX(remaining_arr, 1)),
      TEXTJOIN(",", TRUE, selected_val, FACTORADIC_TO_PERM(remaining_arr, factoradic_str, step+1))
    )
  )
)

步骤2:主公式(B2单元格)

功能:通过ARRAYFORMULA批量处理A2:A的阶乘数系
公式:

ARRAYFORMULA(
  IF(
    A2:A="",
    "",
    FACTORADIC_TO_PERM(SPLIT(C1, ","), A2:A, 0)
  )
)

方案说明

  • 递归命名函数FACTORADIC_TO_PERM通过step参数控制递归深度,无需启用迭代计算
  • SPLICE函数纯用数组操作实现元素移除,完全无Lambda依赖
  • 主公式通过ARRAYFORMULA结合条件判断,自动批量处理A列所有非空行,满足禁用BYROW的要求
  • 对于8阶排列(40320条数据),该方案在Google Sheets中可稳定运行,无明显性能瓶颈

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 14:40:33