我有一个excel表格,在单列中包含一些描述行,我的目标是得到一个公式,该公式可以将其截断到某些字符限制,例如30个字符,并且如果截断在中间的30个字符处停止单词,然后我删除最后一个单词。
这是我要使其起作用的公式。
=LEFT(A1,FIND(" ",A1,30)-1)
答案 0 :(得分:2)
使用AGGREGATE在前31个字符中查找最后一个空格。
=LEFT(A2, AGGREGATE(14, 7, ROW($1:$31)/(MID(A2&" ", ROW($1:$31), 1)=" "), 1) -1)
答案 1 :(得分:1)
无循环方法
=IF(LEN(A2)<30,A2,LEFT(A2,FIND("}}}",SUBSTITUTE(A2," ","}}}",30-LEN(SUBSTITUTE(LEFT(A2,30)," ",""))))-1))
答案 2 :(得分:0)
尝试类似这样的方法: 在VBA编辑器(ALT + F11)->插入新模块中放入模块。
当您过去这段代码时,可以从任何带有“ = NotTruncateWord(A1; 30)”的单元格中调用它。
有一些调整要做,因为很难知道什么是单词(在空格后面?),我问,因为如果有人写了一个35个字符的字符串而没有空格,我会考虑一个单词并删除所有?
公共函数NotTruncateWord(值,限制)
LastSpaceBeforeLimit = 0
FirstSpaceAfterLimit = 9999
Phrase_Lenght = Len(Value)
If Phrase_Lenght > Limit Then
For i = 1 To Phrase_Lenght
check = Mid(Value, i, 1)
If Asc(check) = 32 Then
If i < Limit Then
LastSpaceBeforeLimit = i
ElseIf i < FirstSpaceAfterLimit Then
FirstSpaceAfterLimit = i
End If
End If
Next
If LastSpaceBeforeLimit > 0 Then
NotTruncateWord = Left(Value, LastSpaceBeforeLimit)
Else
NotTruncateWord = Left(Value, Limit)
End If
Else
'no need to truncate
NotTruncateWord = Value
End If
结束功能