Excel公式/VBA需求:提取完整词的90字符文本用于谷歌广告
Excel拆分长文本为不拆分单词的分段(单段最多90字符)
公式解法
提取第一段(B1单元格)
在B1输入以下公式,可提取A1中最多90字符的完整单词文本,避免拆分单词:
=LEFT(A1,IFERROR(FIND(" ",A1&" ",90)-1,90))
逻辑说明:
A1&" ":给文本末尾补空格,防止文本长度刚好90且无空格时出错FIND(" ",A1&" ",90):从第90个字符位置开始,向后定位第一个空格的位置IFERROR(...,90):如果文本总长度不足90字符,直接返回全部内容
提取剩余分段(C1单元格)
在C1输入以下公式,提取B1之后的剩余文本,同样遵循最多90字符、不拆分单词的规则:
=LEFT(TRIM(MID(A1,LEN(B1)+1,999)),IFERROR(FIND(" ",TRIM(MID(A1,LEN(B1)+1,999))&" ",90)-1,90))
逻辑说明:
TRIM(MID(A1,LEN(B1)+1,999)):截取B1之后的剩余文本并去除首尾空格- 后续逻辑与B1公式一致,对剩余文本做90字符内的完整单词截取
VBA自定义函数解法
如果需要支持更多分段的灵活拆分,可添加自定义函数:
- 按
Alt+F11打开VBA编辑器 - 插入新模块,粘贴以下代码:
Function GetTextSegment(inputText As String, maxLength As Integer, segmentIndex As Integer) As String Dim remainingText As String Dim currentSegment As String Dim spacePos As Integer remainingText = Trim(inputText) For i = 1 To segmentIndex If Len(remainingText) <= maxLength Then currentSegment = remainingText remainingText = "" Else spacePos = InStrRev(Left(remainingText, maxLength + 1), " ") If spacePos = 0 Then currentSegment = Left(remainingText, maxLength) remainingText = Mid(remainingText, maxLength + 1) Else currentSegment = Left(remainingText, spacePos - 1) remainingText = Trim(Mid(remainingText, spacePos + 1)) End If End If If i = segmentIndex Then GetTextSegment = currentSegment Exit Function End If Next i GetTextSegment = "" End Function
- 返回Excel界面,调用函数:
- B1提取第一段:
=GetTextSegment(A1,90,1) - C1提取第二段:
=GetTextSegment(A1,90,2) - 如需更多分段,修改第三个参数即可
- B1提取第一段:
示例效果:
针对A1的示例文本,B1会返回:
The Essential Accessory • Adds comfort and safety for passengers by offering back support and also helps carry luggage•
C1会返回剩余的符合规则的文本(最多90字符,不拆分单词)。
内容的提问来源于stack exchange,提问作者Ashok Patidar
相关产品推荐
相关产品推荐

