VBA查找最大值,不使用MAX函数并打印相应的单元格

标签 vba excel function max

我想我需要在这里做一个循环,但我不太确定如何准确地写出语法,因为我习惯于使用 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

结束功能

最佳答案

这是一个工作表公式,可以快速轻松地完成工作:

=INDEX($C$3:$C$10,MATCH(MAX($B$3:$B$10),$B$3:$B$10))

screenshot

如果您的:
  • 找到的号码最大 在单元格中 B3:B10 , 和,
  • 您要返回的字符串位于单元格 C3:C10

  • ...然后 最大 可以通过以下方式找到:

    {MyMax} =MAX($B$3:$B$10)
    ...和 ​​{MyMax} 的“ Position # ` 可以通过以下方式找到:

    {位置#} =MATCH( {MyMax} ,$B$3:$B$10)
    ...并且可以通过以下方式找到相应的字符串:
    =INDEX($C$3:$C$10, {位置#} )
    ...所以如果我们把它们放在一起,我们会得到:
    =INDEX($C$3:$C$10,MATCH(MAX($B$3:$B$10),$B$3:$B$10))

    关于VBA查找最大值,不使用MAX函数并打印相应的单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48855953/

    相关文章:

    python - vba 中的模块与面向对象编程

    excel - 删除vlookup结果中的#N/A

    c - 结构困难 C

    javascript - 自动绑定(bind)JS类方法有什么好方法?

    vb.net - 将Visio宏导出到Visio COM加载项

    excel - 在多张纸上隐藏空白列

    Excel - 根据另一个字段计算范围内的唯一性

    xml - Excel 何时在 workbook.xml(或其他 xml)文件中用单引号括起工作表名称?

    c# - 帮助动态范围压缩功能(音频)

    Excel VBA - 刷新选定的查询/连接