Zusammenrechnen wie ?

Hallo,

ich habe in Ecxel in einer Spalte in mehreren Zeilen folgende Zahlen
stehen:

  1. Ausgabe
    11400000022110000000004,0L11013
    11400000022220000000000,4L11011
    11400000022220000000000,9L11015
    11400000022380000000000,5L11011
    11400000022380000000002,3L11011
    11400000022410000000000,9L11015
    11400000030110000000000,7L11013
    11400000030110000000001,4L11013

Hier sollen Zeilen addiert werden wenn 2 Faktoren übereinstimmen.
Beispiel hier die letzten beiden Zeilen:
Hier müssen 3011 und L11013 übereinstimmen, dann wird hier 0,7 und 1,4
addiert und zu einer neuen Zeile
mit Summe 2,1 stehen. Die anderen Zeilen wo keine Übereinstimmung erfolge,
bleiben so bestehen.

Neue Ausgabe:

11400000022110000000004,0L11013
11400000022220000000000,4L11011
11400000022220000000000,9L11015
11400000022380000000000,5L11011
11400000022380000000002,3L11011
11400000022410000000000,9L11015
11400000030110000000002,1L11013

Wie könnte das Makro, bzw. dieser Visual Basic Code dazu ungefähr aussehen
?
Über jede Hilfe wäre ich sehr dankbar.

Danke im voraus.

Gruß, Marsi

Willst du des in VBA oder in Excel selber lösen? Für Excel versuche es mit der WENN(Bedingung;Dann;Sonst) Funktion. In VBA müsstest du wahrscheinlich mit Cells(x,y) auslesen. Habs leider schon lange nicht mehr gemacht, aber evtl hilft dir des ein wenig…

Hallo, Marsi!

ich habe in Ecxel in einer Spalte in mehreren Zeilen folgende
Zahlen stehen:

Wow.


11400000022110000000004,0L11013
11400000022220000000000,4L11011
11400000022220000000000,9L11015
11400000022380000000000,5L11011
11400000022380000000002,3L11011
11400000022410000000000,9L11015
11400000030110000000002,1L11013
Wie könnte das Makro, bzw. dieser Visual Basic Code dazu
ungefähr aussehen?
Über jede Hilfe wäre ich sehr dankbar.

Ungefähr so:

Sub AddiereKomischeZeilen()
 Dim lngZeile as long
 Dim strWert as string
 Dim strNaechsterWert as string
 Dim dblWert as double
 Dim bGleich as boolean

 lngZeile=1 'oder entsprechend andere Startzeile
 do while DeineTabelle.Cells(lngZeile,1)""
 ' aktuelle Zelle auslesen
 strWert = DeineTabelle.Cells(lngZeile,1)
 ' Zahlenwert auslesen
 dblWert = CDbl(mid$(strWert,14,12))
 ' Wert der nächsten Zeile auslesen
 strNaechsterWert = DeineTabelle.Cells(lngZeile+1,1)
 ' Sind die besagten Stellen gleich?
 bGleich = (mid$(strWert,10,4)=mid$(strNaechsterWert,10,4)) \_
 and (right$(strWert,5)=right$(strNaechsterWert,5)) 
 do while bGleich
 ' solange gleich:
 ' Wert der nächsten Zeile addieren
 dblWert=dblWert + CDbl(mid$(strNaechsterWert,14,12))
 ' diese Zeile löschen
 DeineTabelle.Rows(lngZeile+1).delete
 ' Wert der nächsten Zeile auslesen
 strNaechsterWert = DeineTabelle.Cells(lngZeile+1,1)
 ' Sind die besagten Stellen gleich?
 bGleich = (mid$(strWert,10,4)=mid$(strNaechsterWert,10,4)) \_
 and (right$(strWert,5)=right$(strNaechsterWert,5)) 
 loop
 lngZeile=lngZeile+1
 loop
end sub

uncompiliert/ungetestet/blabla wie immer. Aber so als grundlegende Anregung… Kann vor allem gut sein, dass ich mich mit den Stellen der Eingabe bei Mid$(…) und Right$(…) verzählt habe. Solltest Du noch mal überprüfen und ggf. anpassen.

