我会尽可能准确地解释我的情况。
1 2 3 4 5
1 3352 3635 4458 4137 4690
2 3352 3635 4458 4137 4690
3 3352 3635 4458 4137 4690
4 3352 3635 4458 4137 4690
5 3352 3635 4458 4137 4690
所以上表纯粹是为了说明我的问题。我的实际表格将包含不断变化的值。
我为我提供了一些值,例如:2和5。
所以基本上我只想搜索编号为2和5的列。我想知道最小值。
现在对于棘手的部分,在最小成本旁边,我希望它返回值相应的行号(左边的1-5)。现在最重要的是。如果有两个相同的值,则应选择行号最高的值。所以最小值将是相同的,但它将返回最高的行号。
我已经用常规的excel功能尝试了几周,并没有得到我想要的东西。我们的想法是拥有一个可以使用不同的输入(不同的参考列)拖动和计算多次的函数。虽然所有的功能我都能找到复杂的复制位置。
我希望有人有个主意。我目前正在关注VBA,但我还没有能够构建有效的东西。
提前致谢!
答案 0 :(得分:1)
创建要检查的列数组,然后获取这些列的总分:
Sub MinFromColumns()
Dim ColumnsToCheck(1 To 3) As Long
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
ColumnsToCheck(1) = 2
ColumnsToCheck(2) = 5
ColumnsToCheck(3) = 7
overallmin = wf.Min(Columns(ColumnsToCheck(1)))
For i = 2 To 3
If wf.Min(Columns(ColumnsToCheck(i))) < overallmin Then overallmin = wf.Min(Columns(ColumnsToCheck(i)))
Next i
MsgBox overallmin
End Sub
修改#1:强>
以下是从工作表单元格中获取列选择器的示例:
Sub MinFromColumns()
Dim ColumnsToCheck(1 To 3) As Long
Dim wf As WorksheetFunction
Set wf = Application.WorksheetFunction
ColumnsToCheck(1) = Sheets("Sheet3").Range("K1")
ColumnsToCheck(2) = Sheets("Sheet3").Range("L1")
ColumnsToCheck(3) = Sheets("Sheet3").Range("M1")
overallmin = wf.Min(Columns(ColumnsToCheck(1)))
For i = 2 To 3
If wf.Min(Columns(ColumnsToCheck(i))) < overallmin Then overallmin = wf.Min(Columns(ColumnsToCheck(i)))
Next i
MsgBox overallmin
End Sub
修改#2:强>
周一比预期更早到达。
删除旧代码并将其替换为:
Sub MinFromColumns()
Dim OverallMin As Variant
Dim ColumnsToCheck(1 To 3) As Long
Dim wf As WorksheetFunction, r As Range
Dim addy As String, rColumn As Range
Set wf = Application.WorksheetFunction
ColumnsToCheck(1) = Sheets("Sheet3").Range("K1")
ColumnsToCheck(2) = Sheets("Sheet3").Range("L1")
ColumnsToCheck(3) = Sheets("Sheet3").Range("M1")
OverallMin = wf.Min(Columns(ColumnsToCheck(1)))
For i = 2 To 3
Set rColumn = Columns(ColumnsToCheck(i)).Cells
If wf.Min(rColumn) < OverallMin Then
OverallMin = wf.Min(rColumn)
Set r = rColumn.Find(what:=OverallMin)
addy = r.Address(0, 0)
End If
Next i
MsgBox OverallMin & vbCrLf & addy
End Sub
addy 给出最小值的确切位置(行和列)