我有一张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
我尝试使用新的范围列,我给了Range(“B:IT”)并迭代了那个但是没有用。
也许只有2或3行?
答案 0 :(得分:6)
这可能适合你。它不是使用硬编码范围,而是循环使用任何列,并调整具有不同“长度”的列。它假设一个标题行和列。
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
答案 1 :(得分:2)
另一种方法是没有VBA ,是
MAX(A1:A10)
)和MAX(A1:A10)
计算结果匹配的单元格。 我知道这个问题涉及VBA,但这使它变得动态且与VBA无关。
答案 2 :(得分:0)
使用变量:
Range(Cells(row_var_1, col_var_1),Cells(row_var_2, col_var_2))
row_var_1
,col_var_1
,row_var_2
和col_var_2
是可以在循环中迭代的变量。