Excel中如何将给定句子的前两个单词转换为小写
Excel实现句子前两个单词转小写的操作方案
以下方案均可实现目标效果:仅将文本前两个被空格分隔的单词转为小写,第二个单词之后的所有内容(包括原有大小写、标点、特殊符号)完全保留,和示例转换效果完全匹配:
原文本示例:
false RAGweed triggered histamine release IgE, QN, blood
处理后结果:false ragweed triggered histamine release IgE, QN, blood
方案1:适配Excel 365/2021及以上版本(无嵌套,易维护)
假设待处理文本放在A2单元格,在目标输出单元格输入以下公式即可:
=LET( 原文, A2, 第一处空格位置, FIND(" ", 原文), 第一词片段, LEFT(原文, 第一处空格位置-1), 去掉第一词的剩余文本, MID(原文, 第一处空格位置+1, LEN(原文)), 第二处空格位置, FIND(" ", 去掉第一词的剩余文本), 第二词片段, LEFT(去掉第一词的剩余文本, 第二处空格位置-1), 后半段保留文本, MID(去掉第一词的剩余文本, 第二处空格位置+1, LEN(去掉第一词的剩余文本)), LOWER(第一词片段)&" "&LOWER(第二词片段)&" "&后半段保留文本 )
这个公式不会对后半段文本做任何拆分、改写,完全保留原有格式,不会出现拼接时丢失标点、错误修改后续单词大小写的问题。
方案2:适配低版本Excel(2019及更早版本)的兼容公式
同样假设待处理文本在A2单元格,直接输入嵌套公式即可,无需依赖高版本函数:
=IFERROR( LOWER(LEFT(A2, FIND(" ", A2)-1)) &" "& LOWER(MID(A2, FIND(" ", A2)+1, FIND(" ", A2, FIND(" ", A2)+1)-FIND(" ", A2)-1)) &" "& MID(A2, FIND(" ", A2, FIND(" ", A2)+1)+1, LEN(A2)), LOWER(A2) )
公式外层套了IFERROR兜底逻辑:如果待处理文本不足2个单词(仅1个单词或无空格),会直接把整段文本转小写,不会返回报错值。
方案3:自定义VBA函数(适合高频批量处理场景)
如果需要长期、频繁处理这类需求,可以用自定义函数实现一键处理:
- 按下
Alt+F11打开VBA编辑器,在当前工作簿的普通模块中粘贴以下代码
Function ConvertFirstTwoToLower(InputText As String) As String Dim SpacePos(1 To 2) As Long Dim SpaceCount As Integer, i As Integer SpaceCount = 1 ' 逐字符遍历记录前两处空格的位置 For i = 1 To Len(InputText) If Mid(InputText, i, 1) = " " Then SpacePos(SpaceCount) = i SpaceCount = SpaceCount + 1 If SpaceCount > 2 Then Exit For End If Next i ' 按实际空格数量做对应处理 Select Case SpaceCount Case 1 ' 无空格,整段转小写 ConvertFirstTwoToLower = LCase(InputText) Case 2 ' 仅1个空格,两个单词都转小写 ConvertFirstTwoToLower = LCase(Left(InputText, SpacePos(1)-1)) & " " & LCase(Mid(InputText, SpacePos(1)+1)) Case Else ' 超过2个空格,前两个词转小写,后半段原样保留 ConvertFirstTwoToLower = LCase(Left(InputText, SpacePos(1)-1)) & " " & _ LCase(Mid(InputText, SpacePos(1)+1, SpacePos(2)-SpacePos(1)-1)) & " " & _ Mid(InputText, SpacePos(2)+1) End Select End Function
- 粘贴完成后返回Excel界面,即可像普通函数一样在单元格输入
=ConvertFirstTwoToLower(A2),下拉填充就能批量处理整列的文本内容。
内容的提问来源于stack exchange,提问作者Ganesh
相关产品推荐
相关产品推荐

