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

Google Sheets:如何将同书名的卷号合并至单元格而非仅统计数量

Google Sheets 书籍列表卷号合并方案

需求

已实现合并重复书名、去除后缀,但仅能统计卷数,需修改公式将对应卷号以逗号分隔的列表形式展示。

现有数据

书名
Blue Lock, Vol. 1
Naruto, Vol. 9
Harry Potter (novel), Vol. 2
Naruto, Vol 10
Girl, unframed

现有公式

=ARRAYFORMULA(((QUERY({QUERY(Sheet1!A:M, "select A, C, J where A is not null"), REGEXEXTRACT(QUERY(Sheet1!A:M, "select A where A is not null"), "(.*),")}, "select Col4, Count(Col4), Col2 where Col4 is not null and Col3 = 'Y' group by Col4, Col2 label Col4 'Book Name', Count(Col4) 'Volumes'"))))

期望效果

书名卷号
Blue Lock1
Naruto9, 10
Harry Potter (novel)2
Girl, unframed

修改后的公式(新版Google Sheets可用)

=ARRAYFORMULA(
  LET(
    raw_data, FILTER(Sheet1!A:C, Sheet1!A:A<>"", Sheet1!C:C="Y"),
    clean_title, IFERROR(REGEXEXTRACT(INDEX(raw_data,,1), "^(.*), Vol\.? "), INDEX(raw_data,,1)),
    volume_num, IFERROR(REGEXEXTRACT(INDEX(raw_data,,1), "Vol\.? (\d+)"), ""),
    GROUPBY(clean_title, volume_num, LAMBDA(vals, TEXTJOIN(", ", TRUE, vals)), 0, 1)
  )
)

公式逻辑说明

  1. 筛选有效数据:通过FILTER获取非空书名且Sheet1!C:C="Y"的行(对应原公式的Col3='Y'条件)
  2. 提取干净书名:用正则表达式去掉书名中", Vol. X"或", Vol X"后缀,无卷号的书名直接保留原内容
  3. 提取卷号:匹配并提取卷号数字,无卷号则返回空值
  4. 分组合并卷号:用GROUPBY按干净书名分组,通过TEXTJOIN将同书名的卷号以逗号分隔合并成列表

兼容旧版Sheets的替代公式

如果无法使用GROUPBY函数,可使用以下基于QUERY和BYROW的方案:

=ARRAYFORMULA(
  LET(
    raw_data, FILTER(Sheet1!A:C, Sheet1!A:A<>"", Sheet1!C:C="Y"),
    clean_title, IFERROR(REGEXEXTRACT(INDEX(raw_data,,1), "^(.*), Vol\.? "), INDEX(raw_data,,1)),
    volume_num, IFERROR(REGEXEXTRACT(INDEX(raw_data,,1), "Vol\.? (\d+)"), ""),
    unique_titles, UNIQUE(clean_title),
    BYROW(unique_titles, LAMBDA(title, {
      title,
      TEXTJOIN(", ", TRUE, FILTER(volume_num, clean_title=title))
    }))
  )
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 14:32:36