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

LibreOffice数组公式:如何引用当前行相对单元格并生成家族列表?

解决LibreOffice数组公式引用当前行与家族列表拼接问题

一、数组公式中引用当前行相对单元格的标准方法

在LibreOffice的数组公式中,要让每个单元格正确引用自身行的相对单元格,推荐使用BYROW函数逐行处理数据,它能自动识别当前迭代行的对应单元格值,彻底解决固定引用导致的匹配错误。

替换你原公式的写法,改用BYROW包裹逻辑:

{=BYROW(A2:B8, LAMBDA(row, LET(parent, INDEX(row,1), parent_flag, INDEX(row,2), IF(parent_flag="", TEXTJOIN(",", 1, parent, FILTER(A2:A8, B2:B8=parent)), ""))))}
  • BYROW(A2:B8, LAMBDA(row, ...)):遍历A2:B8的每一行,将当前行数据存入row变量
  • LET(parent, INDEX(row,1), parent_flag, INDEX(row,2), ...):定义变量简化逻辑,parent是当前行A列值,parent_flag是当前行B列值
  • FILTER(A2:A8, B2:B8=parent):筛选出所有以当前行A列为父项的子项

输入公式时,选中C2:C8单元格,按Ctrl+Shift+Enter确认数组公式即可。

二、避免无子女时的尾缀逗号

上面的公式已经内置解决了这个问题:通过TEXTJOIN(",", 1, parent, FILTER(...)),当没有子项时,FILTER返回空值,TEXTJOIN会自动忽略空值,直接输出父项,不会产生多余的尾缀逗号。

如果你的版本特殊不支持FILTER,也可以用兼容写法:

{=BYROW(A2:B8, LAMBDA(row, LET(parent, INDEX(row,1), parent_flag, INDEX(row,2), IF(parent_flag="", IFERROR(parent&","&TEXTJOIN(",",1,IF(B2:B8=parent,A2:A8,"")), parent), ""))))}

这里用IFERROR捕获无子女时的空拼接结果,直接返回父项本身,避免尾缀逗号。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 17:22:38