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

如何在Google Sheets中用REGEXEXTRACT提取姓名首字母?

提取姓名首字母(含特殊字符与连字符)

针对你遇到的问题,这里提供两种适用于Google Sheets的解决方案,能正确处理带变音符号、连字符的姓名:

单个单元格公式

使用REGEXREPLACE直接替换掉非首字母的内容,保留每个单词(含连字符分隔的部分)的首字符:

=REGEXREPLACE(AH2, "(^|[\s-])([^\s-])([^\s-]*)(?=$|[\s-])", "$2")

正则逻辑说明

  • (^|[\s-]):匹配姓名开头,或是空格/连字符(单词分隔符)
  • ([^\s-]):匹配单词的第一个字符(支持Ö这类非英文字母的变音字符)
  • ([^\s-]*):匹配单词剩余的所有字符
  • 替换时只保留第二个捕获组$2,最终所有首字符会自动拼接成结果

整列批量处理公式

如果需要一次性处理整列数据,用ARRAYFORMULA结合REGEXSPLIT实现批量提取:

=ARRAYFORMULA(IF(AH2:AH="", "", JOIN("", UPPER(LEFT(REGEXSPLIT(AH2:AH, "[\s-]"), 1)))))

逻辑说明

  1. REGEXSPLIT(AH2:AH, "[\s-]"):把姓名按空格或连字符分割成独立单词
  2. LEFT(..., 1):提取每个单词的第一个字符
  3. UPPER(...):确保首字母转为大写(兼容原姓名首字母小写的情况)
  4. JOIN("", ...):把所有首字符拼接成最终结果
  5. IF(AH2:AH="", "", ...):跳过空单元格

为什么你之前的公式失效?

你用的=REGEXEXTRACT(AH2, "\b[A-Z]+(?:\s+[A-Z]+)*")存在两个问题:

  1. \b[A-Z]+仅匹配连续的大写字母序列,但姓名中单词的首字母后通常是小写字符,所以只能捕获到第一个单词的首字母
  2. REGEXEXTRACT默认只返回第一个匹配项,无法捕获后续单词的首字母

内容的提问来源于stack exchange,提问作者a-burge

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 21:42:46