如何使用vba从输入引用中查找范围中的下一个最大数字

时间:2015-08-27 15:11:06

标签: vba excel-formula

早上好。我被要求根据特定的数字找到一列数字中的下一个最大数字。例如,任务需要切割一定长度的金属,我们有特定尺寸的金属,如94“,125”,140“等...如果客户想要切割112.5”,我们需要选择一块125“。有人可以帮我解决这个问题。如果可能的话还是VBA或者优秀的公式。感谢百万。

从评论中添加:

Sub FindMe() 
    Dim x As Integer 
    Dim N As Integer 
    N = Range("j2") 
    Rownum = Range("j4", Range("j4").End(xlDown)).Rows.Count 
    For x = 4 To Rownum 
        If Range("j" & x) > N Then 
             Cells("I2") = Cells("J" & x) 
        End If 
        Exit Sub 
    Next x 
End Sub 

1 个答案:

答案 0 :(得分:1)

假设您的尺寸在A列中,而客户要求的尺寸在B1:

  1. 对A列中的所有值进行排序,使它们下降(从最大到最小)

  2. 在C1

    中输入此公式

    =INDEX(A:A,MATCH(B1,A:A,-1))

  3. VBA替代方案(根据要求)

    假设A1中有标题:

    Sub MacroMan()
    
    Dim vals, size, result
    '// assign range values to array
    vals = Range("A2:A" & Cells(Rows.count, 1).End(xlUp).Row).value
    
    '// bubble sort array to descending values
        For i = LBound(vals) To UBound(vals)
             For j = i + 1 To UBound(vals)
                 If vals(i, 1) < vals(j, 1) Then
                     SrtTemp = vals(j, 1)
                     vals(j, 1) = vals(i, 1)
                     vals(i, 1) = SrtTemp
                 End If
             Next j
         Next i
    '// required size
    size = Range("C1").value
    
    '// find required size in array
    result = WorksheetFunction.Match(size, vals, -1)
    
    '// show result
    MsgBox "Size required: " & vals(result, 1)
    
    End Sub