【问题标题】:How can I find the minimum value of an array in VBA?如何在 VBA 中找到数组的最小值?
【发布时间】:2019-05-01 09:56:01
【问题描述】:

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

我已将表格转换为二维数组(节省处理时间)并开始通过 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

【问题讨论】:

    标签: excel vba minimum


    【解决方案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,这是一个零值:)

    【讨论】:

      猜你喜欢
      • 2016-11-21
      • 2022-01-24
      • 1970-01-01
      • 2021-02-10
      • 2021-03-15
      • 1970-01-01
      • 2015-04-28
      • 1970-01-01
      相关资源
      最近更新 更多