如何在Google Sheets中跳过指定单词后将其余单词首字母大写
Google Sheets 实现指定单词除外的首字母大写
需求说明
默认的PROPER()函数会将所有单词首字母大写,无法排除指定单词。我们需要实现:仅将非指定忽略单词的首字母转为大写,忽略单词保持原小写形式。
原句:"You can install it in a few clicks and it gives you a lot many options when it comes to changing case in Google Sheets."
期望结果:"You can Install it in a Few Clicks and it Gives you a Lot Many Options when it Comes to Changing Case in Google Sheets."
需忽略的单词:it、and、in、can、you、a、to
方法一:内置函数组合实现
适用于不想编写脚本的场景,直接用公式实现:
=JOIN(" ",ARRAYFORMULA(IF(LOWER(SPLIT(A1," "))={"it","and","in","can","you","a","to"},LOWER(SPLIT(A1," ")),PROPER(SPLIT(A1," ")))))
公式逻辑
SPLIT(A1," "):将目标单元格A1的文本按空格拆分为单词数组LOWER(...)={"it","and",...}:将每个单词转小写后,判断是否属于忽略列表IF(...):匹配到忽略单词则保持小写,否则用PROPER()转换为首字母大写JOIN(" ",...):将处理后的单词数组重新拼接为完整文本
带标点处理的版本
如果文本包含与单词连在一起的标点(如clicks.),使用以下公式适配:
=JOIN("",ARRAYFORMULA(IF(LOWER(REGEXEXTRACT(SPLIT(A1,"(?=[A-Za-z])|(?<=[A-Za-z])"),"[A-Za-z]+"))={"it","and","in","can","you","a","to"},REGEXEXTRACT(SPLIT(A1,"(?=[A-Za-z])|(?<=[A-Za-z])"),"[A-Za-z]+"),PROPER(REGEXEXTRACT(SPLIT(A1,"(?=[A-Za-z])|(?<=[A-Za-z])"),"[A-Za-z]+")))®EXEXTRACT(SPLIT(A1,"(?=[A-Za-z])|(?<=[A-Za-z])"),"[^A-Za-z]*")))
方法二:Apps Script自定义函数
如果需要更灵活的配置(比如动态修改忽略列表),可以创建自定义函数:
- 打开Google Sheets,点击「扩展程序」→「Apps Script」
- 删除默认代码,粘贴以下脚本:
function PROPEREXCEPT(text, ignoreWords) { if (!text || !ignoreWords) return text; // 将忽略单词列表转为小写数组,去除空格 const ignoreList = ignoreWords.split(',').map(word => word.trim().toLowerCase()); // 按单词边界拆分文本,处理每个部分 return text.split(/\b/).map(part => { const word = part.trim(); if (word.length === 0) return part; // 判断是否在忽略列表中,是则转小写,否则首字母大写 if (ignoreList.includes(word.toLowerCase())) { return word.toLowerCase(); } else { return part.charAt(0).toUpperCase() + part.slice(1).toLowerCase(); } }).join(''); }
- 保存项目(可命名为
ProperExceptFunction),返回表格即可使用:
=PROPEREXCEPT(A1,"it,and,in,can,you,a,to")
函数说明
- 第一个参数
A1:需要处理的文本单元格 - 第二个参数:用逗号分隔的忽略单词列表,支持动态修改
内容的提问来源于stack exchange,提问作者media10k
相关产品推荐
相关产品推荐

