VBA Code pro Zeile, Addieren pro Zeile

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: VBA Code pro Zeile, Addieren pro Zeile
von: Lepke
Geschrieben am: 25.08.2015 15:46:10

Hallo!
Ich benötige eure Hilfe :) ... Die Suchfunktion und das Allheilmittel Google habe ich bereits bemüht, konnte mir aus den Ergebnissen aber keinen Reim machen. Bitte seht mir nach, dass ich ein "Anfänger" bin.
Gern möchte ich folgendes tun:
In meiner Excel-Tabelle habe ich viele Zeilen mit diversem Inhalt. Steht eine bestimmte Zeichenfolge in einer Zelle, so soll der Wert der Zelle rechts daneben aufaddiert werden. Es kann dabei sein, dass sich die gesuchte Zeichenfolge mehrfach pro Zeile finden lässt. Hier sollen dann alle rechts neben der entsprechenden Zelle befindlichen Zellen aufaddiert und am Ende der Zeile als Summe ausgegeben werden. Ebenfalls soll ein Counter mitzählen, wie oft die Zeichenfolge pro Zeile zu finden war und dies ebenfalls am Ende der Zeile ausgeben. Dies soll dann Zeile für Zeile geschehen...
Es gelingt mir einfach nicht, meinen Code jeweils Zeile für Zeile auszuführen. Was ich bisher habe ist:

Sub Backspace()
On Error GoTo Fehler
 Dim rngFound As Range
 Dim strErste As String
 Dim i As Double
 i = 0
 Set rngFound = Range("A1:AB100").Find(What:="0x08", LookIn:=xlValues, LookAt:=xlWhole)
 If Not rngFound Is Nothing Then
 strErste = rngFound.Address
 i = Cells(rngFound.Row, rngFound.Column + 1).Value
 Do
 Set rngFound = Range("A1:AB100").FindNext(rngFound)
 If Not strErste = rngFound.Address Then
 i = i + Cells(rngFound.Row, rngFound.Column + 1).Value
 End If
 Loop While Not strErste = rngFound.Address
 Cells(rngFound.Row, 30).Value = i
 Else
 MsgBox "Keine > 0x08 < (Backspace-Taste) mehr gefunden!"
 End If
 Exit Sub
Fehler:
 MsgBox "Da ging was schief! :)"
End Sub
Hier wird mir dann natürlich nur die Gesamtsumme aller gewünschten Zellen ausgegeben, aber nicht pro Zeile, wie ich es brauche.
Ist wirklich schwierig zu erklären, was man will...
Ein kurzes Beispiel:
Auszug aus meiner Tabelle:
A B C D E F G H
1 s 321 k 100 0x08 200 m 123
2 h 122 0x08 150 b 220 0x08 80
3 0x08 180 t 120 0x08 250 q 113
4 t 10 o 110 g 50 u 170
5 0x08 190 w 110 0x08 255 0x08 113
es soll entstehen:
Spalte I = Immer pro Zeile alle Werte rechts neben Zellen mit Inhalt = 0x08
Spalte J = Wie häufig kam der Wert 0x08 pro Zeile vor
A B C D E F G H I J
1 s 321 k 100 0x08 200 m 123 ---> 200 1
2 h 122 0x08 150 b 220 0x08 80 ---> 230 2
3 0x08 180 t 120 0x08 250 q 113 ---> 430 2
4 t 10 o 110 g 50 u 170 --->
5 0x08 190 w 110 0x08 255 0x08 113 ---> 558 3
Könnt ihr mir helfen? Danke :)

Bild

Betrifft: AW: VBA Code pro Zeile, Addieren pro Zeile
von: Matthias
Geschrieben am: 25.08.2015 15:52:48
Hallo Lepke,
du hast in deiner Schleife vergessen dein i irgendwohin zu schreiben. Du zählst es hoch, aber das wars auch. Erst nach der Schleife tust du dies, was deinem besagten Gesamtergebnis entspricht.
lg Matthias

Bild

Betrifft: AW: VBA Code pro Zeile, Addieren pro Zeile
von: Matthias
Geschrieben am: 25.08.2015 16:00:16
Und nochmal ich,
dein Problem besteht darin, dass du einige Teile nicht in deiner Schleife hast, die eigentlich dort rein müssten. Außerdem musst du unterscheiden wenn sich die Zeile von einem Fund zum nächsten ändert. Dann muss dein i wieder 0 gesetzt und deine Werte rechts davon summiert und beides ausgegeben werden.
Zum tatsächlichen Code lass ich mir noch was einfallen, das war erstmal nur das Prinzip.
lg Matthias

