如何在单个单元格中找到最高和最低值

时间:2019-06-20 06:48:42

标签: excel excel-formula

我正在尝试查找单个单元格的最高和最低值。

字符串有很多变化

单元E9

a)63Ra b)64Ra c)65Ra d)62Ra e)61Ra f)63Ra g)60Ra h)62Ra

单元E10

a)45° b)44.5° c)45° d)45° e)45.2° f)44.7°

单元格E11

a)Ø14.290 b)Ø14.286 c)Ø14.283

单元格F9> 65

单元格G9> 60

单元格F10> 44.5

单元格G10> 45.2

单元格F11> 14.290

单元格G11> 14.283

我发现了类似的问题,但是我不确定如何根据自己的需要调整公式。 Extract maximum number from a string

2 个答案:

答案 0 :(得分:1)

尝试此vba代码

 Option Explicit
Sub cut_my_number_Please()
Dim reg As Object
Dim MY_match
Dim Matches
Dim my_max As Double: my_max = -1
Dim i%, lr%: lr = Cells(Rows.Count, 5).End(3).Row
Dim k%: k = 6
Union(Range("D9:D50"), Range("F9:R50")).ClearContents
Set reg = CreateObject("VBscript.RegExp")
With reg
.Pattern = "([\d\.]+)"
.Global = True
End With
 For i = 9 To lr
    If reg.test(Range("E" & i)) Then
      Set Matches = reg.Execute(Range("E" & i))
       For Each MY_match In Matches
         Cells(i, k) = MY_match * 1
         If MY_match * 1 >= my_max Then my_max = MY_match * 1
        k = k + 1
       Next
    End If
     Cells(i, "D") = my_max
     my_max = -1
      k = 6
 Next i
End Sub

答案 1 :(得分:0)

我对单元E9有一个答案。希望这会帮助您获得一个想法。

请插入模块,然后将下面的VBA代码复制到其中。

Public Function SplitText(pWorkRng As Range, pIsNumber As Boolean) As String
'Updateby Extendoffice
Dim xLen As Long
Dim xStr As String
xLen = VBA.Len(pWorkRng.Value)
For i = 1 To xLen
    xStr = VBA.Mid(pWorkRng.Value, i, 1)
    If ((VBA.IsNumeric(xStr) And pIsNumber) Or (Not (VBA.IsNumeric(xStr)) And Not (pIsNumber))) Then
        SplitText = SplitText + xStr
    End If
Next
End Function

然后使用下面的功能从中识别出最高价值。

=MAX(IF(LEN(SplitText(E9,TRUE))>1,+MID(SplitText(E9,TRUE),1,2),0),IF(LEN(SplitText(E9,TRUE))>3,+MID(SplitText(E9,TRUE),3,2),0),IF(LEN(SplitText(E9,TRUE))>5,+MID(SplitText(E9,TRUE),5,2),0),,IF(LEN(SplitText(E9,TRUE))>7,+MID(SplitText(E9,TRUE),7,2),0),IF(LEN(SplitText(E9,TRUE))>9,+MID(SplitText(E9,TRUE),9,2),0),IF(LEN(SplitText(E9,TRUE))>11,+MID(SplitText(E9,TRUE),11,2),0),IF(LEN(SplitText(E9,TRUE))>13,+MID(SplitText(E9,TRUE),13,2),0),IF(LEN(SplitText(E9,TRUE))>15,+MID(SplitText(E9,TRUE),15,2),0),IF(LEN(SplitText(E9,TRUE))>17,+MID(SplitText(E9,TRUE),17,2),0),IF(LEN(SplitText(E9,TRUE))>19,+MID(SplitText(E9,TRUE),19,2),0),IF(LEN(SplitText(E9,TRUE))>21,+MID(SplitText(E9,TRUE),21,2),0))

对于最小值,请使用MIN()。

相关问题