2017-07-20 3 views
1

Ich muss das AVERAGE WORD COUNT innerhalb einer Tabelle mit einem bestimmten Namen finden. Ein Beispiel wäre:Komplizierte Wortzählung in Excel

Autor Wörter

Person1 dies ein Beispiel

Person1 ist so ist dies

Person1 auch dies ist

Person2 diese Beispiele saugen

Person2 dieser ist besser ...

Ich habe eine Funktion, die die Wörter zählen wird:

Function intWordCount(rng As Range) As Integer 
    intWordCount = UBound(Split(rng.Value, " "), 1) + 1 
End Function 

ich ratlos bin, wie Sie durch die Liste Schleife einen Namen (PersonX) gegeben, die Zählung der Worte fassen, dann dividiere durch die Summe pro Person.

Hoffentlich klar war ...

Danke, Stu

+0

Sie können in dem Blatt jede Zelle Schleife durch und zu einem Zähler hinzufügen, wenn die Zelle Ihrer Kriterien entspricht Diese Seite sollten Sie jede Zelle auf der Überprüfung in einem Bereich erhalten begonnen: [Worte Count] (http://www.excel-easy.com/vba/examples/count-words.html) – tjejojyj

Antwort

0

Der erste Schritt ist, Ihren Code zu ändern, um mehr als eine Zelle zu behandeln; Die Art, wie ich mit ging, ist mit einer For Each Schleife, um durch jede Zeile im Bereich zu gehen.

For Each Row In rng.Rows 
    ... 
Next 

Der nächste Schritt ist zu prüfen, ob wir str eine Reihe Vergleich der ersten Spalte auf einen Wert wollen.

For Each Row In rng.Rows 
    If (Row.Cells(1, 1).Value = str) Then 
     ... 
    End If 
Next 

Setzen Sie diese beiden Teile zusammen mit Ihrer ursprünglichen Funktion und Sie erhalten eine Funktion wie diese.

Function avgWordCount(rng As Range, str As String) As Double 
    Dim counter As Long 
    Dim wordCount As Long 

    Dim Row As Range 
    For Each Row In rng.Rows 
     If (Row.Cells(1, 1).Value = str) Then 
      counter = counter + 1 
      wordCount = wordCount + UBound(Split(Row.Cells(1, 2).Value, " "), 1) + 1 
     End If 
    Next 

    avgWordCount = wordCount/counter 
End Function 

Es kann mit einer Zellreferenz oder einer statischen Zeichenkette aufgerufen werden.

Results