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

Hitta 4 sista raderna med data och kopiera och klistra in till annat kalkylblad


desertsulan

Rekommendera Poster

Goddag där.

 

Jag sitter och knåpar med ett excel blad där data inmatas från början i rad/cell A12 till DJ12 där kolumnen A innehåller ett datum och resten är bara siffror

Varje dag förs ny data in i varje nästa rad och bladet växer med en rad per dag.

Jag vill nu hitta ett smart knep via nåt script eller VB som hittar de 4 sista raderna och kopierar raderna rakt av och klistrar in dem ett annat blad med samma structur.

Datan från de fyra senaste raderna behöver klistras in i cell A8 som första cell och sen och DJ11 som sista cell.

 

Tacksam för hjälp

 

Mvh

 

Rickard

Länk till kommentar
Dela på andra webbplatser

Hej MH och tack för ditt svar.

Jag fick inte nått av ovanstående att fungera  :unsure: . Den första  ger ett felmeddelande att det är nåt fel på formeln och den andra subtraherar urspringsvärdet med 12.

 

Det går kanske att förenkla om man skippar funktionen med att formeln måste hitta de 4 sista raderna.

Går det istället att markera vilka 4 rader som skall kopieras in till nästa blad med ett macro ?

 

exempel.

 

Sub Macro2()
'
' Macro2 Macro
'
 
'
    Rows("1:4").Select        // Kan ett macro fråga användaren vilka rader som skall markeras eller väljs (markeras) innan macrot körs ?
    Selection.Copy
    Sheets("Sheet2").Select
    ActiveSheet.Paste
End Sub

 

 

Tack på förhand

 

Rickard

Länk till kommentar
Dela på andra webbplatser

Instämmer helt med MH

Går något att lösa med formler bör det lösas med formler, inte VBA-kod.

 

I sina stunder är VBA-kod enda som gäller men här ovan finns det bra formler att ta till.

Länk till kommentar
Dela på andra webbplatser

Nedanstående fungerar. Har endast ändrat/lagt till 2 $A$1 till $A$12

 

=FÖRSKJUTNING(Sheet1!$A$12;ANTALV(Sheet1!$A:$A)-(8+4)+RAD();KOLUMN()-1)

Länk till kommentar
Dela på andra webbplatser

Jag tycker fortfarande att formeln borde vara enklast

Svensk excelformel men med dina fliknamn (klistras in i A8 och kopieras vidare) 

=FÖRSKJUTNING(Sheet1!$A$1;ANTALV(Sheet1!$A:$A)-(8+4)+RAD();KOLUMN()-1)

 

På en engelsk installation borde det bli någonting i stil med:

=OFFSET(Sheet1!$A$1,COUNTA(Sheet1!$A:$A)-(8+4)+ROW(),COLUMN()-1)

 

 

Men vill du köra makron så går det naturligtvis (samtliga exempel kräver minst 4 ifyllda rader).

 

Exempel där du frågar efter startrad och antar att det är den + 3 rader som skall kopieras

Sub Macro2()

Dim iStartRad As Integer
iStartRad = CInt(InputBox("Ange vilket radnummer du vill börja kopiera från"))

Sheets("Sheet1").Select
Sheets("Sheet1").Range(Rows(iStartRad), Rows(iStartRad + 3)).Copy _
Destination:=Worksheets("Sheet2").Rows("8:11")
Sheets("Sheet2").Select
End Sub

Eller så här om du vill att excel automatväljer de 4 sista raderna

Sub Makro1()
Dim iSistaRad As Integer
Dim i As Integer
iSistaRad = Worksheets("Sheet1").Range("A10000").End(xlUp).Row
For i = 0 To 3
Sheets("Sheet2").Rows(8 + i).Value = Sheets("Sheet1").Rows(iSistaRad - 3 + i).Value
Next i
End Sub

Obs att Eforum rör till makrokoden ibland. Kolla att koden ser ut som bifogad bild om det blir problem 

attachicon.gifMacrobild.JPG

Tackar för detta makro, detta hjälper nu att vara lite mer dynamisk med vilket data som skall kopieras och skicka över.

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...