2k Aufrufe
Gefragt in Tabellenkalkulation von ahorn38 Experte (3.3k Punkte)
Hallo,

ich habe in einem Code u.a. folgende Zeile

Range("H" & Cells(Rows.Count, 8).End(xlUp).Row + 1) = Application.WorksheetFunction.Sum(ActiveSheet.Range("H3:H" & Cells(Rows.Count, 8).End(xlUp).Row))

die für numerische Werte auch funktioniert.
Jetzt habe ich aber text-Variable der Form "999 St.". Im Excel klappt das mit links("999 St.",Länge("999 St.")-3*1) und ich kann die dadurch entstehenden Werte aufaddieren.
Im Code habe ich das mit left und length probiert, kriege das aber irgendwie nicht hin. Hat jemand einen Tipp??
Danke und Gruß

8 Antworten

0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

zwei Beispiele

gruss nighty

feste position
Val(Left("999 St.", Len("999 St.") - 4))

flexible position
Val(Mid("999 St.", 1, InStr(1, "999 St.", " ") - 1))
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo,

danke für den Tipp, aber ich habe es noch nicht hingekriegt.
Habe deine Formel so bei mir eingebunden

Range("E" & rng + 1) = Application.WorksheetFunction. _
Sum(Val(Left(Range("E3:E" & rng), Len(Range("E3:E" & rng)) - 4)))

und kriege Typenunverträglichkeit. In E stehen die Daten als Zahl und ...St..
Gruß Andreas
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo,

zum besseren Verständnis hier eine Datenfolge

89,00000 St.
99,32067 St.
135,55974 St.
11,65300 St.
73,82412 St.
111,12487 St.
796,53960 St.
754,53184 St.
1447,96986 St.
153,90772 St.
297,00000 St.
920,42216 St.
deren Ergebnis = 4890,85358 sein soll. Brauche aber den VBA-Code..
Danke.
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Andreas,

warum baust Du Dir unnötige Hürden auf, indem Du Mischwerte in den Zellen zulässt.

Schmeiß doch einfach die Textwerte aus den Zellen raus und formatiere sie benutzerdefiniert mit

0,00000" St."

Gruß
Rainer
0 Punkte
Beantwortet von nighty Experte (6.6k Punkte)
hi all ^^

bin ich auch dafuer :-))

gruss nighty
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo,

ja das würde ich auch so machen, nur ich bekomme diese Daten leider so zugeliefert und habe keinen Einfluss auf das Format und muss mich jetzt irgendwie damit rumquälen.... :-(
Gruß Andreas
0 Punkte
Beantwortet von rainberg Profi (14.9k Punkte)
Hallo Andreas,

dann probier's mal so

Option Explicit

Sub summe()
Dim rngC As Range, dblSum As Double
For Each rngC In Range("A1:A" & Cells(Rows.Count, 1).End(xlUp).Row)
dblSum = dblSum + Left(rngC, Len(rngC) - 4)
Next
MsgBox dblSum
End Sub


Gruß
Rainer
0 Punkte
Beantwortet von ahorn38 Experte (3.3k Punkte)
Hallo Rainer,

danke, wie immer perfekt!!!
Ich hatte auch gerade angefangen mir eine Schleife zu bauen und die Werte jeweils einzeln umzuformen und dann zu addieren. Eigenartigerweise funktionieren die Funktionen left, len nicht bei Range-Bereichen, insofern scheint das die einzige Lösung zu sein. Danke noch mal und Gruß
Andreas
...