将Excel宏中记录的COUNTIF范围转换为可变范围

时间:2015-10-22 16:08:48

标签: excel vba countif

我正在寻找帮助将Excel宏中记录的COUNTIF范围转换为可变范围。我正在使用Excel VBA来处理每月有大量记录的月度文件。

我录制了一个宏来修改和过滤记录,并且能够在此站点的帮助下将大多数范围转换为可变范围。但是,我正在努力将范围转换为下面显示的COUNTIF函数的可变范围,该函数使用颜色标识A列中重复的ID。然后按颜色过滤该列。

Range("A2").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.FormatConditions.Add Type:=xlExpression, Formula1:= _
    "=COUNTIF($A$2:$A$7977,A2)>=2"
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1).Interior
    .PatternColorIndex = xlAutomatic
    .Color = 65535
    .TintAndShade = 0
End With
Selection.FormatConditions(1).StopIfTrue = True
Range(“A1”).Select
Selection.AutoFilter
ActiveSheet.Range(“$A$1:$P$7977”).AutoFilter Field:=1, Criteria1:=RGB(255,255,0),Operator:=xlFilter Cell Color

1 个答案:

答案 0 :(得分:0)

您需要一个可以帮助您找到列的最后一行的函数。见下文:

Function GetLastRow(sht As Worksheet, col as String) As Integer
    GetLastRow = sht.Range(col & CStr(sht.Rows.Count)).End(xlUp).row
End Function

在您需要放置范围末尾的每个位置调用此函数,并使用工作表的名称和列的字母作为参数。请参阅下文了解它的工作原理:

"=COUNTIF($A$2:$A$" & GetLastRow(Sheets("Sheet1"),"A") & ",A2)>=2"