【问题标题】:How to find max and min in an alphanumeric data array in Excel?如何在 Excel 的字母数字数据数组中找到最大值和最小值?
【发布时间】:2018-03-05 10:11:01
【问题描述】:

我有以下类型的数据

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'和'I PHY ml'对应的最小值和最大值 p>

请帮忙。

我正在寻找的解决方案

Grid           Min      Max
II Cm2         447      466
I Phy Hn        60       75
I Phy ml        76       79

编辑: 我已经尝试了互联网上的几个可用选项,使用 VLOOKUP、RIGHT、INDEX,......但没有一个给我预期的答案。我更喜欢不使用辅助列的解决方案。如果需要使用辅助列,请提出一个无需修改我的 cols A:D 的解决方案。

对于 Min,我有一个解决方案 MIN(VLOOKUP("II Cm2",$AE$4:$AF$171,2,0),但它需要从 单个列中提取数字的辅助列 我的原始数据。

也欢迎使用宏/脚本的解决方案。

【问题讨论】:

  • 最大值和最小值具体是什么值?
  • 对应说“II Cm2”,这里min是447,max是466。希望清楚。
  • 请说明为什么要投反对票?
  • 分享您的研究对每个人都有帮助。告诉我们您尝试了什么以及为什么它不能满足您的需求。这表明您已经花时间尝试帮助自己,它使我们免于重复明显的答案,最重要的是它可以帮助您获得更具体和相关的答案!另见:How to Ask
  • 我会补充的,谢谢

标签: excel max min alphanumeric


【解决方案1】:

如果您只需要从范围中提取最小/最大值,请在单元格G2 中使用此公式并将其拖到您在范围F2:F5 中输入的值的底部。 =MIN(IF(ISNUMBER(SUBSTITUTE($A$2:$D$500,$F2,"")+0),SUBSTITUTE($A$2:$D$500,$F2,"")+0)) 您必须使用 CTRL+SHIFT+ENTER 组合输入它,因为它是数组公式。对于 Max,只需在公式中替换 Min。

【讨论】:

  • 谢谢。但是你能修改它以给出整个范围内的最低/最高吗?也分别用于“I Phy Hn”和“I PHY ml”。
  • 尝试添加 if 公式以根据您的需要进行调整。
  • 我能想到的解决方案需要更多的辅助列。也不能分别给出'I Phy Hn'和'I PHY ml'。
  • 您好,我已经根据您的需要调整了答案。如果您觉得这有帮助,请标记为已回答。
【解决方案2】:

您可以阅读有关如何创建将一系列单元格作为参数的公式here

This 是一种只返回字符串中数字的方法。

这是一个function,它在一个字符串中向后查找一个字符串。

This 告诉您如何将字符串更改为数字。

以下是将它们组合在一起以找到“最大值”的一种方法:

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

【讨论】:

  • 我无法尝试您的答案。感谢您的努力和回答。接受的答案很容易完成工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 2011-10-31
  • 1970-01-01
  • 2018-07-04
  • 1970-01-01
  • 2017-05-30
相关资源
最近更新 更多