使用公式确定excel字段中的最短date

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

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

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

上述字段的输出应该是10-Aug-15 。 请注意,每个date将始终为7个字符。

我正在使用下面的数组公式(CTRL + SHIFT + ENTER)来查找最大date:

 =IF('Supply Report'!S2="","",MAX(IFERROR(VALUE(MID('Supply Report'!S2,ROW($A$1:$A$1000),7)),0))) 

MAX修改为MIN不起作用。

说明

首先要解释你的公式在做什么。 它通过你的string循环创build一个长度为7的单独string数组,如下所示:

 "XXX E(1" "XX E(10" "XE(10a" " E(10au" "E(10aug" "(10aug1" "10aug15" "0aug15-" ...etc 

然后对这些string执行VALUE ,如果string是正确的date格式,将返回一个数字,否则返回错误

 VALUE("XXX E(1") = #VALUE! VALUE("XX E(10") = #VALUE! VALUE("XE(10a") = #VALUE! VALUE(" E(10au") = #VALUE! VALUE("E(10aug") = #VALUE! VALUE("(10aug1") = #VALUE! VALUE("10aug15") = 42226 VALUE("0aug15-") = #VALUE! ...etc 

然后使用IFERROR(formula,0)函数将错误项replace为零,以便您的数组看起来像这样:

 {0,0,0,0,0,0,42226,0,...} 

所以当你在那个数组上执行一个MIN时,它将返回0而不是最小的date。

MIN解决scheme:

 =MIN(IFERROR(VALUE(MID(A1,ROW($A$1:$A$1000),7)),99999)) 

因为它创build和排列像这样工作:

 {99999,99999,99999,99999,99999,99999,42226,99999,...} 

并采取MIN的。

或者 ,您也可以按以下方式使用LARGE

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

也就是说,它是在数组中find第八个最大的date,如果有八个date的话,它也应该是最小的。

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

= IF('Supply Report'!)S2 =“”,“”,MIN(IFERROR(VALUE(MID('Supply Report)!S2,ROW($ A $ 1:$ A $ 1000),7)),999999999999999)))