如何在第n个单词后分割句子
大家好, 我想在单元格B2中有一个长字符串,我想根据在单元格D2中输入的可变单词数将其分成几行。
我在“ B2”中的字符串=“一二三四有五六七七八有九十一十一十二一十三十四十四一十五十七十七十八十九…… “
我在“ D2”中的变量是4
第一行/行的结果是“一二三四”
到目前为止,我已经在“ F3”中使用了此公式:
=LEFT($B$2,FIND("*",SUBSTITUTE($B$2," ","*",$D$2))-1)
第一行/行
我需要继续分割字符串,以便最终结果为:
一二三四
五六七八
9点11点12点
十三点十四分十五秒
十六十七十七十八
十九个……
上面每行的相应行中的每一行。
我不在乎解决方案公式UDF或sub的类型。非常感谢您的帮助。
使用戴维斯的UDF后
答案 0 :(得分:4)
这是可以为您完成此操作的UDF。
Public Function SplitOnNth(ByVal inputStr$, ByVal StartPos&, ByVal NumWords&) As String
Dim arr() As String, i As Long, newArr() As String
arr = Split(inputStr)
ReDim newArr(NumWords - 1)
'Arrays are zero-based, but your string isn't. Subtract 1
For i = StartPos - 1 To StartPos + NumWords - 2
If i > UBound(arr) Then Exit For 'Exit if you loop past the last word in string
newArr(i - StartPos + 1) = arr(i)
Next
SplitOnNth = Join(newArr, " ")
End Function
这会将每个由空格分隔的单词放入单词数组中。它将遍历数组以达到最大大小(NumWords
参数),并输出字符串。
此UDF需要3个参数:
inputStr
(字符串):用于拆分的整个字符串StartPos
(长整数):您要以第一个单词开头的数字。在您的情况下,1
将以一个 NumWords
(长):总共{包括StartPos
中的一个词,将包含在函数的输出中。在示例中显示的用于第一行的公式如下:
=SplitOnNth($B$2, 1, 4)
-或-
=SplitOnNth($B$2, $E3 * $D$2 - $D$2 + 1, $D$2)
这将导致以下输出: