我有一份患者名单,其中包含所有程序的代码,例如K567
,H765
,Y234
。我想在过程列(J)中搜索两个不同过程的所有单元格。因此,对于上面的示例,如果同时包含K567
和H765
,我会将整行复制到另一个电子表格。例如
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
我的程序标准为Y874
和K567
,理想情况下,新工作表将为:
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名患者需要通过。
为了使问题复杂化,我提供了一系列代码,因此,我 想要Y874
或K567
而不是Y871
和Y872
。或Y873
或Y874
或Y875
或Y876
和K567
。
如果这是不可能的,那么让我的生活更轻松的任何变化都将非常感激!
答案 0 :(得分:0)
看一下图片,为了清楚起见,我在同一张工作表中做了。
要查找的程序代码位于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没有解释没有帮助找到问题的最佳解决方案。