搜索列的文本值,如果值存在,请检查其他列,从今天开始的天数?

时间:2015-04-02 07:30:07

标签: excel vba date count

我有一个像这样的Excel电子表格:

A               B     
27/03/2015      Riddor
28/03/2015      Text
09/03/2015      Bees

我要做的是使用此功能在我的专栏B中搜索单词Riddor

=IF(ISERROR(MATCH("Riddor",Statistics!B:B,0)),"No Match",TODAY()-MIN(Statistics!B:B))

在此函数中,如果找不到值Riddor,我想显示'不匹配'否则如果找到该值我想在我的列中标识值Riddor的最新出现位置A列中的日期是今天最近的日期。然后我想计算天数。

例如,B栏中的值Riddor的日期为27/03/2015。从此日期到今天的天数为5,但是如果我添加另一个Riddor的日期更近,那么:

27/03/2015
31/03/2015

然后我希望我的日数显示1天而不是前5天。

有人可以告诉我我哪里出错了,怎么做才能让这个工作?

1 个答案:

答案 0 :(得分:0)

您需要使用下面定义的公式

请注意,花括号表示您使用此作为范围公式,这意味着您需要按Shift + Control + Enter,当您单击该单元格时,它将在最后创建花括号。

以下公式将检索MAX Date下一部分非常简单,您需要从今天减去以得出天数的差异。最好在另一个细胞中进行。我在本文底部的修改后的公式中考虑了不同的表格。但是您可以在同一张纸上测试下面的内容,然后将单元格复制到另一张纸上,以便动态更正它以便在需要时对纸张进行说明。以下两种方式都可以测试所有事件并且正在运行

{=IF(COUNTIF(B:B,"Riddor")=0,"No Match",IF(COUNTIF(B:B,"Riddor")=1,INDIRECT("A"&MATCH("Riddor",B:B,0)),MAX(IF(B:B="Riddor",A:A))))}

<强>解释 第一部分 - =IF(COUNTIF(B:B,"Riddor")=0,"No Match"如果在该范围内出现单词Riddor,则计算

第二部分 - IF(COUNTIF(B:B,"Riddor")=1,INDIRECT("A"&MATCH("Riddor",B:B,0))此部分说明如果只有一次出现Riddor这个词,那么它会使用匹配功能从A列中检索日期。使用VLOOKUP会更容易,但我假设您不想更改A&amp;的列顺序。乙

第III部分 - MAX(IF(B:B="Riddor",A:A))))这是实际需要Range公式的地方。它检查范围B:B并检索B列匹配“Riddor”的所有日期,然后查找该子集范围中的最大日期,该日期将是最接近今天日期的日期。

通过您的多个Riddor实例提供的示例中的测试和完美工作。

公式会计用于尚未测试的表格中的差异。

{=IF(COUNTIF(Statistics!B:B,"Riddor")=0,"No Match",IF(COUNTIF(Statistics!B:B,"Riddor")=1,INDIRECT("Statistics!A"&MATCH("Riddor",Statistics!B:B,0)),MAX(IF(Statistics!B:B="Riddor",Statistics!A:A))))}