我想我需要在这里做一个循环,但我不太确定如何写出语法,因为我习惯于使用max函数。
我需要创建的函数有两个数组;第一个数组具有数值,而第二个数组具有字符串。该函数应该在第一个数组中找到最大的值,并从第二个数组返回相应的字符串。
我不确定如何构建我的循环。我想我需要使用某种形式的条件语句。
这是我到目前为止所拥有的:
Function FindMax(valueArray() As Integer, nameArray() As String) As String
Dim i As Long, y As Long
y = valueArray(0) 'change to 1 if using a different array structure
FindMax = nameArray(0) 'change to 1 if using a different array structure
For i = LBound(valueArray, 1) To UBound(valueArray, 1)
If valueArray(i) > y Then
y = valueArray(i)
FindMax = nameArray(i)
End If
Next i
Debug.Print ; y
Debug.Print ; FindMax
结束功能
Function FindMax(valueArray() As Integer, nameArray() As String) As String
dim i as long, y as long
y = valueArray(0) 'change to 1 if using a different array structure
FindMax = nameArray(0) 'change to 1 if using a different array structure
for i = lbound(valueArray,1) to ubound(valueArray,1)
if valueArray(i) > y then
y = valueArray(i)
FindMax = nameArray(i)
end if
next i
End Function
注意代码的下半部分。看看在哪说:
this=FindMax(arr,arr2)
?
这就是你调用函数的方式。显然你需要两个数组传递给这个函数。我建议谷歌搜索“函数vba”并做一些轻读。
这是一个工作表公式,可以快速轻松地完成工作:
=INDEX($C$3:$C$10,MATCH(MAX($B$3:$B$10),$B$3:$B$10))
如果你的:
B3:B10
中,以及C3:C10
中...然后可以找到最大值:
{MyMax} =MAX($B$3:$B$10)
...可以找到{MyMax}的“位置#”:
{Post#} =MATCH(
{MyMax} ,$B$3:$B$10)
...和相应的字符串可以找到:
=INDEX($C$3:$C$10,
{Post#} )
......所以,如果我们把它们放在一起,我们得到:
=INDEX($C$3:$C$10,MATCH(MAX($B$3:$B$10),$B$3:$B$10))