Excel (нужен VBA?) Выберите все ячейки в строке, которые имеют определенный формат и заполнены, затем подсчитайте их. Используйте этот счет в формуле

Анализируя некоторые данные, которые я получил для своей компании, мне нужно подсчитать ячейки, чтобы я мог работать в формуле с этим количеством.
CurrentRegion не работает. Вот каким критериям нужно соответствовать.

Подсчитываемые ячейки должны быть:

  • определенной строки (рядом есть другие заполненные ячейки, поэтому CurrentRegion не работает).
  • определенного формата (мм:сс)
  • между 2 ячейками, заполненными строками.

Эти данные собираются автоматически, поэтому координаты полей, заполненных строками, не устанавливаются.

Строка (набор) выглядит следующим образом:

Description  
Description  
...  
Time  
Time  
Time            <- This is the data that I want to count.  
Time  
Time  
...  
Description  
Time  
Time  
...  

Если бы это был только один из них, я бы понял, но для меня, относительно новичка в VBA, это очень сложно.
Я ценю каждый намек. Я не ожидаю, что кто-то напишет за меня код


person Shadol    schedule 25.08.2014    source источник
comment
Можете ли вы добавить короткий пример: возможный случай и ожидаемый результат ... или что-то в этом роде, чтобы проиллюстрировать. Я признаю, что не выздоровел, чего вы пытаетесь достичь   -  person smagnan    schedule 26.08.2014
comment
Пример того, что вам нужно, было бы здорово. Еще один вопрос: если вы не собираетесь писать код за вас, то что вы ожидаете?   -  person lowak    schedule 26.08.2014


Ответы (1)


Только для начала...:

Dim e As Integer

e = 0
For i = 1 To 9999
    If Cells(i, 1).Value = "" Then Exit For
    If IsNumeric(Cells(i, 1).Value) Then
        e = e + 1
        ' Debug.Print Format(Cells(i, 1).Value, "h:m:s")
    Else
        If e <> 0 Then Debug.Print "Count = " & e
        e = 0
    End If
Next

макрос печатает для каждого раздела количество последовательных значений времени.
Печать с комментариями показывает отформатированное время.
Вам нужно добавить код, чтобы продолжить ...
Если вы хотите также диапазон строк, немного изменить код:

Dim e, i, Addr1 As Integer

e = 0
For i = 1 To 9999
    If Cells(i, 1).Value = "" Then Exit For
    If IsNumeric(Cells(i, 1).Value) Then
        If e = 0 Then Addr1 = i
        e = e + 1
        ' Debug.Print Format(Cells(i, 1).Value, "h:m:s")
    Else
        If e <> 0 Then Debug.Print "Count = " & e & " - Range of Rows: " & Addr1 & " -> " & i - 1
        e = 0
    End If
Next
person user3514930    schedule 26.08.2014