在一个单元格中搜索多个单词

时间:2014-02-21 18:20:02

标签: excel search full-text-search multiple-columns

我有一份患者名单,其中包含所有程序的代码,例如K567H765Y234。我想在过程列(J)中搜索两个不同过程的所有单元格。因此,对于上面的示例,如果同时包含K567H765,我会将整行复制到另一个电子表格。例如

patient number- admission date- diagnosis-    procedure code

1-               1/1/14-          K47-        K567,H763,Y239,Y876
2-               1/1/14-          K47-        K567,H769,Y233,Y874
3-               1/1/14-          K47-        K567,H761,Y231,Y874
4-               1/1/14-          K47-        K567,H765,Y239,Y876
5-               1/1/14-          K47-        K567,H765,Y233,Y876

我的程序标准为Y874K567,理想情况下,新工作表将为:

patient number- admission date- diagnosis-    procedure code

2-               1/1/14-          K47-        K567,H769,Y233,Y874
3-               1/1/14-          K47-        K567,H761,Y231,Y874

我有4000名患者需要通过。

为了使问题复杂化,我提供了一系列代码,因此,我 想要Y874K567而不是Y871Y872。或Y873Y874Y875Y876K567

如果这是不可能的,那么让我的生活更轻松的任何变化都将非常感激!

2 个答案:

答案 0 :(得分:0)

看一下图片,为了清楚起见,我在同一张工作表中做了。

enter image description here

要查找的程序代码位于F1:F2

在G2中编写数组公式(按Ctrl Shift Enter输入此公式):

=IFERROR(SMALL(IF(ISNUMBER(SEARCH($F$1;$D$2:$D$6))+ISNUMBER(SEARCH($F$2;$D$2:$D$6))>1;ROW($A$2:$A$6)-ROW($A$2)+1;"");ROWS($A$2:A2));"")

将此公式复制下来,直到您确定它将覆盖最大可能的匹配。

现在在H2写下公式:

=IF($G2="";"";INDEX(A$2:A$6;$G2))

将公式直接复制到K2,然后随意向下复制(就像第一个公式一样)

根据您的区域设置,您可能需要替换字段分隔符“;”通过“,”

答案 1 :(得分:0)

使用正则表达式(Regex)的Vba用户定义函数将允许您执行此操作,只需将正则表达式模式设置为letter-number-number-number。然后你可以寻找比赛。数> 1。

编辑 - 无论是对这一回应进行了贬低 - 您是否愿意解释原因?简单的downvoting没有解释没有帮助找到问题的最佳解决方案。