Supportnet / Forum / Tabellenkalkulation
VBA: Wert in Spalte A plus Wert Spalte B in C
Frage
Hallo liebes Forum,
suche verzweifelt eine Möglichkeit tausende von Funktionen im
Tabellenblatt zu vermeiden und das ganze Schritt für Schritt per vba zu
lösen:
Grund ist, dass das Excel-Workbook den Rechner bereits nahezu in die
Knie zwingt.
Rechenvorgang dauert manchmal 5 Minuten!
Also die Aufgabe lautet z.B.:
Matrix z.B. 3 Spalten a 1000 Werte
A1 + B1 = C1
.
.
A1000 + B1000 = C1000
Anstelle der Summe sollten dann natürlich auch komplexere Formeln
eingesetzt werden können.
Für Hilfe jeglicher Art wäre ich sehr dankbar.
Viele Grüße und Danke im Vorraus
Chrisnelly
Antwort 1 von piano
Hallo
Hier 2 Möglichkeiten von vielen:
1. Berechnung manuell
2. Berechnung mit Formel
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
Hier 2 Möglichkeiten von vielen:
1. Berechnung manuell
Sub Rechnen()
Range("A65536").End(xlUp).Offset(1, 0).Select
z = ActiveCell.Row - 1 ´ Anzahl der Daten
Range("A1").Activate
For i = 1 To z
Cells(i, 3).Value = Cells(i, 1).Value + Cells(i, 2).Value
Next i
End Sub
2. Berechnung mit Formel
Sub Rechnen()
Range("A65536").End(xlUp).Offset(1, 0).Select
z = ActiveCell.Row - 1 ´ Anzahl der Daten
Range("c1").Activate
For i = 1 To z
ActiveCell.FormulaR1C1 = "=SUM(RC[-2]:RC[-1])"
ActiveCell.Offset(1, 0).Activate
Next i
End Sub
Gruß piano
Es wäre nett, wenn Du ein Feedback abgeben könntest,
ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 2 von Chrisnelly
Hallo Piano,
vielen Dank für Deine schnelle und wertvolle Antwort.
Hab´s probiert und bis recht überrascht, wie einfach das offenbar
funktioniert.
Ich frage mich nur, warum dieses nicht Teil jedes Standardtutorials ist.
Hat jemand vielleicht auch eine Lösung für den Fall, dass es zwei enfernt
liegende, evtl. benannte Ranges ("Range1", "Range2") betrifft, die als
summanden in eine Dritte ("Range3") resultieren sollen. Das Zählen von
Spalten erscheint mir dann recht unübersichtlich. Die Größe der Ranges
ist genau definiert (z.B. 1111 Zellen).
Bin sehr gespannt ...
Vielen Dank schon jetzt.
Chrisnelly
vielen Dank für Deine schnelle und wertvolle Antwort.
Hab´s probiert und bis recht überrascht, wie einfach das offenbar
funktioniert.
Ich frage mich nur, warum dieses nicht Teil jedes Standardtutorials ist.
Hat jemand vielleicht auch eine Lösung für den Fall, dass es zwei enfernt
liegende, evtl. benannte Ranges ("Range1", "Range2") betrifft, die als
summanden in eine Dritte ("Range3") resultieren sollen. Das Zählen von
Spalten erscheint mir dann recht unübersichtlich. Die Größe der Ranges
ist genau definiert (z.B. 1111 Zellen).
Bin sehr gespannt ...
Vielen Dank schon jetzt.
Chrisnelly
Antwort 3 von piano
Hallo
Hoffentlich hast du uns nun genug ausgetestet:
Gruss piano
Hoffentlich hast du uns nun genug ausgetestet:
Sub BeispielRanges()
Dim Range1 As Range, Range2 As Range, Range3 As Range, zelle As Range
Dim r1, c1, r2, c2, r3, c3
Set Range1 = Range("B1:C9")
Set Range2 = Range("G11") ´ 1. Zelle genügt
Set Range3 = Range("Z22") ´ 1. Zelle genügt
r1 = Range1.Row
r2 = Range2.Row - Range1.Row
r3 = Range3.Row - Range1.Row
c1 = Range1.Column
c2 = Range2.Column - Range1.Column
c3 = Range3.Column - Range1.Column
For Each zelle In Range1
zelle.Offset(r3, c3).Value = zelle.Value + zelle.Offset(r2, c3).Value
Next
End Sub
Gruss piano
Antwort 4 von Chrisnelly
Hallo Piano,
vielen Dank für Deine erneute Hilfe.
Aber, wieso "ausgetestet"? Die Frage war durchaus ernst gemeint.
Viele Grüße
Christian
vielen Dank für Deine erneute Hilfe.
Aber, wieso "ausgetestet"? Die Frage war durchaus ernst gemeint.
Viele Grüße
Christian
Antwort 5 von piano
Hallo
Gruss piano
Zitat:
wieso "ausgetestet"?
war scherzhaft gemeint - wegen der Folgefrage - hättest ja auch auf einmal fragen können!wieso "ausgetestet"?
Gruss piano

