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

求替代BYROW公式的脚本,支持提取单元格批注及多重复值处理

Google Sheets 公式优化方案

需求回顾

原公式=BYROW (A1:A100, LAMBDA(each,IFNA( FILTER (INDEX(H2:AQ270, MATCH(each,H2:H270,0)), REGEXMATCH(INDEX(H2:AQ270, MATCH(each,H2:H270,0)),SUBSTITUTE(B1,".","\."))))))可通过A1:A100的名称提取含B1内容的数据,需优化以下几点:

  • 新增提取对应单元格批注的功能
  • 提取所有重复名称的对应数据(原公式仅返回首条匹配)
  • 将重复值改为同行排列(避免按列排列打乱顺序)
  • 适配目标数据分布在多列的场景

优化后公式

=BYROW(A1:A100, LAMBDA(each, IFNA(
  LET(
    match_rows, FILTER(H2:AQ270, H2:H270=each),
    filtered_vals, FILTER(match_rows, REGEXMATCH(match_rows, SUBSTITUTE(B1,".","\."))),
    filtered_notes, BYCOL(filtered_vals, LAMBDA(col, CELL("note", INDEX(match_rows, ROW(col)-ROW(filtered_vals)+1, COLUMN(col)-COLUMN(filtered_vals)+1)))),
    paired, BYROW(HSTACK(filtered_vals, filtered_notes), LAMBDA(row, TEXTJOIN("(批注:", TRUE, row) & ")")),
    TEXTJOIN(" | ", TRUE, paired)
  ), ""
)))

公式说明

  1. 提取所有重复名称:用FILTER(H2:AQ270, H2:H270=each)替代原公式的MATCH,获取H列等于当前名称的所有行,解决仅取首条的问题
  2. 提取单元格批注:通过CELL("note", 单元格)提取对应位置的批注,利用INDEX定位到原匹配行的对应单元格
  3. 同行排列结果:用TEXTJOIN将所有匹配结果(含批注)以指定分隔符拼接在同一行,避免按列排列打乱顺序
  4. 多列适配:公式基于整个H2:AQ270区域筛选,无论目标数据在J、K或其他列,只要在该区域内都会被匹配,无需额外调整(若需扩大范围,修改H2:AQ270为对应区域即可)

自定义调整建议

  • 若需修改结果分隔符,将TEXTJOIN(" | ", TRUE, paired)中的" | "替换为所需符号(如", ")
  • 若不需要内容与批注绑定,可将paired部分改为TOROW(filtered_vals)单独提取数据,或TOROW(filtered_notes)单独提取批注

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 22:47:50