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

如何在Google Spreadsheets中拆分A列的多值单元格(按分号分隔)

解决Google Sheets拆分多值单元格并保留对应列数据的问题

嘿,这个需求我在帮别人处理表格时经常遇到,不用写脚本,纯用Google Sheets的内置函数就能完美解决,而且能自动适配A列姓名数量不固定的情况,重复姓名也会原样保留。下面给你两个实用的方法:

方法1:用FLATTEN+SPLIT(推荐,简洁高效)

这个方法适合新版Google Sheets(FLATTEN是比较新的函数,兼容性很好),能直接把每个姓名拆分到单独行,同时绑定对应的B列年份和C列国家。

在空白单元格(比如D1)输入以下公式:

=ARRAYFORMULA(
  IFERROR(
    SPLIT(
      FLATTEN(
        IF(TRIM(A:A)<>"", A:A&"|"&B:B&"|"&C:C, "")
      ),
      "|",
      TRUE,
      TRUE
    )
  )
)

公式逻辑拆解:

  1. IF(TRIM(A:A)<>"", A:A&"|"&B:B&"|"&C:C, ""):先把每个非空的A列姓名串,和对应的B列年份、C列国家用**竖线(|)**拼接成一个新字符串(比如Mieke Jans;Jan r Werf|2023|Belgium),空单元格直接跳过。
  2. FLATTEN(...):把所有拼接后的单元格内容展开成一列,每个单元格的内容单独占一行。
  3. SPLIT(..., "|", TRUE, TRUE):用竖线作为分隔符,把每个展开后的字符串拆分成三列——姓名、年份、国家。最后用IFERROR处理可能的空值错误。

方法2:用TEXTJOIN+SPLIT(兼容旧版Sheets)

如果你的Google Sheets版本不支持FLATTEN,可以用这个替代方案,逻辑类似但用TEXTJOIN来拼接所有内容:

=ARRAYFORMULA(
  SPLIT(
    TEXTJOIN("~", TRUE, 
      IF(TRIM(A:A)<>"", 
        SUBSTITUTE(A:A, ";", "|"&B:B&"|"&C:C&"~")&"|"&B:B&"|"&C:C, 
        "")
    ),
    "~",
    TRUE,
    TRUE
  )
)

公式逻辑拆解:

  1. SUBSTITUTE(A:A, ";", "|"&B:B&"|"&C:C&"~"):把A列里的每个分号(;)替换成|年份|国家~,这样每个姓名后面都带上对应的年份和国家,并用**波浪线(~)**作为行分隔符。
  2. &"|"&B:B&"|"&C:C:给每个单元格的最后一个姓名补上对应的年份和国家(因为最后一个姓名后面没有分号,需要单独添加)。
  3. TEXTJOIN("~", TRUE, ...):用波浪线把所有处理后的字符串连接成一个大文本。
  4. SPLIT(..., "~", TRUE, TRUE):用波浪线拆分大文本,得到每一行的姓名+年份+国家,再用竖线拆分到三列。

注意事项

  • 请确保你用的分隔符(比如|或~)在你的姓名、年份、国家数据里完全不存在,如果有的话,换成其他罕见符号(比如^或者¦)即可,避免拆分出错。
  • 公式会自动跳过A列的空单元格,不会产生多余的空行。
  • 姓名重复的情况会被原样保留,完全符合你的需求。

内容的提问来源于stack exchange,提问作者Luiz Fernando Puttow Southier

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 07:41:36