如何在 Excel 中的字母数字数据数组中找到最大值和最小值?
How to find max and min in an alphanumeric data array in Excel?
我有以下几种数据
A1 B1 C1 D1
II Cm2 447 I Phy Hn 60 II Cm2 457 I Phy Hn 70
II Cm2 448 I Phy Hn 61 II Cm2 458 I Phy Hn 71
II Cm2 449 I Phy Hn 62 II Cm2 459 I Phy Hn 72
II Cm2 450 I Phy Hn 63 II Cm2 460 I Phy Hn 73
II Cm2 451 I Phy Hn 64 II Cm2 461 I Phy Hn 74
II Cm2 452 I Phy Hn 65 II Cm2 462 I Phy Hn 75
II Cm2 453 I Phy Hn 66 II Cm2 463 I PHY ml 76
II Cm2 454 I Phy Hn 67 II Cm2 464 I PHY ml 77
II Cm2 455 I Phy Hn 68 II Cm2 465 I PHY ml 78
II Cm2 456 I Phy Hn 69 II Cm2 466 I PHY ml 79
需要找到'II Cm2'、'I Phy Hn'和'对应的最小值和最大值我PHY ml'
请帮忙。
我正在查看的解决方案
Grid Min Max
II Cm2 447 466
I Phy Hn 60 75
I Phy ml 76 79
编辑:
我已经尝试了几个在互联网上可用的选项,使用 VLOOKUP、RIGHT、INDEX ……但是 none 给了我预期的答案。我更喜欢不使用辅助列的解决方案。如果需要使用辅助列,请提出无需修改我的列的解决方案 A:D.
对于 Min,我有一个解决方案 MIN(VLOOKUP("II Cm2",$AE$4:$AF$171,2,0),但它需要从 中提取数字的辅助列我的原始数据的单列。
也欢迎使用 macro/script 的解决方案。
如果您只需要从范围中提取 Min/Max 个数字,请在单元格 G2
中使用此公式并将其拖到您在范围 F2:F5
中输入的值的底部。 =MIN(IF(ISNUMBER(SUBSTITUTE($A:$D0,$F2,"")+0),SUBSTITUTE($A:$D0,$F2,"")+0))
您必须使用 CTRL+SHIFT+ENTER
组合输入它,因为它是数组公式。对于 Max 只需替换公式中的 Min。
您可以阅读有关如何创建将单元格区域作为参数的公式的信息here。
This 是 return 字符串中数字的一种方法。
这是一个 function,它在一个字符串中反向查找另一个字符串。
This 告诉您如何将字符串转换为数字。
下面是您可以将它们组合在一起以找到您的 'max' 值的一种方法:
Function MaxValueOfRange(rng As Range) As Integer
Dim c As Range, strIn As String, intRet As Integer
For Each c In rng 'loop through each cell in range
strIn = Right(c, Len(c) - InStrRev(c, " ")) 'get everything after the last 'space'
Next
If Val(strRet) > intRet Then intRet = Val(strRet) 'convert it to number and keep the biggest one
MaxValueOfRange = intRet 'return the biggest number
End Function
我有以下几种数据
A1 B1 C1 D1
II Cm2 447 I Phy Hn 60 II Cm2 457 I Phy Hn 70
II Cm2 448 I Phy Hn 61 II Cm2 458 I Phy Hn 71
II Cm2 449 I Phy Hn 62 II Cm2 459 I Phy Hn 72
II Cm2 450 I Phy Hn 63 II Cm2 460 I Phy Hn 73
II Cm2 451 I Phy Hn 64 II Cm2 461 I Phy Hn 74
II Cm2 452 I Phy Hn 65 II Cm2 462 I Phy Hn 75
II Cm2 453 I Phy Hn 66 II Cm2 463 I PHY ml 76
II Cm2 454 I Phy Hn 67 II Cm2 464 I PHY ml 77
II Cm2 455 I Phy Hn 68 II Cm2 465 I PHY ml 78
II Cm2 456 I Phy Hn 69 II Cm2 466 I PHY ml 79
需要找到'II Cm2'、'I Phy Hn'和'对应的最小值和最大值我PHY ml'
请帮忙。
我正在查看的解决方案
Grid Min Max
II Cm2 447 466
I Phy Hn 60 75
I Phy ml 76 79
编辑: 我已经尝试了几个在互联网上可用的选项,使用 VLOOKUP、RIGHT、INDEX ……但是 none 给了我预期的答案。我更喜欢不使用辅助列的解决方案。如果需要使用辅助列,请提出无需修改我的列的解决方案 A:D.
对于 Min,我有一个解决方案 MIN(VLOOKUP("II Cm2",$AE$4:$AF$171,2,0),但它需要从 中提取数字的辅助列我的原始数据的单列。
也欢迎使用 macro/script 的解决方案。
如果您只需要从范围中提取 Min/Max 个数字,请在单元格 G2
中使用此公式并将其拖到您在范围 F2:F5
中输入的值的底部。 =MIN(IF(ISNUMBER(SUBSTITUTE($A:$D0,$F2,"")+0),SUBSTITUTE($A:$D0,$F2,"")+0))
您必须使用 CTRL+SHIFT+ENTER
组合输入它,因为它是数组公式。对于 Max 只需替换公式中的 Min。
您可以阅读有关如何创建将单元格区域作为参数的公式的信息here。
This 是 return 字符串中数字的一种方法。
这是一个 function,它在一个字符串中反向查找另一个字符串。
This 告诉您如何将字符串转换为数字。
下面是您可以将它们组合在一起以找到您的 'max' 值的一种方法:
Function MaxValueOfRange(rng As Range) As Integer
Dim c As Range, strIn As String, intRet As Integer
For Each c In rng 'loop through each cell in range
strIn = Right(c, Len(c) - InStrRev(c, " ")) 'get everything after the last 'space'
Next
If Val(strRet) > intRet Then intRet = Val(strRet) 'convert it to number and keep the biggest one
MaxValueOfRange = intRet 'return the biggest number
End Function