2015-10-22 10 views
-1

Я ищу помощь для преобразования диапазона COUNTIF, записанного в макросе Excel, в диапазон переменных. Я использую Excel VBA, чтобы манипулировать ежемесячным файлом, который каждый месяц имеет переменное количество записей.Преобразование диапазона COUNTIF, записанного в макросе Excel, в переменный диапазон

Я записал макрос для изменения и фильтрации записей и смог преобразовать большую часть диапазонов в диапазоны переменных с помощью этого сайта. Тем не менее, я борюсь с преобразованием диапазона в переменный диапазон для функции COUNTIF, показанной ниже, которая идентифицирует дублированный ID s в столбце A с цветом. Затем столбчик фильтруется цветом.

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 
+0

Hi. Пожалуйста, опишите проблему. Тогда мы сможем что-то помочь. – Tomamais

ответ

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" 
Смежные вопросы