Excel - 如何找到字符串第 n 个单词的索引/位置?

Excel - 如何找到字符串第 n 个单词的索引/位置?

我有一个包含长段落的单元格,我正在尝试创建一个公式来查找第 n 个单词的第一个或最后一个字母的索引。

例如,如果我的字符串是:This is sentence 1. This is sentence 2.并且我想要第 3 个单词的位置,则公式应该返回 9(“句子”中“s”的位置)或 16(句子中最后一个“e”的位置)。

进一步举例,如果我想要第 4 个单词的位置,公式应该返回 18(“1” 的位置)或 19(句点的位置)。

任何帮助都将不胜感激!谢谢!

答案1

采取第三个词

第三个单词将出现在第二空格。将会找到第二个空格并添加一个:

=FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),2))+1

在此处输入图片描述

因此在上面的例子中,第三个单词从字符串位置 #8 开始。

笔记

为了获得第 12个单词的位置,我们将使用:

=FIND(CHAR(1),SUBSTITUTE(A1," ",CHAR(1),11))+1

ETC。

答案2

要提取字符串中的第 n 个单词,将句子转换为数组然后提取该数组中的第 n 个元素似乎是合乎逻辑的。

如果您有 Windows 版本的 Excel 2013+,您可以创建一个 XML,其中每个节点都是一个单词,然后使用 FILTERXML提取适当的节点:

=FILTERXML("<t><s>" & SUBSTITUTE(TRIM(A2)," ","</s><s>") & "</s></t>","//s[" & WordNum & "]")

如果你有 MAC 版本或更早版本,公式会更复杂。你创建一个数组,其中每个元素都是一个单词,然后使用函数INDEX返回相应的元素。

=INDEX(TRIM(MID(SUBSTITUTE(TRIM(A2)," ",REPT(" ",99)),seq_99,99)),WordNum)

其中seq_99是命名公式,它引用:

=IF(ROW(INDEX($A:$A,1,1):INDEX($A:$A,255,1))=1,1,(ROW(INDEX($A:$A,1,1):INDEX($A:$A,255,1))-1)*99)

在此处输入图片描述

相关内容