400 Aufrufe
Gefragt in Tabellenkalkulation von
Hallo,

ich stehe vor folgendem Problem.

Eine Tabelle mit Monatsspalten liegt vor und es gibt 3 Möglichkeiten darin enthaltener Werte.
- leer, also enthält nichts, also keine Zahl oder Zeichen
- eine Zahl mit Null nach dem Komma z.B. 4,0
- eine Zahl mit einer Zahl nach dem Komma z.B. 1,5

Ich hätte jetzt gerne am Ende, also nach den z.B. 12 Monatsspalten, eine Formel, in der ich die Anzahl der Zahlen auswerte, die nach dem Komma noch eine Zahl haben.

Mit einer bedingten Formatierung zeige ich mir die Zellen zumindest schon man farblich an, da habe ich die Formel =WENN(REST(D4,1)>0;WAHR;FALSCH) hinterlegt.

Es geht aber darum, dass ich jetzt in einer Spalte eine Anzahl stehen habe, wie viel Zahlen mit einem Nachkomme es in der Zeile gibt.

Gibt es dafür eine einfache Formel oder hat sogar jemand dafür eine Function im Einsatz?

Meine Monatsspalten gehen von Spalte D bis Y, somit also bis 12/2025 und beginnen in Zeile 4.
Ich bräuchte somit eine Formel für die Zelle Z4 die ich dann bis ans Ende der Tabelle kopieren kann.

Könnt ihr mir bitte auf die Sprünge helfen?
Danke für eure Mühe.

bg
Kevin

7 Antworten

0 Punkte
Beantwortet von m-o Profi (22.9k Punkte)
Hallo,

versuche es mal so:

=SUMMENPRODUKT((D4:Y4<>GANZZAHL(D4:Y4))*1)

Die Formel funktioniert aber nur, wenn die leere Zelle wirklich leer ist (kein Leerzeichen), da es ansonsten den Fehler #WERT! gibt.

Gruß

M.O.
0 Punkte
Beantwortet von
Hallo M.O.,

DANKE, das funktioniert perfekt!!!

bg

Kevin
0 Punkte
Beantwortet von
Hallo und sorry, wenn ich jetzt einen älteren Beitrag aus dem Archiv raushole.

Leider habe ich formeltechnisch nicht so versierte Kolleginnen um mich.

Könnte man diese Formel auch in eine Function packen, so dass zum Beispiel nur noch =GANZEZAHL(Bereich) das Ergebnis liefert wie viele Zahlen in diesem Bereich mit einer Nachkommastelle vorhanden sind?

bg

Andrea
0 Punkte
Beantwortet von xlking Experte (1.7k Punkte)

Hallo Andrea,

ja das kann man so machen. Das was du hier ansprichst nennt man eine UDF, eine sog. User-Defined-Function. Das ist nichts anderes als ein VBA-Code in einem allgemeinen Modul des VBA-Editors, der das gewünschte Ergebnis zurückgibt. Im einfachsten Fall könnte der Code im Modul so aussehen:

Function GanzeZahl(Bereich As Range) As Long
  Dim x As Long
  For Each c In Bereich
    If c.Value <> Int(c.Value) Then x = x + 1
  Next c
  GanzeZahl = x
End Function

Dann Einfach deine Formel auf den gewünschten Bereich anwenden und freuen.

PS: Du solltest dir aber besser einen anderen Namen für die Function ausdenken. Denn GanzeZahl kann man schnell mit der bereits existereneden in Excel-Integrierten Formel GanzZahl verwechseln. Außerdem suggeriert der Name dass GanzeZahlen gezählt würden. Zurückgegeben werden aber Zahlen mit Nachkommastellen. Der Name KommaZahlen() trifft es wohl eher.

Gruß Mr. K.

0 Punkte
Beantwortet von
Guten Morgen,

sofern Du über eine recht neue Version von Excel (z.B. Office 365) hast, die bereits die LAMBDA Funktion kennt

ginge es auch ohne VBA, indem du unter

Formeln - Namensmanager - neu

einen Namen nach Wahl nimmst und unter bezieht sich auf:

=LAMBDA(Bereich;SUMMENPRODUKT((Bereich<>GANZZAHL(Bereich))*1))

erfasst

(man könnte diese Funktion dann auch in eine Vorlage speichern und beim öffnen einer neuen Mappe zur Verfügung haben)
0 Punkte
Beantwortet von
Bearbeitet von mickey

Hallo M.K.,
danke, dass funktioniert genau wie gewollt. DANKE!!

Selten kommt es vor, dass in den Zellen keine Zahl steht, sondern Text.
Gibt es die Möglichkeit die Felder auszuschließen, ohne eine Fehlermeldung als Ergebnis mit #Wert?

Das wäre noch nett, DANKE und bg

Andrea

*Admininfo: Bitte führe fremde Threads nicht fort, in dem du eigene Fragen anhängst, sondern eröffne eine eigene Anfrage und setze einen Link zur gewünschten Quelle.

0 Punkte
Beantwortet von xlking Experte (1.7k Punkte)

Hi Andrea,

bist du sicher, dass du das wirklich willst? Ich wöllte schon informiert werden, wenn einige meiner Zahlen nicht gezählt werden, weil sie als Text formatiert sind. Einen anderen Grund kann ich mir nicht vorstellen, denn echter Text gehört nicht in eine Zahlenreihe.

Aber gut. Ersetze den Code wie folgt:

Function GanzeZahl(Bereich As Range) As Long
  Dim x As Long
  For Each c In Bereich
    If TypeName(c.Value) <> "String" Then
    If c.Value <> Int(c.Value) Then x = x + 1
    End If
  Next c
  GanzeZahl = x
End Function

Gruß Mr. K.

...