【问题标题】:Find words and copy into next column in Excel在 Excel 中查找单词并复制到下一列
【发布时间】:2014-09-19 08:32:45
【问题描述】:

我想在 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 在文本中时。

你能帮我解决这个问题吗?

【问题讨论】:

    标签: excel excel-formula


    【解决方案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 的数组!然后,lookup_value 为 2 的 LOOKUP 将找到等于或小于 2 的数字的最后位置;并从 result_vector 返回相同位置的项目。

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

    例如:

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

    数组输入公式,输入后 将公式放入单元格或公式栏中,按住 ctrl-shift 同时按 enter。如果你这样做了 正确地,Excel 会在公式周围放置大括号 {...}

    编辑: 添加了屏幕截图

    【讨论】:

    • 感谢您的建议。它有点帮助。我尝试了这个解决方案并且它有效。唯一的问题是,如果两个词都存在,那么它只给出最后一个词。就像在这个例子中一样,它只作为过程给出一个单词作为结果。有什么办法可以同时得到这两个词吗?把它放到不同的单元格中就可以了。
    • @Sharmil 查看我的答案的补充
    • 我尝试了建议的公式,但没有得到结果。 =IFERROR(INDEX(IF(SEARCH("procedures", "Processes",$A1),$A$1:$A$1,""),1,COLUMNS($A:A)),"").我也试过你的公式。
    • @Sharmil 您在评论中显示的公式不是我回答中的公式。特别是,您没有将字符串作为数组常量输入。
    • 我也试过这个。{=IFERROR(INDEX(IF(SEARCH( "processes","procedures",$A1),$C$1:$D$1,""),1 ,COLUMNS($A:A)),"")}
    【解决方案2】:

    我通常会说不要将值硬编码到您的公式中。一个应该按照你的要求返回的公式如下。将公式放入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 的字符串中找到“processes”或“procedure”,如果是这种情况,它将检查字符串“processes and procedure”是否出现(在您的示例中没有!),如果是,它将返回“进程和过程”

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

    =IF(OR(NOT(ISERR(FIND(C1,LOWER($A1)))),NOT(ISERR(FIND(D1,LOWER($A1))))), IF(NOT(ISERR(FIND(E1,LOWER($A1)))),E1,""),"")
    

    这样您可以编辑列 C、D 和 E,您的公式将重新计算

    在单元格 A1

    中使用 "Execution of processes and procedures" 等值测试这些公式

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

    更新:由于您看不到图像,因此请务必按如下方式设置列 A、C、D 和 E,然后将公式粘贴到列 B强>

                  A                            C            D            E
    Execution of processes and procedures  processes   procedures  processes and procedures
    Execution of procedures and processes  processes   procedures  processes and procedures
    

    【讨论】:

    • 我尝试了您的第二个建议,但它不起作用。它没有返回任何单词,但显示为零。对于第一个公式,它以过程和过程的形式返回结果。但我喜欢你在对我有用的第二个公式中的建议。你能看一下吗?
    • 我添加了一个屏幕截图,让您更好地了解我是如何设置它的。如果显示零,可能是您没有在 C、D 和 E 列中添加任何内容。如果它仍然不适合您,请告诉我
    • 能否再添加快照?我无法下载它。
    • 我又添加了一次,没有快照
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-23
    • 2020-01-13
    • 2016-12-10
    • 1970-01-01
    相关资源
    最近更新 更多