【问题标题】:Excel 2010 - Visual Basic to find minimum and maximum values in colored cellsExcel 2010 - Visual Basic 查找彩色单元格中的最小值和最大值
【发布时间】:2015-01-06 13:12:01
【问题描述】:
  • 我想在 Excel 范围内查找最小值和最大值
  • 仅在有颜色的黄色单元格中,不考虑没有颜色的单元格来查找最大值和最小值**
  • 彩色单元格的范围是范围 A:A**

我已经编写了这段代码,但它只返回 D5 和 E5 单元格中的一个空单元格。

有人知道我在这里缺少什么吗?

非常感谢

编辑

我进行了调试,所有变量都是空的,除了 amarelosMini_max 的值都为 2 - 我不明白为什么。

我在 A:A 中的范围值从 1 到 20,黄色的值是 2、3、4 和 5。如果代码正确,它应该给我 2 和 5,有最小值和最大值。

Dim amarelosMin As Range
Dim vAmarelosmMin As Variant
ReDim vAmarelosmMin(Range("A1:A3").Rows.count - 1)
For Each amarelosMin In ActiveSheet.Range("A:A")
If amarelosMin.Interior.ColorIndex = 6 Then

    i_min = LBound(vAmarelosmMin)
    i_max = UBound(vAmarelosmMin)

    Max = vAmarelosmMin(i_min)
    Min = vAmarelosmMin(i_min)
    For i = i_min + 1 To i_max
        If vAmarelosmMin(i) > Max Then
            Max = vAmarelosmMin(i)
        ElseIf vAmarelosmMin(i) < Min Then
            Min = vAmarelosmMin(i)
        End If
    Next

End If
Next amarelosMin
ActiveSheet.Range("C5") = "Minimo dos valores a amarelo"
ActiveSheet.Range("D5") = Min
ActiveSheet.Range("E5") = Max

【问题讨论】:

  • 是的,我的颜色指数测试是正确的,6 是黄色。另外,我有一段代码将所有黄色值相加,并且可以很好地使用同一行代码进行测试。
  • 您在 A 列中查看的实际范围是多少?
  • A2:A5,值为 2,3,4,5。这是黄色范围。

标签: excel vba


【解决方案1】:

您的问题是您的变量数组是不必要的,并且在您循环时实际上并没有存储任何值。

您可以将代码简化为这个范围循环,它也只查看 A 列的已使用部分,而不是每个单元格

Sub Recut
Dim amarelosMin As Range
Dim dbMin As Double
Dim dbMax As Double

dbMin = Application.Max(Range("A:A"))
dbMax = Application.Min(Range("A:A"))

For Each amarelosMin In Range([a1], Cells(Rows.Count, "A").End(xlUp))
    If amarelosMin.Interior.ColorIndex = 6 Then
        If amarelosMin.Value < dbMin Then
            dbMin = amarelosMin.Value
        Else
            If amarelosMin.Value > dbMax Then dbMax = amarelosMin.Value
        End If
    End If
Next amarelosMin

ActiveSheet.Range("C5") = "Minimo dos valores a amarelo"
ActiveSheet.Range("D5") = dbMin
ActiveSheet.Range("E5") = dbMax
End Sub

【讨论】:

  • 已解决。非常感谢 brettdj 的时间和很好的解决我的问题。现在它会正确抛出最小值和最大值。
猜你喜欢
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2021-12-31
  • 2012-09-16
  • 2012-10-18
  • 2019-12-21
  • 1970-01-01
  • 2017-04-20
相关资源
最近更新 更多