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

如何用Google Sheets ArrayFormula提取任意长度姓名的首字母

用ArrayFormula提取整列姓名的所有单词首字母

嘿,我刚好有个完美的方案解决你的问题!你之前遇到的两种方法的局限——要么只能单个单元格生效,要么只能提取前两个首字母——都可以通过结合ARRAYFORMULA、BYROW和TEXTJOIN来搞定,而且能支持任意数量的单词。

核心公式

直接把这个公式放到你想输出结果的列的第一个单元格(比如B2):

=ARRAYFORMULA(IF(A2:A="", "", BYROW(A2:A, LAMBDA(name, TEXTJOIN("", TRUE, REGEXEXTRACT(SPLIT(name, " "), "^."))))))

公式拆解(帮你理解每一步)

  • ARRAYFORMULA: 让公式自动应用到A列的所有行,不用手动下拉填充。
  • IF(A2:A="", "", ...): 避免空单元格返回不必要的结果,保持表格整洁。
  • BYROW(A2:A, LAMBDA(name, ...)): 逐行处理A列的每个姓名,把当前行的姓名临时存到name变量里,方便后续处理。
  • SPLIT(name, " "): 把姓名按空格拆分成单个单词的数组(比如"John Michael Doe"会变成["John", "Michael", "Doe"])。
  • REGEXEXTRACT(..., "^."): 提取每个单词的第一个字符(也就是首字母),每个单词对应一个首字母。
  • TEXTJOIN("", TRUE, ...): 把所有提取到的首字母拼接成一个完整的字符串,TRUE参数会自动忽略拆分后可能出现的空值(比如姓名里有连续空格的情况)。

额外优化(可选)

如果你希望所有首字母都大写(不管原姓名的大小写),可以在TEXTJOIN外面套个UPPER:

=ARRAYFORMULA(IF(A2:A="", "", BYROW(A2:A, LAMBDA(name, UPPER(TEXTJOIN("", TRUE, REGEXEXTRACT(SPLIT(name, " "), "^.")))))))

为什么这个方案比你之前的方法好用?

  1. 替代「单个单元格生效的SPLIT+ARRAYFORMULA」:之前的方法会把拆分后的单词分散到多列,而这个方案通过BYROW和TEXTJOIN把每一行的首字母合并成单个字符串,完美输出在同一列。
  2. 替代「只能提取前两个首字母的REGEXEXTRACT」:不管姓名里有3个、5个甚至更多单词,只要是空格分隔的,都能一次性提取所有首字母。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:27:02