我有一个excel文件,其中一列作为项目分配 . 此列的示例值如下:
XXX E(10aug15-30sep16),YYY G(30nov15-29jul16),ZZZZ C(18jan16-23dec16),AAA B(04jan16-28jul16)
我必须写一个公式给我最小的所有日期 . 我知道,我可以使用宏,但由于安全问题,我们的组织希望避免使用宏 .
上述字段的输出应为 10-Aug-15
. 请注意,每个日期将始终为7个字符 .
我使用下面的数组公式(CTRL SHIFT ENTER)来查找最大日期:
=IF('Supply Report'!S2="","",MAX(IFERROR(VALUE(MID('Supply Report'!S2,ROW($A$1:$A$1000),7)),0)))
将 MAX
修改为 MIN
无效 .
2 回答
EXPLANATION
首先要解释你的公式在做什么 . 它遍历你的字符串,创建一个长度为7的单独字符串数组,如下所示:
然后对这些字符串执行
VALUE
,如果字符串格式正确,则返回一个数字,否则返回错误然后使用
IFERROR(formula,0)
函数将错误术语替换为零,以便您的数组如下所示:因此,当您在该数组上执行
MIN
时,它返回0而不是最小的日期 .SOLUTION
您的解决方案
MIN
:可以工作,因为它创建和数组如下:
并采取
MIN
.Alternatively ,您还可以通过以下方式使用
LARGE
:也就是说,它在数组中找到第八个最大的日期,如果恰好有八个日期,它也应该是最小的 .
将其作为数组公式输入 - 使用Ctrl Shift Enter
= IF('供应报告'!S2 =“”,“”,MIN(IFERROR( Value (MID('供应报告'!S2,行($ A $ 1:$ A $ 1000),7)),999999999999999)))