2011-07-29 7 views
1

数値データを含むスプレッドシートを1列に並べました。データはキーワードを使用して分割されます。セル内で文字列が発生したときの検索Excel

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

素早くキーワードの各インスタンス間の平均を取ると、ちょうど平均化された領域の右側にあるセルでそれを設定する方法があった場合、私は思っていました。私は本当のハードコアVBAスクリプティングを一度もしていないので、私は完全に迷っています。

答えて

2

これはそれを行う必要があります。しかし、より良い方法があるかもしれません。

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 

それは私がVBAを使用していないだろう

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

...私のサンプルデータにこれを出力します。

使用値と次の列への列で、この式:

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

は、たとえば値を持つあなたの列がCである場合には、

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

は、次に新しい列にAverage機能を使用します。

=AVERAGE(D:D)