Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Summenformel mit VBA

Summenformel mit VBA
09.05.2008 15:29:00
Larissa
Hallo,
wieder stehe ich vor einem Problem:
Ich übertrage per VBA eine Tabelle mit 4 Spalten auf ein neues Tabellenblatt und lösche dann alle Formeln.
Jetzt möchte ich, dass unterhalb der 4. Spalte eine Formel mit der Summe von dieser Tabelle generiert wird.
Danach wird wieder eine neue Tabelle darunter eingefügt, wo wieder die Formel mit der Summe unterhalb der 4. Spalte stehen sollte.
Mit dem Makrorekorder sieht die Formel einfach so aus:
ActiveCell.FormulaR1C1 = "=SUM(R[-8]C:R[-1]C)"
Die Tabellen sind immer unterschiedlich lang. Wie kann das funktionieren?
Vielen Dank für Eure Hilfe,
Larissa

Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Zeige bitte mal den vorhandenen Code o.w.T
09.05.2008 15:32:00
Reinhard

AW: Zeige bitte mal den vorhandenen Code o.w.T
09.05.2008 15:47:00
Larissa
ok, ich habe die Tabelle mal hochgeladen:
https://www.herber.de/bbs/user/52270.xls
In das blaue Feld sollte eine Summenformel per VBA eingetragen werden und in das grüne muss dann eine Formel mit dem Umrechnungskurs aus dem gelben Feld stehen, damit dort der EUR Betrag steht. Das wäre dann meine nächste Aufgabe.
Das Problem ist, dass jede Tabelle unterschiedlich lang ist. D.h. nach diesem Prozess wird wieder eine neue Tabelle eingefügt für ein neues Land.
Die Markierung steht nach dem letzten Makro genau so, wie sie jetzt ist. Vielleicht gibt es ja ein Makro, dass in die aktive Zelle die Summenformel aus der Markierung setzt. Das wäre super.
Lieben Gruß,
Larissa

Anzeige
Datei kam an, wo bitte ist der Code? :-) o.w.T.
09.05.2008 15:52:30
Reinhard

Danach frage ich ja ;-)
09.05.2008 15:59:51
Larissa
Ich suche nach dem VBA-Code, der in die ActivCell eine Summenformel setzt.
Die Tabellen sind immer unterschiedlich lang, deshalb kann ich nicht sagen, immer 7 Schritte nach oben oder so.
Lieben Gruß,
Larissa

AW: Danach frage ich ja ;-)
09.05.2008 16:32:00
Tino
Hallo Larissa,
versuche es mal hiermit.

Sub SummeFormel()
Dim Zelle As Range, A As Long, Adresse As String
For A = 1 To Application.WorksheetFunction.CountIf(Columns("A:A"), 1)
If A = 1 Then
Set Zelle = Columns("A:A").Find(What:="1", After:=Range("A1"), LookIn:=xlFormulas, LookAt:= _
xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False _
, SearchFormat:=False)
Adresse = Range(Zelle, Zelle.End(xlDown)).Offset(0, 4).Address
Zelle.End(xlDown).Offset(1, 4).Formula = "=SUM(" & Adresse & ")"
Else
Set Zelle = Zelle.FindNext(Zelle)
Adresse = Range(Zelle, Zelle.End(xlDown)).Offset(0, 4).Address
Zelle.End(xlDown).Offset(1, 4).Formula = "=SUM(" & Adresse & ")"
End If
Next A
End Sub


Gruß
Tino

Anzeige
AW: Danach frage ich ja ;-)
09.05.2008 16:46:25
Larissa
Hallo Tino,
schön von Dir zu hören ;-)
Bei einer Tabelle funktioniert es, wenn aber ein weiteres Land dazu kommt, nicht mehr.
Da ist noch irgendwo der Wurm drinnen.
Tabelle nochmal mit Makro hochgeladen:
https://www.herber.de/bbs/user/52271.xls
Lieben Gruß und vielen Dank,
Larissa

Anzeige
AW: Danach frage ich ja ;-)
09.05.2008 16:52:00
Tino
Hallo,
habe mal mit mehreren Tabellen getestet, die FindNext funktionierte nicht sauber warum weis ich auch nicht.
Wen er die nicht mag machen wir es eben so.

Sub SummeFormel()
Dim Zelle As Range, A As Long, Adresse As String
For A = 1 To Application.WorksheetFunction.CountIf(Columns("A:A"), 1)
If A = 1 Then
Set Zelle = Columns("A:A").Find(What:="1", After:=Range("A1"), LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Adresse = Range(Zelle, Zelle.End(xlDown)).Offset(0, 4).Address
Zelle.End(xlDown).Offset(1, 4).Formula = "=SUM(" & Adresse & ")"
Else
Set Zelle = Columns("A:A").Find(What:="1", After:=Zelle, LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Adresse = Range(Zelle, Zelle.End(xlDown)).Offset(0, 4).Address
Zelle.End(xlDown).Offset(1, 4).Formula = "=SUM(" & Adresse & ")"
End If
Next A
End Sub


Gruß
Tino

Anzeige
mit Range bei FindNext
09.05.2008 17:04:00
Tino
Hallo,
hab es gefunden, man muss mit Range arbeiten damit FindNext Funktioniert.

Sub SummeFormel()
Dim Zelle As Range, A As Long, Adresse As String
For A = 1 To Application.WorksheetFunction.CountIf(Columns("A:A"), 1)
If A = 1 Then
Set Zelle = Range("A:A").Find(What:="1", After:=Range("A1"), LookIn:=xlFormulas, LookAt _
:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False, SearchFormat:=False)
Adresse = Range(Zelle, Zelle.End(xlDown)).Offset(0, 4).Address
Zelle.End(xlDown).Offset(1, 4).Formula = "=SUM(" & Adresse & ")"
Else
Set Zelle = Range("A:A").FindNext(After:=Zelle)
Adresse = Range(Zelle, Zelle.End(xlDown)).Offset(0, 4).Address
Zelle.End(xlDown).Offset(1, 4).Formula = "=SUM(" & Adresse & ")"
End If
Next A
End Sub


Gruß
Tino

Anzeige
Funktioniert Erstklassig !!!
09.05.2008 17:05:44
Larissa
Lieber Tino,
das ist ja mal wieder fantastisch, wie Du das immer hinbekommst.
Jetzt spielt die blöde Markierung gar keine Rolle mehr - Einfach Super.
Vielen Dank und ganz liebe Grüße,
Larissa

zu
09.05.2008 17:18:00
zu
zu

Rüffel
09.05.2008 17:20:00
Tino
Hallo,
muss mir selbst einen Rüffel geben, bei FindNext muss ich natürlich auch den Suchbereich angeben!
Na ja bevor ich kritisiert werden, gebe ich mir den Rüffel lieber selbst.
Gruß
Tino

Anzeige
Sollen immer nur 7 Zeilen summiert werden ?
09.05.2008 15:37:51
NoNet
Hallo Larissa,
ich habe es nicht ganz verstanden : Funktioniert das Makro wie gewünscht oder nicht ?
Sollen also IMMER GENAU 7 Zeilen addiert werden ?
Kopierst Du wirklich 4 SPALTEN (also z.B. Zahlen aus A1:D1) oder etwa doch 4 ZEILEN (also z.B. A1:A4) ?
Schau Dir zum besseren Verständnis dieser Funktion bzw. R1C1-Schreibweise mal folgenden Beitrag im Spotlight-Forum an :
http://spotlight-wissen.de/archiv/message/231967.html
Gruß, NoNet
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige