在Excel中查找单词并复制到下一列

时间:2014-09-19 08:32:46

标签: excel excel-formula

我想在Excel中找到并将文本复制到下一列。我有A栏,带有文字或句子。我想找到一个特定的单词并将该单词复制到下一列B列中,只要该单词在A列的文本中可用。

我有单字搜索和复制的解决方案,但我想将其应用于多个搜索和复制不同的单词:

=IF(ISNUMBER(SEARCH("processes", A4)), MID(A4, SEARCH("processes", A4), 9), "")

示例:

假设列A包含如下文本:

"Execution of procedure and processes".
"All Procedures are correctly updated" 
"Processes are going smoothly".

我想搜索单词"Processes and procedure",并且应该在B列(单元格1)中复制“只有processesprocedure在文本中。

你能帮帮我吗?

2 个答案:

答案 0 :(得分:1)

如果您只需要返回其中一个单词,则可以使用:

=LOOKUP(2,1/ISNUMBER(SEARCH({"Processes","Procedures"},A4)),{"Processes","Procedures"})

或者,您可以将搜索词放入单元格中:

C1:  Processes
D1:  Procedures

=LOOKUP(2,1/ISNUMBER(SEARCH($C$1:$D$1,A4)),$C$1:$D$1)

如果没有单词,公式将返回错误;它可以扩展为任意数量的单词。如果您不喜欢简单的错误消息,可以将上面的内容包装在IFERROR函数中并返回您喜欢的内容。

带有find_text数组的SEARCH函数将返回一个数字或#VALUE的数组!然后,ISNUMBER函数将返回一个TRUE或FALSE数组。除法运算(1 / ISNUMBER)将返回1或#DIV / 0的数组!查找值为2的LOOKUP将找到一个等于或小于2的数字的最后位置;并从result_vector返回相同位置的项目。

如果您需要返回两个单词,并且它们可以位于不同的单元格中,请输入此数组公式,并填写右侧的搜索列表中的单词数:

e.g:

=IFERROR(INDEX(IF(SEARCH($C$1:$D$1,$A4),$C$1:$D$1,""),1,COLUMNS($A:A)),"")
输入后,

array-enter 一个公式 公式进入单元格或公式栏,按住 ctrl-shift ,同时点击输入。如果你这样做了 正确地说,Excel会在公式周围放置大括号 {...}

编辑: 添加了屏幕截图

Screen Shot

答案 1 :(得分:0)

我通常会说不要将值硬编码到公式中。应该按照您的要求返回的公式如下。将公式放入 B1 并向下拖动。

=IF(OR(NOT(ISERR(FIND("processes",LOWER($A1)))),NOT(ISERR(FIND("procedure",LOWER($A1))))), IF(NOT(ISERR(FIND("processes and procedure",LOWER($A1)))),"processes and procedure",""),"")

这个公式正在检查"进程"或"程序"可以在 A 列的字符串中找到,如果是这种情况,它将检查字符串"进程和过程"发生(在你的例子中它没有!)如果它发生了,它将返回"过程和程序"

回到我原来的观点,我建议将"process"放入单元格 C1 "procedure"放入单元格 D1 和{{1} }进入单元格 E1 ,公式将如下所示:

"processes and procedure"

通过这种方式,您可以修改 C,D和E 列,您的公式将重新计算

在单元格 A1

中使用=IF(OR(NOT(ISERR(FIND(C1,LOWER($A1)))),NOT(ISERR(FIND(D1,LOWER($A1))))), IF(NOT(ISERR(FIND(E1,LOWER($A1)))),E1,""),"") 等值测试这些公式

更新:根据我的示例,这就是您的设置应该是什么样的。

enter image description here

更新:由于您无法看到图片,因此请务必确保设置列 A,C,D& E 如下,然后将公式粘贴到 B

列中
"Execution of processes and procedures"