Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Probleme mit Funktion

Forumthread: Probleme mit Funktion

Probleme mit Funktion
29.03.2022 17:26:22
Burghard
Hallo,
ich möchte gerne in der Zelle E12 die Summe aller nicht durchgestrichenen Zahlenwerte der Spalte E2:E11 addieren.
Ich habe eine Beispieldatei hochgeladen:
https://www.herber.de/bbs/user/152137.xlsm
Die Funktion rechnet nur richtig, wenn in der Spalte E alle Zellen einen Zahlenwert beinhalten, bei Formeln oder leerer Zelle wird ansonsten in E12 nur #WERT ausgegeben. Alle meine Versuche, das Problem zu lösen, sind leider gescheitert.
Hier die Funktion:

Public Function ohne_strich(Bereich As Range)
Dim rngC As Range, dblZ As Double
Application.Volatile
For Each rngC In Bereich
If rngC.Font.Strikethrough = False And rngC > 0 Then
dblZ = dblZ + rngC
End If
Next
ohne_strich = dblZ
'=ohne_strich($E$2:$E$11)
ActiveSheet.Calculate
End Function
Aufruf in Zelle E12 mit =ohne_strich($E$2:$E$11)
Hilfe wäre nett.
Viele Grüße
Burghard
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Probleme mit Funktion
29.03.2022 17:41:23
UweD
Hallo
prüfe noch zusätzlich darauf, ob es eine Zahl ist...

If rngC.Font.Strikethrough = False And rngC > 0 And IsNumeric(rngC) Then
LG UweD
AW: Probleme mit Funktion
29.03.2022 18:22:02
Burghard
Danke für Uwe! Funktioniert!
Viele Grüße
Burghard
AW: Probleme mit Funktion
29.03.2022 17:52:32
ralf_b

Public Function ohne_strich(Bereich As Range) As Double
Dim rngC   As Range, dblZ As Double
Application.Volatile
For Each rngC In Bereich
If rngC.Font.Strikethrough = False And IsNumeric(rngC) Then
dblZ = dblZ + CDbl(rngC.Value)
End If
Next
ohne_strich = dblZ
End Function

Anzeige
AW: Probleme mit Funktion
29.03.2022 18:23:11
Burghard
Danke Ralf! Funktioniert!
Viele Grüße
Burghard
AW: Probleme mit Funktion
29.03.2022 17:58:22
Nepumuk
Hallo Burghard,
teste mal:

Option Explicit
Public Function ohne_strich(Bereich As Range) As Double
Application.Volatile
Dim rngC As Range
For Each rngC In Bereich
If Not rngC.Font.Strikethrough Then
If IsNumeric(rngC.Text) Then
ohne_strich = ohne_strich + rngC.Value
End If
End If
Next
End Function
Gruß
Nepumuk
Anzeige
AW: Probleme mit Funktion
29.03.2022 18:24:14
Burghard
Danke Nepomuk! Funktioniert!
Viele Grüße
Burghard
User Defined Function?
30.03.2022 19:45:38
Yal
Hallo zusammen,
ich weiss, die Lösung ist schon gefunden, aber eine andere Ansatz: UDF. Ist dann jederzeit wiederverwendbar.
in einem Modul:

Public Function IstGestrichen(ByVal Target As Range) As Boolean
IstGestrichen = CBool(Target.Font.Strikethrough)
End Function
Im Blatt (z.B. in B1):
=--IstGestrichen(A1)
ergibt 1 bei gestrichen und 0 sonst. Darauf dann einen Summenprodukt aufbauen:
= Summenprodukt(A1:A10;B1:B10)
VG
Yal
Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige