Microsoft Excel

Herbers Excel/VBA-Archiv

Summenbildung

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.Value
Gruß 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 Sub
Gruß 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 Sub
Rü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 Sub
Gruß Ewald


 

Beiträge aus den Excel-Beispielen zum Thema "Summenbildung"