使用公式确定复杂的Excel领域中的最大date

我有一个专栏作为项目分配的Excel文件。 此列的示例值如下所示:

XXX E(10aug15-30sep16),YYY G(30nov15-29jul16),ZZZZ C(18jan16-23dec16),AAA B(04jan16-28jul16)

你可以看到,每个作业都有开始date和结束date。 结束date可以使用')'括号来标识,即'''括号前面的7个字符。

我必须写一个公式,给我最大限度的所有结束date确定。 我知道,我可以使用macros,但由于安全问题,我们的组织希望避免macros。

以上产品的产量应为2016年12月23日。

请build议。

假设你的开始date总是大于你的结束date,你只需要最大的date,你可以使用下面的公式:

在单元格A1中的像这样的string

XXX E(10aug15-30sep16),YYY G(30nov15-29jul16),ZZZZ C(18jan16-23dec16),AAA B(04jan16-28jul16) 

使用公式:

 =MAX(IFERROR(VALUE(MID(A1,ROW($A$1:$A$1000),7)),0)) 

以数组公式的formsinput – 使用Ctrl + Shift + Enter

注意下面这段代码:

 ROW($A$1:$A$1000) 

这将最大string长度设置为1000 – 根据您的需要设置或多或less。 excel越多越好,不需要努力工作。 我会build议200可能绰绰有余,基于您的示例string。

假设,对于给定的string(在A1中):

1)该string中每个结束date的格式正好是ddmmmyy

2)紧接在每个右括号之前的入口永远不是除了结束date之外的任何东西

那么, 数组公式**

=MAX(0+MID(A1,MODE.MULT(IF(MID(A1,ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1))),1)={")",")"},ROW(INDEX(A:A,1):INDEX(A:A,LEN(A1)))))-7,7))

按照您的意愿格式化包含此公式的单元格,例如自定义typesddmmmyy

请注意,如果您使用Excel版本的数组常量中的行和列分隔符分别不是分号和逗号,则此解决scheme可能需要一个小的修改。

问候

**数组公式不是以与“标准”公式相同的方式input的。 按住CTRL键和SHIFT键,而不是按下ENTER键,然后按ENTER键。 如果你做得对,你会注意到Excel在公式周围放置了大括号(尽pipe不要试图自己手动插入这些)。

不是非常灵活,但只要你有4个结束date,而不会偏离给定的格式。 除了VBA以外,想不出其他的办法来做这件事,那将是理想的。

 =TEXT(MAX(MID(A1,FIND("-",A1,1)+1,7),MID(A1,FIND("-",A1,FIND("-",A1,1)+1)+1,7),MID(A1,FIND("-",A1,FIND("-",A1,FIND("-",A1,1)+1)+1)+1,7),MID(A1,FIND("-",A1,FIND("-",A1,FIND("-",A1,FIND("-",A1,1)+1)+1)+1)+1,7)),"ddmmmyy") 

使用MID提取括号内的数据。 假设你的数据在A列,你可以使用公式:

 =MID(A2,FIND("(",A2)+1,FIND(")",A2)-FIND("(",A2)-1) 

你会得到你的连字符分隔的开始和结束date(如:10aug15-30sep16)。 现在使用LEFTRIGHTSEARCH来获取你的开始和结束date:

开始date:

 =LEFT(B2,SEARCH("-",B2)-1) 

结束date:

 =RIGHT(B2,LEN(B2)-SEARCH("-",B2)) 

要将这些date转换为文本,请按如下所示使用TEXT

 =TEXT(D2,"ddmmmyy") 

希望我已经包含了您可能需要的所有公式。