如果您拥有包含 AGGREGATE 函数的 Excel (2010+) 版本,则实际上不需要 VBA,您可以使用工作表公式来完成:
=AGGREGATE(14,6,--TRIM(MID(SUBSTITUTE(SUBSTITUTE(A1,",",REPT(" ",99)),"=",REPT(" ",99)),seq_99,99)),1)
其中 seq_99 是一个命名公式,它指的是:
=IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)
函数产生一个数组,其中一些值是数字; AGGREGATE 函数返回数组中的最大值,忽略错误。
以下公式适用于早期版本的 Excel,必须作为数组公式输入,方法是按住 ctrl + shift 同时点击 enter 如果您正确执行此操作,Excel 将在公式周围放置大括号 {...}。
如果你有2007,可以使用IFERROR
=MAX(IFERROR(--TRIM(MID(SUBSTITUTE(SUBSTITUTE(A2,",",REPT(" ",99)),"=",REPT(" ",99)),seq_99,99)),0))
对于早期版本,您可以使用:
=MAX(IF(ISERROR(--TRIM(MID(SUBSTITUTE(SUBSTITUTE(A3,",",REPT(" ",99)),"=",REPT(" ",99)),seq_99,99))),0,--TRIM(MID(SUBSTITUTE(SUBSTITUTE(A3,",",REPT(" ",99)),"=",REPT(" ",99)),seq_99,99))))