171 Aufrufe
Gefragt in Tabellenkalkulation von
Guten Tag
Ich sollte in einer Excel Tabelle Mittelwertberechnungen durchführen. Leider stehen in den zu berechnenden Zellen nicht nur Zahlen, sondern auch Buchstaben. Also 152 ab, 174 du, etc.
Excel berechnet so den Mittelwert nicht. Nur wenn testweise die Buchstaben gelöscht werden, gibt es eine Berechnung.
Da dieTabelle aber sehr gross ist und steig weiterwächst, ist das keine Option. Ich habe schon versucht mit der "Teil" Formel in einer Hilfsspalte die Berechnugn durchzuführen, was aber auch nicht funktioniert.
Hat jemand eine Idee/Lösung zum Berechnen des Mittelwerts, wenn Zahlen und Buchstaben in der Zelle stehen?

Danke für die Unterstützung.
Beste Grüsse, Obelix

7 Antworten

0 Punkte
Beantwortet von xlking Experte (1.5k Punkte)
Hallo Obelix,

mit einer benutzerdefinierten Funktion wäre das möglich. Dazu müsste man allerdings wissen, wie so eine Zahlen/Buchstaben-Kombination aussieht? Stehen denn immer die gleichen Buchstaben in den Zellen oder sind das unterschiedliche? Falls es sich um Einheiten handelt, müsste zuerst umgerechnet werden. Bzw. Kannst du die Einheiten auch im Zahlenformat hinterlegen und dann nur Zahlen in den Zellen eingeben. Dann ließe sich das auch besser berechnen.

Bring doch mal ein Beispiel aus 3 Werten und dem gewünschten Ergebnis. Dann sehen wir weiter.

Gruß Mr. K.
0 Punkte
Beantwortet von

Hallo Mr. K.

Das würde dann etwa so ausshen, Das Resultat ist leider #DIV/0!. Sobald die Buchstaben entfern werden, funktioniert die Mittelwert-Formel.

125 ab
214 bc
350 go
425 HP
#DIV/0!

Danke für die Unterstützung.
Beste Grüsse, Obelix

+1 Punkt
Beantwortet von xlking Experte (1.5k Punkte)

Hallo Obelix,

Einfach im VBA-Editor diesen Code in ein allgemeines Modul einfügen. Anschließend kannst du die Formel MittelwertText verwenden. z.B. MittelwertText(A1:A4)

Function MittelwertText(rng As Range)

  Dim c As Range, txt As String, v As Variant, Erg As Double, Anz As Long
  On Error Resume Next
  For Each c In rng
    v = "": txt = ""
    txt = Left(c, InStr(c, " ") - 1)
    If TypeName(c.Value) <> "String" Then v = c.Value Else v = CDbl(txt)
    If v <> "" Then
      Erg = Erg + v
      Anz = Anz + 1
    End If
  Next c

  MittelwertText = Erg / Anz

End Function

Gruß Mr: K.

0 Punkte
Beantwortet von
Hallo Mr. K

Besten Dank für die Lösung. Ja, so funktionert es.
Mein Ansatz war, das ohne VBA zu lösen.
Habe aber festgestellt, dass das auf keine Art und Weise funktioniert.
So löse ich das Problem eben doch mittels VBA.

Danke für die Unterstützung.
Beste Grüsse, Obelix
0 Punkte
Beantwortet von
ausgewählt von mickey
 
Beste Antwort
Eventuell könnte das funktionieren

=SUMMENPRODUKT(WENNFEHLER(TEIL(B9:B14;1;SUCHEN(" ";B9:B14&" "))*1;0))/SUMMENPRODUKT(WENNFEHLER(TEIL(B9:B14;1;SUCHEN(" ";B9:B14&" "))*0+1;0))
0 Punkte
Beantwortet von
Hallo unbekannte Person

Super! Genau das habe ich gesucht. Funktioniert ohne VBA einwandfrei. Natürlich hat es auch mit der Lösung von Mr.K funktioniert. Da ich aber bakd in Pensiion gehen darf, suche ich eher nach Lösungen ohne VBA.

Ich danke Allen, die sich über meine Frage Gedanken gemacht haben, für die Unterstützung.
Beste Grüsse, Obelix
0 Punkte
Beantwortet von vbastler Mitglied (228 Punkte)

Da ich aber bakd in Pensiion gehen darf, suche ich eher nach Lösungen ohne VBA.

Gehässige Frage: (mal ganz abgesehen von den Tippfehlern) : welchen Einfluss hat VBA auf Deine Pension??

Rentner/Pensionäre basteln doch gern - habe ich mir sagen lassen ...wink

fragt sich d'r Bastler von den VBAsteleien.de

...