你如何在每第n个单词之后将单元格中的字符串拆分成行
How do you split a string in a cell after every nth word into rows
如何在每第 n 个单词后拆分一个句子
大家好,
我在单元格 B2 中有一个长字符串,我想根据在单元格 D2 中输入的可变数量的单词拆分成行。
我的字符串在"B2" = "一二三四五六七八九十十一十二十三十四十五十六十七十八十九……
“
我在“D2”中的变量是 4
我第一个 line/row 的结果是“一二三四”
到目前为止,我在“F3”中使用了这个公式:
=LEFT($B,FIND("*",SUBSTITUTE($B," ","*",$D))-1)
第一个line/row
我需要继续拆分字符串,以便最终结果为:
One two three four
five six seven eight
nine ten eleven twelve
thirteen fourteen fifteen
sixteen seventeen eighteen
nineteen … …
上面的每一行都在其各自的行中。
我不介意求解公式 UDF 或 sub 的类型。非常感谢您的帮助。
使用戴维斯的 UDF 之后
这是一个可以为您完成此操作的 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
这会将由 space 分隔的每个单词放入一个单词数组中。它将遍历数组以达到最大大小(NumWords
参数),并输出字符串。
这个 UDF 需要 3 个参数:
inputStr
(String):用于拆分的整个字符串
StartPos
(Long): 您要开始的第一个单词的编号。在您的情况下,1
将以 One 这个词开头
NumWords
(Long):要包含在函数输出中的单词总数,包括来自 StartPos
的单词。
您将在示例中显示的第一行使用的公式如下所示:
=SplitOnNth($B, 1, 4)
- 或 -
=SplitOnNth($B, $E3 * $D - $D + 1, $D)
这将导致以下输出:
如何在每第 n 个单词后拆分一个句子
大家好, 我在单元格 B2 中有一个长字符串,我想根据在单元格 D2 中输入的可变数量的单词拆分成行。
我的字符串在"B2" = "一二三四五六七八九十十一十二十三十四十五十六十七十八十九…… “
我在“D2”中的变量是 4
我第一个 line/row 的结果是“一二三四”
到目前为止,我在“F3”中使用了这个公式:
=LEFT($B,FIND("*",SUBSTITUTE($B," ","*",$D))-1)
第一个line/row
我需要继续拆分字符串,以便最终结果为:
One two three four
five six seven eight
nine ten eleven twelve
thirteen fourteen fifteen
sixteen seventeen eighteen
nineteen … …
上面的每一行都在其各自的行中。
我不介意求解公式 UDF 或 sub 的类型。非常感谢您的帮助。
使用戴维斯的 UDF 之后
这是一个可以为您完成此操作的 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
这会将由 space 分隔的每个单词放入一个单词数组中。它将遍历数组以达到最大大小(NumWords
参数),并输出字符串。
这个 UDF 需要 3 个参数:
inputStr
(String):用于拆分的整个字符串StartPos
(Long): 您要开始的第一个单词的编号。在您的情况下,1
将以 One 这个词开头
NumWords
(Long):要包含在函数输出中的单词总数,包括来自StartPos
的单词。
您将在示例中显示的第一行使用的公式如下所示:
=SplitOnNth($B, 1, 4)
- 或 -
=SplitOnNth($B, $E3 * $D - $D + 1, $D)
这将导致以下输出: