У меня есть сценарий доступности сервера, который сообщает 0 или 1 в CSV-файле. Я пытаюсь создать пользовательскую функцию VBA в Excel 2010 для анализа каждого столбца (сервера) в файле и выделить все экземпляры, в которых «1» встречается 3+ раз подряд.Excel, Выделите ряд последовательных повторяющихся значений
Time srv1 srv2 srv3 srv4
2:01:00 AM 0 0 0 0
2:21:00 AM 1 0 0 0
2:41:00 AM 1 0 0 0
3:01:00 AM 1 0 0 0
3:21:00 AM 1 0 0 0
3:41:00 AM 0 0 0 0
4:01:00 AM 0 0 0 0
Я в общей сложности новичок в VBA & UDF, но вот то, что я пытался (без успеха):
Function HighlightConsecutive(ByRef rng As Range, myNum) As Long
Dim a, i As Long
a = rng.Value
For i = 1 To UBound(a, 2) - 1
If (a(1, i + 1) = myNum) * (a(1, i) = myNum) Then
CountConsecutive = CountConsecutive + 1
End If
If (CountConsecutive >= 3) Then
ActiveCell.Interior.Color = RGB(255, 0, 0)
End If
Next
End Function
Я также попробовал кучу разных решений с формулами и условное форматирование, как видно на SO и в другом месте, но это откровенно кажется неуклюжим и недостаточно мощным
Фактические файлы содержат 16 столбцов @ 720 строк, и у меня будет много их для анализа. Я намерен использовать фильтрацию для просмотра только выделенных ячеек.
Дополнительный кредит, если функция может игнорировать один «0» в крупной серии «1 '
Спасибо, что сработало, как описано для столбца b. Каков наилучший способ вызвать sub и может ли он быть общим? Мне понравилась идея использования функции, потому что тогда я могу просто подойти к нижней части столбца, использовать мою функцию (например, формулу), а затем скопировать ее в другие столбцы. У меня много файлов с переменными номерами столбцов. – user2655065