Kopiera info fr celler till 1 annat dok gm 1 klick?

Lisali

New Member
Joined
Jan 31, 2007
Messages
8
Jag har en Excel-fil med 15 olika kolumner. När jag klickar på t ex rad 2, kolumn D vill jag att tre kolumner från den raden ska lägga sig i ett dokument och samtidigt ska 4 andra kolumner lägga sig i ett annat dokument.

När man kanske en vecka senare vill klicka på en annan rad men i samma kolumn, ska ovanstående tre respektive fyra kolumner fyllas på i de två andra dokumenten.

Vet inte om någon förstår hur jag menar?

Är detta möjligt att göra? Hur gör man i så fall?

Alla tips emottages tacksamt!

//
Lisa
 

Excel Facts

What does custom number format of ;;; mean?
Three semi-colons will hide the value in the cell. Although most people use white font instead.
Hej och välkommen!

Självklart går det att göra, du behöver ett makro. Dock kan jag inte skriva ett åt dig om du inte är mer specifik. Vilka 4 andra kolumner t.ex.

Börja med att använda Makroinspelaren för att spela in vad som händer när du gör det hela manuellt. Du kan sedan ändra i koden så att det kan upprepas på olika ställen. Om du behöver hjälp kan du klistra in koden du får fram i en post här.
 
Upvote 0
Så det går alltså? :eek:

Jag är definitivt inte bästa vän med Excel och när jag var inne och kikade på spela-in-makro-funktionen så fattar jag faktiskt inte särskilt mycket.

Vågar man be om att få det förklarat lite tydligare hur man gör?

Om jag förklarar så här:

När jag klickar i till exempel rad 2 tabell B så ska information i rad 2 tabell B, rad 2 tabell C och rad 2 tabell E kopieras över i ett nytt dokument
samtidigt ska
rad 2 tabell B, rad 2 tabell H och rad 2 tabell J kopieras till ytterligare ett nytt dokument.

I dessa två nya dokument ska andra tabeller finnas, där man kan fylla på med annan information, men detta ska man göra manuellt.

Den här funktionen (makrot) ska kunna utföras i alla rader i tabell B genom att man klickar på en text som står där (ett slags id-nr kan man säga).

Vänligen
Lisa
 
Upvote 0
Att spela in ett makro är mycket lätt, kolla i hjälpfilen, den beskriver det mycket väl.

Jag kan fortfarande inte skriva kod som gör vad du vill, jag vet ju inte var dina tabeller finns och vart din data skall ta vägen.

Du skall dock få ett mycket enkelt exempel som jag hoppas du kan anpassa vidare.

Först gör en sida som ser exakt ut som denna:
Book1
ABCDEFGH
1TabellBTabellCTabellDTabellENyTabellBNyTabellCNyTabellE
27131925
38142026
49152127
510162228
611172329
712182430
Sheet1


Sedan högerklickar du på Blad taggen och väljer visa kod. Nu kommer visual basic editor att öppnas. Klistra in nedanstående kod i det tomma fönstret och stäng visual basic editor igen.

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rad As Integer

If Target.Cells.Count > 1 Or Intersect(Target, Range("A2:A20")) Is Nothing Then Exit Sub

rad = Range("F65536").End(xlUp).Row + 1

Target.Copy Cells(rad, 6)
Target.Offset(0, 1).Copy Cells(rad, 7)
Target.Offset(0, 3).Copy Cells(rad, 8)

End Sub

Klicka nu i de olika cellerna i A kolumnen och se vad som händer.

Hoppas att du kan anpassa detta för dina behov.
 
Upvote 0
Åh, det där fungerade precis som jag tänkt att det skulle göra, förutom att jag vill ha det till ett nytt blad - går det att styra så?

Jag har försökt att förstå den skrivna koden, men tyvärr... Jag vet inte hur jag ska applicera det på mitt dokument. Vad i koden är det som anger vad som ska kopieras? Hur hör koden ihop med cellerna?

Vänligast
Lisa
 
Upvote 0
OK.

Till att börja med för att få det till ett annat blad, ändra koden på följande sätt:

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rad As Integer

If Target.Cells.Count > 1 Or Intersect(Target, Range("A2:A20")) Is Nothing Then Exit Sub

rad = Sheets("Sheet2").Range("F65536").End(xlUp).Row + 1

Target.Copy Sheets("Sheet2").Cells(rad, 6)
Target.Offset(0, 1).Copy Sheets("Sheet2").Cells(rad, 7)
Target.Offset(0, 3).Copy Sheets("Sheet2").Cells(rad, 8)

End Sub

Det är biten Sheets("Sheet2"). som jag har lagttill på fyra ställen. Du måste ändra det som står inom sitationstecknen till ditt verkliga bladnamn.



Vad som skall kopieras styrs av följande tre rader:

Code:
Target.Copy Sheets("Sheet2").Cells(rad, 6)
Target.Offset(0, 1).Copy Sheets("Sheet2").Cells(rad, 7)
Target.Offset(0, 3).Copy Sheets("Sheet2").Cells(rad, 8)

