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

Office 365动态数组:多列软件版本提取最高值需求

提取可变列数软件版本数据中的每行最高版本(Office 365动态数组方案)

核心逻辑

软件版本号(如1.3.2、2.1)属于多段层级结构,直接按文本比较会出错,需先拆分各数字段转为数值,再按层级从高到低排序后取首位。


英语Office版本公式

适用于英语界面的Office 365,直接输入到结果列首行(如G2),动态数组会自动溢出填充所有行:

=BYROW(A2:INDEX(A:A,COUNTA(A:A)),LAMBDA(row,LET(
    versions, FILTER(row, row<>""),
    nums, TEXTSPLIT(versions, "."),
    valued, --nums,
    ranked, SORTBY(versions, BYCOL(valued, LAMBDA(col, SORT(col,,-1))),,-1),
    INDEX(ranked, 1)
)))

公式拆解

  • BYROW(A2:INDEX(A:A,COUNTA(A:A)), ...):遍历从A2开始到最后有数据的行
  • versions:过滤当前行的空单元格,仅保留有效版本号
  • nums:将每个版本号按.分割为单独的数字文本段
  • valued:把分割后的文本转成数值类型,用于比较大小
  • ranked:按版本的各数字段层级从高到低排序(先比主版本,再次版本,以此类推)
  • INDEX(ranked,1):取排序后的第一个值,即当前行的最高版本

法语Office版本公式

适配法语界面的Office 365,函数名替换为法语对应名称:

=PAR.LIGNE(A2:INDEX(A:A,NBCAR(A:A)),LAMBDA(ligne,LET(
    versions, FILTRE(ligne, ligne<>""),
    nums, DIV.TEXTE(versions, "."),
    valued, VALEUR(nums),
    ranked, TRIER.SUR(versions, PAR.COLONNE(valued, LAMBDA(col, TRIER(col,,FALSE))),,FALSE),
    INDEX(ranked, 1)
)))

注意事项

  • 版本号需统一格式:所有版本必须使用.作为分隔符,若包含前缀(如v1.2),需在versions后添加替换逻辑,英语用SUBSTITUTE(versions,"v",""),法语用REMPLACER(versions,"v","")
  • 动态列适配:公式会自动忽略空列,新增版本列后无需修改公式,FILTER会自动纳入有效数据
  • 异常处理:若某行无有效版本号,公式会返回#CALC!,可添加IFERROR包裹公式返回空值,如英语版本开头加=IFERROR(BYROW(...),"")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 20:05:05