Excel 2010 – Visual Basic在彩色单元格中查找最小值和最大值

  • 我想在excel范围内find最小值和最大值
  • 只有在着色的黄色细胞中,没有颜色的细胞将不被考虑用于find最大值和最小值**
  • 有色单元格的范围是范围A:A **

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

有没有人有一个想法,我在这里失踪?

非常感谢

编辑

我做了debugging,所有的variables都是空的, 除了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 

你的问题是,你的变体数组是无意义的,并没有实际存储任何值循环。

你可以简化你的代码到这个范围循环,这个循环也只是在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