早上好。我被要求根据特定的数字找到一列数字中的下一个最大数字。例如,任务需要切割一定长度的金属,我们有特定尺寸的金属,如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
答案 0 :(得分:1)
假设您的尺寸在A列中,而客户要求的尺寸在B1:
对A列中的所有值进行排序,使它们下降(从最大到最小)
在C1
中输入此公式 =INDEX(A:A,MATCH(B1,A:A,-1))
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