Target är den cell du klickar i och enligt första raden kopieras den cellen. (att Target måste ligga i området A2:A20 styrs av tredje raden i den totala koden och kan anpassas av dig)

Andra raden ovan "Target.Offset(0, 1).Copy" betyder att cellen som kopieras ligger på samma rad som Target och en kolumn åt höger

Tredje raden ovan "Target.Offset(0, 3).Copy" betyder att cellen som kopieras ligger på samma rad som Target och tre kolumner åt höger
 
Upvote 0
Du är superbra! Vad snällt av dig att förklara. :) Jag tror jag förstår nu...

Jag har en sista fråga: om jag vill att det ska kopieras till två blad samtidigt - går det? Går det att styra också så att bladen får t ex både samma och olika tabeller kopierade?
 
Upvote 0
Det är den här raden som kopierar:

Target.Offset(0, 1).Copy Sheets("Sheet2").Cells(rad, 7)

Du behöver bara göra fler sådana rader, en för varje moment. Du behöver naturligtvis ändra bladnamnet på de rader som skall gå i det andra bladet.

Siffrorna efter Offset visar hur många rader och kolumner från den valda cellen datan som skall kopierat finns.

Siffrorna efter Cells visar var på bladet de skall klistras in. T.ex. Cells(1,1) blir cell A1 o.s.v.

I det här fallet anges destinationen som Cells(rad, 7).

"rad" är en variabel som kommer ihåg vilken rad som datan skall klistras in på.

Den får sitt värde i raden:

rad = Sheets("Sheet2").Range("F65536").End(xlUp).Row + 1

Skall du jobba med två blad måste du därför duplicera denna raden och ändra den så att den letar rätt på första lediga raden i det andra bladet också.

T.ex:

rad2 = Sheets("Sheet3").Range("F65536").End(xlUp).Row + 1


Det är viktigt att du sedan håller isär variablerna och använder dem för rätt blad.
 
Upvote 0
Underbart! Nu kopieras det till båda bladen när jag klickar i B2-fältet! Tjoho!!! Superglad! Nu har jag en sak kvar som jag inte fattar...
Jag vill att det som kopieras in ska lägga sig på Blad2 och Blad3 men i tabell A2, alltså i första tabellen (A) rad 2.

Här är koden från min fil:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rad As Integer

If Target.Cells.Count > 1 Or Intersect(Target, Range("B2:B170")) Is Nothing Then Exit Sub

rad = Sheets("Blad2").Range("F65536").End(xlUp).Row + 1
rad = Sheets("Blad3").Range("F65536").End(xlUp).Row + 1

Target.Copy Sheets("Blad2").Cells(rad, 6)
Target.Offset(0, 1).Copy Sheets("Blad2").Cells(rad, 7)
Target.Offset(0, 3).Copy Sheets("Blad2").Cells(rad, 8)
Target.Copy Sheets("Blad3").Cells(rad, 6)
Target.Offset(0, 1).Copy Sheets("Blad3").Cells(rad, 7)
Target.Offset(0, 3).Copy Sheets("Blad3").Cells(rad, 8)

End Sub


Om jag går in och ändrar i Target (rad, 6, 7 och 8) till 1, 2 och 3 så lägger sig kopieringen rätt, men tyvärr inte under varandra. Alltså, om jag klickar på två celler efter vararande i B2 i Blad1 så skriver den över det som kopierades först. Vet inte om du förstår hur jag menar? Jag kan knappt formulera ihop vad jag menar...
 
Upvote 0
Först och främst måste du ha 2 olika variabler, en för varje blad och hålla isär dem. (som du hade det gav du rad ett värde två gånger)

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)

Dim rad1 As Integer
Dim rad2 As Integer

If Target.Cells.Count > 1 Or Intersect(Target, Range("B2:B170")) Is Nothing Then Exit Sub

rad1 = Sheets("Blad2").Range("F65536").End(xlUp).Row + 1
rad2 = Sheets("Blad3").Range("F65536").End(xlUp).Row + 1

Target.Copy Sheets("Blad2").Cells(rad1, 6)
Target.Offset(0, 1).Copy Sheets("Blad2").Cells(rad1, 7)
Target.Offset(0, 3).Copy Sheets("Blad2").Cells(rad1, 8)
Target.Copy Sheets("Blad3").Cells(rad2, 6)
Target.Offset(0, 1).Copy Sheets("Blad3").Cells(rad2, 7)
Target.Offset(0, 3).Copy Sheets("Blad3").Cells(rad2, 8)

End Sub

Sedan måste du ändra en sak till nämligen raderna:

rad1 = Sheets("Blad2").Range("F65536").End(xlUp).Row + 1
rad2 = Sheets("Blad3").Range("F65536").End(xlUp).Row + 1

De känner ju av var första ledia cellen är i kolumn F. (Börjar på F65536 och letar uppåt efter ledig cell.)

Om du t.ex. ändrar och klistar in i kolumn 1 får du ändra F65536 till A65536
 
Upvote 0

Forum statistics

Threads
1,214,641
Messages
6,120,693
Members
448,979
Latest member
DET4492

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top