Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1860to1864
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

exstrike mit Summenprodukt Zahl und Text

exstrike mit Summenprodukt Zahl und Text
07.12.2021 16:55:21
MaMe
Hallo zusammen,
ich habe eine Tabelle in der Zahlen (von 1,00 bis ggf. 164.000,55) gelistet sind - die Zahlen stehen oft alleine, ab und zu ist (soll) jedoch auch ein Hinweistext/Kürzel mit drin (sein) - und es sind nicht alle Zellen gefüllt, viele Zellen sind leer (also 'echt' leer ;-) )
zum einen sollen die Zahlen in einer Zeile addiert werden - das habe ich mit =SUMMENPRODUKT(--LINKS(G5:NG5;5)) hinbekommen - auch wenn ich dadurch zuerst leere Zellen mit einer 0 füllen muss. Definitiv keine schöne Lösung, aber es würde funkionieren...
zum anderen sollen die Zahlen in einer Spalte addiert werden - allerdings 'nur' die, die nicht durchgestrichen sind - das klappt mit =exstrike($B5:$B500) - zumindest solange kein Text in der Zelle mit drin ist
Sinn des Ganzen ist, das mir der Spaltenwert anzeigt wieviel an diesem Tag noch 'offen' ist, während mir die Zeilensumme den 'Jahresaufwand' anzeigt
Bislang habe ich Text immer als Textfeld eingefügt, ist aber suboptimal, weil in der Handhabe aufwändig beim Anlegen, löschen, Zeilen/Spalten ausblenden - deshalb würde ich gerne Text von 3 bis 8 Buchstaben in die jeweilige BetragsZelle mit dazuschreiben
Gibt es eine Möglichkeit =exstrike (VBA-Code hinterlegt) und =SUMMENPRODUKT(--LINKS.....) miteinander zu verbinden ?
Bzw eine andere Möglichkeit die 'nicht durchgestrichenen' Spaltenwerte zu addieren - speziell wenn Zellen auch zusätzlich Text enthalten können ?
Wäre super wenn mir jemand hier weiterhelfen könnte...
Gruß MaMe
Hier noch der VBA-Code (ich glaub im Forum gefunden):

Public Function ExcStrike(pWorkRng As Range) As Long
'Update 20140819
Application.Volatile
Dim pRng As Range
Dim xOut As Long
xOut = 0
For Each pRng In pWorkRng
If Not pRng.Font.Strikethrough Then
xOut = xOut + pRng.Value
End If
Next
ExcStrike = xOut
End Function

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

Betreff
Datum
Anwender
Anzeige
AW: exstrike mit Summenprodukt Zahl und Text
07.12.2021 18:43:35
Daniel
HI
probies doch mal, wenn du die 0 per Formel hinzufügst und eine Stelle mehr auswertest:

=SUMMENPRODUKT(--LINKS("0"&G5:NG5;6))
die vorangestellte 0 stört beim Umwandeln in eine Zahl nicht, es sei denn es kommen auch negative Zahlen vor, dann geht das nicht.
in eine Funktion kannst du das einfach einbauen:

xOut = xOut + CDbl(Left(pRng.Value, 5)).value
bzw mit absicherung gegen Fehler bei Leerzellen oder Texten:

If Isnumeric(Left(pRng.Value, 5)) Then xOut = xOut + CDbl(Left(pRng.Value, 5)).value
Gruß Daniel
Anzeige
AW: exstrike mit Summenprodukt Zahl und Text
08.12.2021 13:57:58
MaMe
Hallo Daniel,
das mit SUMMENPRODUKT hat geklappt :-) danke !!!
1-3x im Jahr kommen auch negativ Zahlen (Gutschrift) vor - aber auf die kann ich notfalls auch verzichten
das mit dem VBA krieg ich leider nicht hin - hätte evtl. erwähnen sollen das ich Code zwar einpflegen und ggf. auch ändern kann - aber nur wenn ich ein Beispiel dafür habe, das ich vergleichen/nachvollziehen kann ;-)
kann also VBA nicht :-(
wenn ich Deine Zeile nun reinkopiere - an der Stelle wo ich denke - wird die Zeile rot, heißt >falsch gedacht/eingefügt könntest Du evtl. Deine Code in den VBA-Code einfügen, den ich an meine Frage unten eingefügt hatte ?
Gruß MaMe
Anzeige
AW: exstrike mit Summenprodukt Zahl und Text
08.12.2021 14:30:07
Daniel
zeig doch mal deinen Code
AW: exstrike mit Summenprodukt Zahl und Text
08.12.2021 14:59:15
MaMe
Hallo Daniel,
das ging schnell :-) :-)
hab noch ein bissle rumprobiert...
jetzt jammert VBA 'nur' > Erwartet: Anweisungsende - da bin nun entgültig raus ...
Hier mein probierter Code:

