如何在VBA中找到数组的最小值?

时间:2018-11-29 10:49:39

标签: excel vba minimum

我有一个excel VBA宏,该宏将用于计算加工零件的尺寸。宏的第一部分设置为从工作表中获取值,并根据一些预定义的选项计算面积并将其打印为excel。第二部分是我遇到的问题。

我已将表转换为2D数组(节省处理时间),并开始通过2个循环填充数组,其中1个控制行,1个控制列。在循环中,我试图找到最小的零值和关联的列,这将有助于工作的宏的最后一部分。我还将最小值设置为一个较大的值,永远不会超过该值。

当我逐步运行宏时,遇到的第一个无零值会将最小值重置为零,并且不更改列号。谁能指导我哪里出了问题?

maxtubesel = Sheets("Tube OD").Cells(Rows.Count, "R").End(xlUp).Row - 4

'Find min and col value in array
Dim resarray() As Long
ReDim resarray(maxtubesel, 5)
min = 1000000
col = 0
For m = 0 To 2 ' maxtubesel
    For n = 0 To 4
        resarray(m, n) = Sheets("Tube OD").Cells(4 + m, 26 + n)
            If Sheets("Tube OD").Cells(4 + m, 26 + n) <> "" Or Sheets("Tube OD").Cells(4 + m, 26 + n) <> 0 Then
                min = Sheets("Tube OD").Cells(4 + m, 26 + n) And col = n
            End If
    Next n
Next m

1 个答案:

答案 0 :(得分:1)

此行

min = Sheets("Tube OD").Cells(4 + m, 26 + n) And col = n

应该是两行

min = Sheets("Tube OD").Cells(4 + m, 26 + n)
col = n

否则实际发生的是将min设置为一个布尔值,该值检查这两个语句是否都为真:

Sheets("Tube OD").Cells(4 + m, 26 + n)
col = n

似乎不是,所以min = False的值为零:)