Gruß, Manfred

Hallo Manfred,

vielen Dank für deine Hilfe.
Habe den Code genommen und angepaßt.
Leider klappt es mit der Addition nicht:frowning:
Woran könnte dies liegen ?

Danjke und Gruß, Marsi

Hier nochmal der dazugehörige Code:

Sub AddiereZeilenTestlauf()

Dim lngZeile As Long
Dim strWert As String
Dim strNaechsterWert As String
Dim dblWert As Double
Dim bGleich As Boolean
lngZeile = 1

’ Startzeile
Do While Cells(lngZeile, 1) „“

’ aktuelle Zelle auslesen
strWert = Cells(lngZeile, 1)

’ Zahlenwert auslesen
dblWert = CDbl(Mid$(strWert, 23, 3))
'MsgBox CDbl(Mid$(strWert, 23, 3))

’ Wert der nächsten Zeile auslesen
strNaechsterWert = Cells(lngZeile + 1, 1)

’ Sind die besagten Stellen gleich?
bGleich = (Mid$(strWert, 10, 4) = Mid$(strNaechsterWert, 10, 4)) And
(Right$(strWert, 6) = Right$(strNaechsterWert, 6))
'MsgBox Right$(strWert, 6)
'MsgBox Right$(strNaechsterWert, 6)

Do While bGleich
’ solange gleich:

’ Wert der nächsten Zeile addieren
dblWert = dblWert + CDbl(Mid$(strNaechsterWert, 23, 3))

’ diese Zeile löschen
Rows(lngZeile + 1).Delete
’ Wert der nächsten Zeile auslesen
strNaechsterWert = Cells(lngZeile + 1, 1)
’ Sind die besagten Stellen gleich?
bGleich = (Mid$(strWert, 10, 4) = Mid$(strNaechsterWert, 10, 4)) And
(Right$(strWert, 5) = Right$(strNaechsterWert, 5))

Loop
lngZeile = lngZeile + 1

Loop
End Sub

bGleich = (Mid$(strWert, 10, 4) = Mid$(strNaechsterWert, 10,
4)) And
(Right$(strWert, 6) = Right$(strNaechsterWert, 6))

Hi Marsi,
ungetestet, probiers mal so:
bGleich = (Mid(strWert, 10, 4) = Mid(strNaechsterWert, 10,4)) And (Right(strWert, 6) = Right(strNaechsterWert, 6))
also in beiden BGleich=… die $ entfernen und in eine Zeile schreiben
Und wenn in 2 zeilen dann in erster zeile hinten ein " _ " anfügen, das geht auch bei excel-vba.
Gruß
Reinhard

Hallo, Marsi!

vielen Dank für deine Hilfe.
Habe den Code genommen und angepaßt.
Leider klappt es mit der Addition nicht:frowning:
Woran könnte dies liegen ?

Weil irgendein Depp zu blöd war, Deine Frage richtig zu lesen. (Da ich mich aber selbst beleidige, ist der Mod hoffentlich nicht sauer…). Es fehlt die Zeile, die die Summe auch wieder einträgt, und zwar hier:

Loop

Cells(lngZeile, 1) = Left$(strWert, 13) & Format$(dblWert, "0000000000.0") & Right$(strWert, 6)

lngZeile = lngZeile + 1

Loop
End Sub

Mit dem Verwenden oder Weglassen des „$“ hat das ganze nix zu tun…

Gruß, Manfred

1 Like

Hi Manfred,

wer so etwas codieren kann , ist wahrlich kein Depp:smile:
Danke für Deine Hilfe und nun funzt es auch.
Danke für deine Hilfe.

Aber ich habe festgestellt, wenn eine andere Zeile dazwischen ist, dann addiert er es nicht.

11400000022110000000004,0L11013
11400000022220000000000,4L11011
11400000022220000000000,9L11015
11400000022380000000000,5L11011
11400000022380000000002,3L11011
11400000030110000000000,7L11013
11400000022410000000000,9L11015
11400000030110000000001,4L11013

Werde vorher die Sortierfunktion von Excel in Anspruch nehmen, damit die entsprechenden Zeilen drunterliegen.

Danke und Gruß, marsi