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

Google Sheets 按条件扁平化表格为两列并追加邮箱自匹配行

问题背景
  • 表格存有结构化的示例数据,当前需要将二维标记表扁平化为两列的配对数据
  • 原有使用的扁平化公式如下:
=INDEX(QUERY(SPLIT(FLATTEN(IF(SheetName!B1:D=TRUE, SheetName!B1:D1&"×"&SheetName!A1:A,)), "×"),"where Col2 is not null order by Col1 asc"))
  • 原有公式可以正常输出标记为TRUE的列属性与对应行邮箱的配对结果,但未覆盖需要追加的自配对行
具体需求

在原有扁平化输出的两列结果基础上,额外追加每个邮箱自身配对的行,格式为邮箱地址 | 邮箱地址,即对A列的每个邮箱,都生成一条邮箱×邮箱的配对记录,和原有逻辑生成的配对记录合并后统一排序输出。
此前尝试调整IF/IFS判断逻辑、使用通配符匹配等方案,均未实现预期效果。

补充说明:已准备好包含示例原始数据、现有公式输出结果、预期输出结果的样例表格,公式输入位置为H2单元格。

实现方案

直接在原有公式的FLATTEN函数中追加邮箱自拼接的数组参数即可,无需改动后续拆分、过滤、排序逻辑,修改后完整公式如下:

=INDEX(QUERY(SPLIT(FLATTEN(IF(SheetName!B1:D=TRUE, SheetName!B1:D1&"×"&SheetName!A1:A,),SheetName!A1:A&"×"&SheetName!A1:A), "×"),"where Col2 is not null order by Col1 asc"))

逻辑说明

  • FLATTEN函数支持接收多组数组参数,会自动将多组数组合并后展开为一维列
  • 第一组参数保留原有逻辑:仅当B:D列的单元格值为TRUE时,拼接对应列头和该行A列的邮箱
  • 第二组参数为新增的自配对逻辑:直接拼接每行A列的邮箱和自身,不需要加判断条件,所有行都会生成对应自配对记录
  • 后续通过SPLIT按分隔符×拆分为两列,再通过QUERY过滤空值、按第一列升序排序,即可得到完全符合需求的结果
  • 如果输出结果存在重复行,可将QUERY语句修改为"where Col2 is not null group by Col1,Col2 order by Col1 asc"实现自动去重

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 18:24:35