Excel一个单元格存在多时间,如何提取并展示最大的时间?

根据上图展示的一个单元格里多个预计发货时间,如何提取其中最大的时间。

vbai用过后发现简单的不要的了,用[去split字符串得出数组a,在用]split数组元素得出数组a[i][0]就是时间字符串,最后排序字符串转换的日期,你就获得最大值:
'//定义一个函数获取日期最大值
public function maxVal(valu as range)
dim ax '//定义一个数组存储[分割数组
ax=Split(valu.Formula,"[") '//将单元格[分割成数组
dim datMenb as Date '//记忆日期变量
For Each am in ax '//遍历数组去获取日期值
dim st '//寄存日期字符串
dim dt '//寄存当前日期
st=Split(am,"]")[0] '//获取日期字符串,*]*中括号分割前一个就是
dt=CDate(Format(st, "0000-00-00 00:00:00")) '//将日期字符串转换成时间变量
If datMenb is not Null Then '//如果有记忆就参与比较,没有就直接赋值
If dt>datMenb Then
datMenb=dt '//有记忆,记忆没遍历的大就更新记忆
End if
Else
datMenb=dt '//没有记忆就给记忆
End if
Next am
maxVal=datMenb '//返回最大记忆值
End function
写好模块后,在excel里直接 =maxVal(单元格) 这样就好了追问

VBA是指宏吗? 代码运行错误,大神有完整一点的代码吗?

追答

肯定出错啊 我手打的,大小写拟规范一下Function,Dim,整个代码结构思路没问题

温馨提示:答案为网友推荐,仅供参考
第1个回答  2023-01-08

如图所示

公式:=MAX(TOCOL(--TEXTSPLIT(A1,{"[","]"}),2))

之后设置单元格格式为 e-mm-dd hh:mm:ss

追问

应该是因版本问题,无法使用TEXTSPLIT函数,请问大神还有其他公式可以代替吗? 旧版本的excel

追答

=MAX(IFERROR(IF(MID(A1,ROW($1:$500),1)="[",--MID(A1,ROW($2:$501),19)),))

追问

得出结果是0

追答

数组公式,ctrl+shift+enter结束输入呢

追问

感谢大神的解答~

本回答被提问者采纳
第2个回答  2023-01-08
如果时间都是在[]内的话,用代码还是比较好处理一些。