【问题标题】:For each Column highlight max value (Excel)对于每列突出显示最大值(Excel)
【发布时间】:2011-12-06 09:00:00
【问题描述】:

我有一个 Excel 表,每列中的值从单元格 2:21 开始

我需要用最大值突出显示每列中的相应单元格,并尝试使用宏循环遍历它。但我只知道如何针对给定的硬编码范围执行此操作..

Private Sub Worksheet_Activate()
Dim zelle As Range
  For Each zelle In ActiveSheet.Range("B2:B21")
    If zelle.Value = Application.WorksheetFunction.Max(Range("B2:B21")) Then
      zelle.Interior.ColorIndex = 6
    Else
      zelle.Interior.ColorIndex = xlNone
    End If
  Next
End Sub

我尝试为列使用一个新范围,我给出了范围 ("B:IT") 并遍历该范围,但没有奏效。

也许只有 2 或 3 行?

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    这可能对你有用。它不是使用硬编码的范围,而是循环使用任何列,并针对具有不同“长度”的列进行调整。它假定一个标题行和列。

    Private Sub Worksheet_Activate()
    Dim zelle As Range
    Dim rng As Range
    Dim lCol As Long
    Dim lLastRow As Long
      With ActiveSheet
        For lCol = 2 To .UsedRange.Columns.Count
          lLastRow = .Cells(.Rows.Count, lCol).End(xlUp).Row
          Set rng = .Range(.Cells(2, lCol), .Cells(lLastRow, lCol))
          For Each zelle In rng
            If zelle.Value = Application.WorksheetFunction.Max(rng) Then
              zelle.Interior.ColorIndex = 6
            Else
              zelle.Interior.ColorIndex = xlNone
            End If
          Next
        Next lCol
      End With
    End Sub
    

    【讨论】:

      【解决方案2】:

      另一种方法是不使用 VBA,即

      1. 计算最大值,例如在底部 (=MAX(A1:A10)) 和
      2. 要使用条件格式,突出显示与 =MAX(A1:A10) 计算结果匹配的单元格。

      我知道这个问题提到了 VBA,但这使它变得动态且独立于 VBA。

      【讨论】:

      • 这也是一个不错的解决方案:) 但是在将其推过许多列时,您必须检查是否应使用下一列的格式。否则值可能会被修改。
      • +1 更好的方法,可以自动更新并避免时间消耗循环。
      【解决方案3】:

      使用变量:

      Range(Cells(row_var_1, col_var_1),Cells(row_var_2, col_var_2))
      

      其中row_var_1col_var_1row_var_2col_var_2 是可以在循环中迭代的变量。

      【讨论】:

        猜你喜欢
        • 2012-05-12
        • 2021-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-04
        • 1970-01-01
        • 1970-01-01
        • 2019-12-12
        相关资源
        最近更新 更多