excel如何在一个单元格字符串内找出最大值?

请问我在A列单元格内有字符串,我要在B列中找出A列最大值,最大值选择区域是带有*号的比较*右侧数值,只有+号的则是所有数值。
30*25+28*20 最大值是25
17*20+27+32+27 最大值是32
38+24+32+63 最大值是 63
78+30+25*30 最大值是78

87*15+90*30 最大值是30

谢谢。
例如:A列为30*25+28*20,我需要比较25与20,最大值则是25;17*20+27+32+30+110,我需要比较20,27,32,30,110,最大值则是110;78+35+25*30,我需要比较78,35,30,最大值则是78则B列相应找出字符串内最大值。

按alt+f11,插入--模块,复制以下代码粘贴,alt+f4,工具--宏--安全性--低--确定,alt+f8,选最大值--执行。

Sub 最大值()
Dim h, g, z(), k, c, b
For h = 2 To 65535
If Cells(h, 1) <> "" Then
g = 1
k = 1
c = 0
ReDim z(Len(Cells(h, 1)))
For g = g To Len(Cells(h, 1))
If Mid(Cells(h, 1), g, 1) = "+" Then
c = c + 1
z(c) = Val(Mid(Cells(h, 1), k, g - k))
k = g + 1
ElseIf Mid(Cells(h, 1), g, 1) = "*" Then
k = g + 1
End If
Next g
z(0) = Val(Mid(Cells(h, 1), k, g - k))
For b = 1 To c
If z(0) > z(b) Then
z(0) = z(0)
Else
z(0) = z(b)
End If
Next b
Cells(h, 2) = z(0)
End If
Next h
End Sub
温馨提示:答案为网友推荐,仅供参考
第1个回答  2013-04-18
如果:A列30*25+28*20 是一个整体话,很难按照你这种逻辑取出最大值。不是不能,是很难。
提供两种思路,用简单函数如find,left,right,等等把A列的数值截出来,然后用if一个一个比较,很麻烦,且只能一个一个的解析比较,通用性不好。另一种思路就是用VBA写一个自定义函数。
两种都很难实现,建议放弃。。。
第2个回答  2013-04-18
你说的不详细!
最好有个图像的例子
看不出来那个是A列那个是B列

中间的符号都是加号和乘号吗?追问

嗯,只有*与+两个符号

第3个回答  2013-04-19
将数据分列后,求MAX