Bild

Betrifft: AW: VBA Code pro Zeile, Addieren pro Zeile
von: Matthias
Geschrieben am: 25.08.2015 16:02:19
Oder,
du machst es wie Rudi vorschlägt, das wär das einfachste :)
lg Matthias

Bild

Betrifft: AW: VBA Code pro Zeile, Addieren pro Zeile
von: Lepke
Geschrieben am: 25.08.2015 16:38:59
Hallo Matthias. Danke für Deine Antwort! Ich möchte es gern mittels VBA realisieren. Ich habe Rudi diesbezüglich geantwortet.
Ja, mein Problem ist, dass ich nicht weiß, wie es mir gelingt, meinen Code so anzupassen, dass er die Anforderung erfüllt. Also das ganze Zeilenweise abarbeitet. Ich hab auch schon so einige Dinge versucht, aber ohne Erfolg (und für einen erfahrenen Anwender sicher auch ohne Verstand...). Wenn Du mir etwas unter die Arme oder auf die Sprünge helfen könntest, wäre das wirklich sehr, sehr toll!!

Bild

Betrifft: wozu VBA?
von: Rudi Maintaire
Geschrieben am: 25.08.2015 15:54:04
Hallo,

ABCDEFGHIJK
1s321k1000x08200m123 2001
2h1220x08150b2200x0880 2302
30x08180t1200x08250q113 4302
4t10o110g50u170 00
50x08190w1100x082550x08113 5583

ZelleFormel
J1{=SUMME(WENN(A1:G1="0x08";B1:H1;0))}
K1=ZÄHLENWENN(A1:H1;"0x08")
Achtung, Matrixformel!
Die geschweiften Klammern{} nicht eingeben,
sondern die Zelle mit
Shift + Strg + Enter
verlassen statt Enter alleine.

Gruß
Rudi

Bild

Betrifft: AW: wozu VBA?
von: Rudi Maintaire
Geschrieben am: 25.08.2015 16:10:06
Hallo,
Summewenn() reicht auch.
=SUMMEWENN(A1:G1;"0x08";B1:H1)
Gruß
Rudi

Bild

Betrifft: AW: wozu VBA?
von: Lepke
Geschrieben am: 25.08.2015 16:35:30
Hallo Rudi, danke für Deine Antwort(en). Ich bin nicht sicher, ob mir die Formeln am Ende reichen werden. Ich wollte das per VBA lösen, weil ich hoffe, dadurch flexibler zu sein. Abhängig von noch nicht abschätzbaren Anforderungen könnte es sein, dass auch unter gewissen Bedingungen die linke Zelle neben dem Suchwort mitzurechnen ist, außer, wenn das Suchwort direkt nacheinander vorkommt (also bspw. in Spalte E und G das Suchwort, dann nicht zusätzlich die linke Zelle kopieren...). Naja, also das wird vielleicht noch komplexer und da stoße ich dann vielleicht an die Grenzen der Formeln :(

Bild

Betrifft: AW: trollolol
von: Matthias
Geschrieben am: 25.08.2015 18:22:56
So hier der Code,

Sub Backspace,
Application.ScreenUpdating = False
Application.Calculation = xlManual
Dim x As Long
For x = 2 to Cells(Rows.Count,1).End(xlUp).Row
Range("I" & x).FormulaLocal = "=SUMMEWENN(A" & x & ":G" & x & ";""0x08"";B" & x & ":H" & x & ")
Range("J" & x).FormulaLocal = "=ZÄHLENWENN(A" & x & ":H" & x & ";""0x08"")"
Next x
Application.ScreenUpdating = True
Application.Calculation = xlAutmatic
End Sub
Ungetestet.
@Rudi, hab grad kein Excel auf diesem Mistrechner, muss deine SummeWenn auch in ein Array?
Viel Spaß damit,
lg Matthias

Bild

Betrifft: nein, muss nicht owT
von: Rudi Maintaire
Geschrieben am: 25.08.2015 18:29:37


 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Code pro Zeile, Addieren pro Zeile"