![]() |
Betrifft: Summenbildung
von: walter mb
Geschrieben am: 15.08.2014 16:19:37
Hallo,
ich möchte gern Summen aus verschiedenen Zellen also die
Summenzellen sind nicht immer die Selben bilden und dies Summe
in eine andere Datei kopieren.
Beispiel:
Ich klick C10, C12, C13 und C14 an.
Daraus die Summe soll in der neuen Datei reingesetzt werden.
Habe mal aufgezeichnet:
ActiveCell.FormulaR1C1 = "=SUM(R[4]C[-7]+R[6]C[-7]+R[11]C[-7])"
dies habe ich mit gedrückter Taste ctrl getan.
Geht sowas ??????
gruß waltermb
![]() ![]() |
Betrifft: Habe es anders gelöst -)
von: walter mb
Geschrieben am: 15.08.2014 17:57:43
![]() ![]() |
Betrifft: AW: Habe es anders gelöst -)
von: Daniel B.
Geschrieben am: 15.08.2014 18:36:23
Hallo waltermb,
auch wenn Du es jetzt anders gelöst hast, eine kurze Antwort von mir.
Ich gehe davon aus, dass Du so bei einer Makroaufzeichnung vorgegangen bist.
Du musst allerdings zunächst eine Zelle aktivieren, in die die Formel geschrieben wird, z.B. C9.
Schreibe so:
Range("C9").Activate
ActiveCell.FormulaR1C1="=SUM(R[4]C[-7]+R[6]C[-7]+R[11]C[-7])"
oder so:
Cells(9,3).FormulaR1C1="=SUM(R[4]C[-7]+R[6]C[-7]+R[11]C[-7])"
Beides funktioniert, beim Makro aufzeichnen auch mit gedrückter Strg-Taste. Aufgezeichnet wird allerdings immer die 1. Variante (ActivCell.Formula...)
Grüße
Daniel B.
![]() ![]() |
Betrifft: Daniel Super Danke für den Tip kann ich...
von: walter mb
Geschrieben am: 15.08.2014 19:20:38
Hallo Daniel,
für dennoch nützlich,
Danke.
Kann ich noch eine FRage stellen ?
Wenn ja DANKE im Voraus.
Ich habe diese Zeile:
Workbooks(wbk).Range("I23") = ActiveSheet.ActiveCell.Value
Warum kommt Fehlermeldung ?
Laufzeitfehler 438
Objekt diese Eigenschaft oder Methode nicht.
gruß
Walter mb
![]() ![]() |
Betrifft: Du hast das Beispiel nun möchte ich ...
von: walter mb
Geschrieben am: 15.08.2014 19:34:55
Hallo Daniel,
leider hast Du mir den Anstoß gegeben, doch etwas anders zu "Basteln".
Wenn in der Tabelle im Bereich:
B26:B50 + B94:B118 + B164:B188 ein m steht, sollen aus den Zeilen
wo das m steht aus der Spalte D der entsprechende Wert addiert und in
Zelle J33 geschrieben werden.
Geht sowas ?
mfg
walter mb
![]() ![]() |
Betrifft: AW: Daniel Super Danke für den Tip kann ich...
von: Ewald
Geschrieben am: 15.08.2014 19:57:05
Hallo Walter,
du gibst nur das Workbbook an aber nicht das Sheet.
Workbooks(wbk).Sheets("Tabelle1").Range("I23") = ActiveCell.ValueGruß Ewald
![]() ![]() |
Betrifft: ...& hast damit = 2 Fehler in 1 CodeZeile! :-] orT
von: Luc:-?
Geschrieben am: 15.08.2014 20:30:15
Gruß, Luc :-?
![]() ![]() |
Betrifft: Danke ihr Beide, habe aber noch...
von: Walter mb
Geschrieben am: 15.08.2014 20:43:17
Hallo zusammen,
könnt ihr mir aber hier noch helfen ?
Wenn in der Tabelle im Bereich:
B26:B50 + B94:B118 + B164:B188 ein m steht, sollen aus den Zeilen
wo das m steht aus der Spalte D der entsprechende Wert addiert und in
Zelle J33 geschrieben werden.
Geht sowas ?
mfg
walter mb
![]() ![]() |
Betrifft: AW: Danke ihr Beide, habe aber noch...
von: Peter Feustel
Geschrieben am: 15.08.2014 22:19:29
Hallo Walter,
was hältst Du von der VBA-Lösung:
Option Explicit ' ' Wenn in der Tabelle im Bereich: ' B26:B50 + B94:B118 + B164:B188 ein m steht, sollen aus den Zeilen ' wo das m steht aus der Spalte D der entsprechende Wert addiert und in ' Zelle J33 geschrieben werden. ' Public Sub Summieren() Dim rBereich As Range Dim rZelle As Range Dim dSumme As Double With ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen Set rBereich = .Range("B26:B50,B94:B118,B164:B188") For Each rZelle In rBereich If rZelle.Value = "m" Then dSumme = dSumme + Val(Replace(.Range("D" & rZelle.Row).Value, ",", ".")) End If Next rZelle .Range("J33").Value = dSumme End With End SubGruß Peter
![]() ![]() |
Betrifft: Danke Peter und Ewald aber...
von: walter mb
Geschrieben am: 16.08.2014 09:51:11
Guten Morgen zusammen,
super beide Makros OK !!!
Leider habe ich noch ein kleines Problem.
Ich möchte von der aktiven Tabelle aus I23 den Wert in die Datenbank kopieren,
hier nochmal der Code, der den Namen kopiert aber nicht den Wert aus der Tabelle in die
Datenbank, warum auch immer.
Dim wbh As String
wbh = ActiveWorkbook.Name
With ActiveCell
.Copy 'hier der Name der auch in Datenbank eingesetzt wird.
End With
Dim rngAct As Range
Dim lngLetzte As Long
Set rngAct = ActiveCell
Windows("- Rg. Datenbank.xlsm").Activate
With ActiveSheet
lngLetzte = Application.Max(.Cells(.Rows.Count, 6).End(xlUp).Row, _
.Cells(.Rows.Count, 7).End(xlUp).Row, _
.Cells(.Rows.Count, 8).End(xlUp).Row) + 1
.Cells(lngLetzte, 1) = rngAct.Value
' oder
' rngAct.Copy .Cells(lngLetzte, 1)
Application.CutCopyMode = False
.Cells(lngLetzte, 1).Select
ActiveCell.Offset(0, 1).Select
End With
Workbooks(wbh).Sheets("Tabelle5").Range("I23") = ActiveCell.Value
mfg
walter mb
![]() ![]() |
Betrifft: Zellwert kopieren
von: Erich G.
Geschrieben am: 16.08.2014 11:36:05
Hi Walter,
probier mal
Sub abcd() Dim rngAct As Range Dim lngLetzte As Long Set rngAct = Range("I23") ' Zelle I23 im aktiven Blatt der aktiven Mappe Workbooks("- Rg. Datenbank.xlsm").Activate With ActiveSheet ' zufällig aktives Blatt in "- Rg. Datenbank.xlsm" lngLetzte = Application.Max( _ .Cells(.Rows.Count, 6).End(xlUp).Row, _ .Cells(.Rows.Count, 7).End(xlUp).Row, _ .Cells(.Rows.Count, 8).End(xlUp).Row) + 1 .Cells(lngLetzte, 1) = rngAct.Value End With End SubRückmeldung wäre nett! - Grüße aus Kamp-Lintfort von Erich
![]() ![]() |
Betrifft: Hallo zusammen ... --)) Endlich
von: walter mb
Geschrieben am: 16.08.2014 11:56:44
Hallo zusammen,
ich habe es geschafft, so wie ich es wünschte.
Dim ac As Range
Set ac = ActiveCell
ac.Value = Workbooks(wbh).ActiveSheet.Range("I23").Value
So wird der gewünschte Wert eingesetzt.
Schönes Wochenende
mfg
walter mb
![]() ![]() |
Betrifft: AW: Danke ihr Beide, habe aber noch...
von: Ewald
Geschrieben am: 15.08.2014 22:29:33
Hallo Walter,
teste mal so
Sub addieren() Dim myrange As Range Dim zelle As Range Dim mysum As Double Set myrange = ActiveSheet.Range("B26:B50, B94:B118, B164:B188") For Each zelle In myrange If zelle.Value = "m" Then mysum = mysum + zelle.Offset(0, 2).Value End If Next ActiveSheet.Range("J33").Value = mysum End SubGruß Ewald
![]() |