Just nu i M3-nätverket
Gå till innehåll

Excelmakro summera


ulflindquist

Rekommendera Poster

ulflindquist

Jag tar ut en lista med varierande antal rader. Jag vill summera värdena i kolumn d-f, och summan skall komma tre rader nedanför sista posten, i varje kolumn. Jag lyckas ta mig dit med hjälp av förljande makro

 

Range("D1").Select

intSistarad = Cells(Rows.Count, 1).End(xlUp).Row

intSistarad = intSistarad + 3

 

Cells(intSistarad, "D").Select

ActiveCell.FormulaR1C1 = "=SUM(R[-17]C:R[-1]C)"

 

Problemet som uppkommer är att jag vill att den summerar från D6 till den sista posten, alltså är -17 felet, alltså där summeringen startar.

 

Frågan är alltså, hur får jag den att summera från en absolut punkt, D6, till en relativ dvs den sista posten.

 

Länk till kommentar
Dela på andra webbplatser

Oskar Hansson

Kanske inte bästa sättet, men du kan pröva med (utan R1C1):

ActiveCell.Formula = "=SUM(D6:D" & intSistarad & ")"

 

 

//Oskar

____________________________________________________

 

Simplify Life - Everything should be made as simple as possible

 

Länk till kommentar
Dela på andra webbplatser

och vanliga rådet - adressera INTE via ActiveCell. Stega INTE via Select.

 

Adressera direkt till celler och stega relativt dessa.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

ulflindquist

Jag fick ihop det.

Sub Summera()
'
' Detta makro summerar värden i kolumn d-f och lägger resultatet tre rader under sista värdet, oavsett antal värden
'Första värdet finns på rad 6 (i cell D6 för att vara exakt)i min lista. Fungerar kanon för mig.

  Range("D1").Select
   intSistarad = Cells(Rows.Count, 1).End(xlUp).Row
   intSistarad = intSistarad + 3

   Cells(intSistarad, "D").Select
ActiveCell.Formula = "=SUM(D6:D" & intSistarad - 1 & ")"

     Range("e1").Select
   intSistarad = Cells(Rows.Count, 1).End(xlUp).Row
   intSistarad = intSistarad + 3

   Cells(intSistarad, "e").Select
ActiveCell.Formula = "=SUM(e6:e" & intSistarad - 1 & ")"

   Range("f1").Select
   intSistarad = Cells(Rows.Count, 1).End(xlUp).Row
   intSistarad = intSistarad + 3

   Cells(intSistarad, "f").Select
ActiveCell.Formula = "=SUM(f6:f" & intSistarad - 1 & ")"

End Sub

 

Stort tack för hjälpen

 

 

[inlägget ändrat 2009-07-10 21:56:11 av Monshi]

Länk till kommentar
Dela på andra webbplatser

 

Fixar till ditt makro till vettig kod:

 

Sub Summera()
'
' Detta makro summerar värden i kolumn d-f och lägger resultatet tre rader under sista värdet, oavsett antal värden
'Första värdet finns på rad 6 (i cell D6 för att vara exakt)i min lista. Fungerar kanon för mig.

With Blad1
   intSistarad = .Cells(Rows.Count, 1).End(xlUp).Row
   .Cells( intSistarad + 3, "D").Formula = "=SUM(D6:D" & intSistarad +2 & ")"
   .Cells(intSistarad+3, "e").Formula = "=SUM(e6:e" & intSistarad +2 & ")"
   .Cells(iintSistarad+3, "f").Formula = "=SUM(f6:f" & intSistarad +2 & ")"
End With
End Sub

 

Samt tilldelningen av formeln kan man göra på detta enkla vis annars:

.Range(.Cells( intSistarad + 3, 4), .Cells( intSistarad + 3,6)).FormulaR1C1 = "=SUM(R6:R[-1])"

En enda rad

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...