Public Function ExcStrike(pWorkRng As Range) As Long
'Update 20140819
Application.Volatile
Dim pRng As Range
Dim xOut As Long
xOut = 0
For Each pRng In pWorkRng
If Not pRng.Font.Strikethrough Then
xOut = xOut + pRng.Value
If IsNumeric(Left(pRng.Value, 5)) Then
xOut = xOut + CDbl(Left(pRng.Value, 5)).value
End If
Next
ExcStrike = xOut
End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub

Der ursprüngliche exstrike-Code war:

Public Function ExcStrike(pWorkRng As Range) As Long
'Update 20140819
Application.Volatile
Dim pRng As Range
Dim xOut As Long
xOut = 0
For Each pRng In pWorkRng
If Not pRng.Font.Strikethrough Then
xOut = xOut + pRng.Value
End If
Next
ExcStrike = xOut
End Function

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
End Sub

Anzeige
AW: exstrike mit Summenprodukt Zahl und Text
08.12.2021 16:39:56
Daniel
HI
das .Value am Ende ist falsch (sorry)
das neue IF musst du entweder in eine Zeile schreiben (kann man hier machen weils nur eine Befehlszeile ist) oder mit einem End IF versehen
außerdem hatte ich gehofft, dass du verstehest dass du die Zeile xOut = xOut + pRng.Value durch das xOut = xOut + CDbl(Left(pRng.Value, 5)) ersetzen musst.

For Each pRng In pWorkRng
If Not pRng.Font.Strikethrough Then
If IsNumeric(Left(pRng.Value, 5)) Then xOut = xOut + CDbl(Left(pRng.Value, 5))
End If
Next
Gruß Daniel
AW: exstrike mit Summenprodukt Zahl und Text
09.12.2021 18:10:41
MaMe
Hallo Daniel,
sorry, hatte gestern noch nen Außeneinsatz...
... zu Deiner 1sten Antwort: ich hatte zuerst die Zeile 'ausgetauscht' das hatte ich schon verstanden ;-)
nur wurde dann wegen dem überflüssigen >.value zu Deiner Antwort von gestern...
habe den Code eingefügt - er funktioniert allerdings nur eingeschränkt...
=exstrike(....) wirft die Summierung der Zellen nur dann aus, wenn die Zelle mit Zahl und Text durchgestrichen ist - dann werden die restliche -nicht durchgestrichenen- Zellen ohne Text korrekt addiert
•• sobald jedoch eine nicht durchgestrichene Zelle Text enthält, wirft exstrike #WERT! aus :-(
Hier nochmmal der Code - hoffe das ich beim Reinkopieren nicht doch Blödsinn gemacht habe:

Public Function ExcStrike(pWorkRng As Range) As Long
'Update 20140819
Application.Volatile
Dim pRng As Range
Dim xOut As Long
xOut = 0
For Each pRng In pWorkRng
If Not pRng.Font.Strikethrough Then
If IsNumeric(Left(pRng.Value, 6)) Then xOut = xOut + CDbl(Left(pRng.Value, 6))
End If
Next
ExcStrike = xOut
End Function

PS... habe die '5' doch '6' ersetzt - sowohl bei Summenprodukt, als auch im Code (hatte zuerst die '5' drin)
aber mit der '6' zeigt mir Summenprodukt die korrekte -nicht aufgerundetet- Summe an (zumindest bei meinen Testzahlreihen)
Kannst Du mir evtl. nochmal helfen ?
Gruß MaMe
Anzeige
AW: exstrike mit Summenprodukt Zahl und Text
11.12.2021 19:19:21
MaMe
Hallo Daniel,
SORRY!! hatte nicht gemerkt das ich den 'alten' exstrike-Code in Modul1 stehen hatte und Deinen 'neuen' zusätzlich in das Tabellenblatt reingeschrieben habe...
» habe jetzt den Code in Modul1, Deinen Vorgaben nach, entsprechend geändert und den anderen Code gelöscht - nun funktioniert alles :-)
Danke !!!
Gruß MaMe

302 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige