найти, когда строка встречается внутри ячейки в Excel - PullRequest
1 голос
/ 30 июля 2011

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

KEYWORD
1
2
3
4
5
KEYWORD
1
2
KEYWORD
.
.
.

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

Ответы [ 2 ]

2 голосов
/ 30 июля 2011

Это должно сделать это. Может быть, есть и лучший способ.

Sub GetAverages()
    Dim sum As Single
    Dim count As Long
    Dim cell As Range

    For Each cell In ActiveWorkbook.ActiveSheet.Range("a1", ActiveSheet.Range("A1").End(xlDown))
        If CStr(cell.Value) = "KEYWORD" Then
            If count > 0 Then
                ActiveWorkbook.ActiveSheet.Cells(cell.Row - 1, cell.Column + 1).Value = sum / count
            End If

            count = 0
            sum = 0
        Else
            sum = sum + cell.Value
            count = count + 1
        End If
    Next cell
End Sub

Это вывело это на мои образцы данных ...

KEYWORD 
92  
20  
93692   
936 
92         18966.4
KEYWORD 
32  
324        178
KEYWORD 
235 
324 
23  
3   
342 
2   
343 
34         163.25
KEYWORD 
0 голосов
/ 01 августа 2011

Я бы не использовал VBA.

Используйте эту формулу в столбце рядом со столбцом со значениями:

=IF(ISNUMBER(<columnName>);<columnName>;"")

Например, если у вас столбец со значениями C, то

=IF(ISNUMBER(C1);C1;"")

Затем используйте функцию Average в новом столбце:

=AVERAGE(D:D)
...