使用包含部分字符串匹配项的条件来确定列表中的第三小项

时间:2019-02-08 15:48:20

标签: excel excel-formula

我有两个表: 1.表1列出了具有唯一ID(例如“ 284628”)的职位空缺 2.表2列出了候选人名单,其中包括各种时间戳(放映,面试等)。每个候选条目还具有来自表1的空缺字段的字段。但是,有时此字段包含多个空缺ID(例如“ 485923; 139042”)。有很多空缺ID相同的候选行。

我想将Table2中“ Interviewed”列中的第三最小时间戳记入Table1中以获取相应的空缺ID。

如何创建该公式?

我有两个难题,但不知道它们如何协同工作。

字符串中的部分匹配项:

    =INDEX($B$2:$B$9999,MATCH("*"&D2&"*",""&$A$2:$A$9999,0))

第三个Smalles值:

    {=IFERROR(SMALL(IF(Table2[ID]=[@[ID]];IF(Table2[Date]="";"";Table2[Date]));3);"")}

非常感谢任何人的帮助-我认为这很有趣:)

根据要求,可以在此处下载示例数据:https://docs.google.com/spreadsheets/d/11rtyR4eKOok_M4zDi45_D_NvhhRnzBvT9MYZp-WOMKw/edit?usp=sharing

1 个答案:

答案 0 :(得分:0)

这可能是您想要的:

NOT NULL

输入为数组公式[=SMALL(IF(ISERR(FIND([@ID],Table2[ID],1)),999999,Table2[Date]),3) ]。

说明

CTRL-SHIFT-ENTERFIND([@ID],Table2[ID],1)的{​​{1}}列的ID中寻找Table1。如果成功,此ID返回一个Table2,如果失败,则返回FIND。由于它是一个数组公式,所以我们得到一个Integer#VALUE的数组,Integer中每一行都有一个值。

我们将上面的内容包装在#VALUE中,它给出了Table2(如果找到{strong> NOT }的ISERR(above)或{{ 1}}(如果找到了TRUE)。

所有内容都由ID包裹:如果FALSE我们返回ID(大于您的最大日期的任何数字);如果IF(above,999999,Table2[Date])TRUE返回999999。再次,我们得到了一个值数组。

最后,将前面的结果包装在FALSE中,以从数组中返回第3个最小的结果。

希望有帮助