VBA for max of array返回值

时间:2015-07-02 15:47:29

标签: arrays vba excel-vba max excel

我正在尝试编写一个宏,该宏根据另一列中的值返回列的最大值。我以为我的代码工作正常,但它只返回零值。我正在尝试为大约2500行的表格做这个。我创建了一个较小的表来试图弄清问题是什么,但我得到了相同的结果(它返回0而不是10)。

这是我的代码:

Sub test()

    imax = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

    Dim MaxArray(2 To 11) As String

    For t = 2 To 11

        If (Cells(t, 1) = 1) Then MaxArray(t) = Cells(t, 2).Value

    Next t

    Cells(2, 3).Value = WorksheetFunction.max(MaxArray)

End Sub

这是我得到的结果:

Column 1    Column 2    Max of Column 1

    1           4              0
    1           6
    1           3
    1           10
    1           9
    2           5
    2           2
    2           3
    2           8

有谁能告诉我这是什么问题?

一些注意事项:我知道如何使用数据透视表或excel中的公式来实现这一点,但我真的希望它能够在宏之前运行一堆其他东西。我只想按下按钮一次而不是停止并且必须添加一个表或公式,然后按下另一个按钮继续。

2 个答案:

答案 0 :(得分:0)

尝试:

$('input').focus(function(){
    $('input').removeClass('focus');
    $(this).addClass('focus');
})
$("#foo tbody tr").dblclick(function() {    
        if ($(this).find('input.focus').length != 0) {
            alert('g');
        }
        // otherwise, do something with the row
       $(this).find('input.focus').removeClass("focus");
});

也许还将数组类型更改为数字Cells(2, 3).Value = Evaluate("=MAX(B2:B11))") Double可能有所帮助。

顺便说一下,我认为这也可以减少你的循环:

Integer

答案 1 :(得分:0)

我用整数建议修复它但后来我意识到我的实际数字四舍五入到小数点后两位或三位。我试图通过使用Long而不是Integer来修复它,但它仍然只返回一个整数。如何让它包含小数位?

代码:

Sub test2()

imax = ActiveSheet.Cells.SpecialCells(xlCellTypeLastCell).Row

Dim MaxArray(2 To 11) As Long

For t = 2 To 11  

    If (Cells(t, 1) = 1) Then MaxArray(t) = Cells(t, 2).Value

Next t

Cells(2, 3).Value = WorksheetFunction.max(MaxArray)

End Sub

数据表:

第1列第2列最大1的

1         4.66      10
1         6.2
1         3.987
1         10.125
1         9.1
2         5.3
2         2.21
2         3.654
2         8.12
2         20.56

感谢您的帮助!