Makro for å flytte eller kopiere data mellom Excel-arbeidsbøker

Denne artikkelen vil lære deg hvordan du kopierer eller overfører data mellom regneark i Microsoft Excel ved hjelp av VBA. I dette spesielle eksempelet vil vi også lære deg hvordan du kombinerer data ved hjelp av et tilføyende spørsmål. Denne kombinasjonen av oppgaver lar deg kombinere data i eksisterende regneark for enklere analyse.

Makro for å flytte eller kopiere data i Excel

La oss ta et tilfelle der du må kopiere data fra en arbeidsbok og deretter endre innholdet til en annen arbeidsbok. I dette eksemplet har arbeidsbok 1 (kilde arbeidsbok) 1 2 3 4 5 og arbeidsbok 2 har 6 7 8 9 0 .

Etter å ha kjørt makroen, må arbeidsbok 2 ha 6 7 8 9 0 1 2 3 4 5 . Formatene i begge arbeidsbøkene er de samme.

Her er en makro som kan overføre og legge til dataene dine. (Pass på at du leser MERK i koden):

 Sub CopyData ()

Dim sBook_t As String

Dim sBook_s As String

Dim sSheet_t As String

Dim sSheet_s As String

Dim lMaxRows_t så lenge

Dim lMaxRows_s As Long

Dim sMaxCol_s As String

Dim sRange_t Som String

Dim sRange_s As String

sBook_t = "Måldata WB- Kopier data til WB.xls"

sBook_s = "Kildedata WB - Kopier data til WB.xls"

sSheet_t = "Mål WB"

sSheet_s = "Source"

lMaxRows_t = Arbeidsbøker (sBook_t) .Sheets (sSheet_t) .Cells (Rows.Count, "A"). End (xlUp) .Row

lMaxRows_s = Arbeidsbøker (sBook_s) .Sheets (sSheet_s) .Cells (Rows.Count, "A"). End (xlUp) .Row

sMaxCol_s = Arbeidsbøker (sBook_s) .Sheet (sSheet_s) .Cells (1, Columns.Count) .End (xlToLeft) .Address

sMaxCol_s = Mid (sMaxCol_s, 2, InStr (2, sMaxCol_s, "$") - 2)

Hvis (lMaxRows_t = 1) Så

sRange_t = "A1:" & sMaxCol_s & lMaxRows_s

sRange_s = "A1:" & sMaxCol_s & lMaxRows_s

Workbooks (sBook_t) .Sheets (sSheet_t) .Range (sRange_t) = Arbeidsbøker (sBook_s) .Sheets (sSheet_s) .Range (sRange_s) .Value

Ellers

sRange_t = "A" & (lMaxRows_t + 1) & ":" & sMaxCol_s & (lMaxRows_t + lMaxRows_s - 1)

sRange_s = "A2:" & sMaxCol_s & lMaxRows_s

Workbooks (sBook_t) .Sheets (sSheet_t) .Range (sRange_t) = Arbeidsbøker (sBook_s) .Sheets (sSheet_s) .Range (sRange_s) .Value

' ###################### MERK #################

'Følgende linjer skal brukes til at serienummeret skal fikseres, i stedet for å bli kopiert

'Hvis det ikke er behov for det, slett du deretter linjen nedenfor

Arbeidsbøker (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t) .AutoFill Destinasjon: = Arbeidsbøker (sBook_t) .Sheets (sSheet_t) .Range ("A" & lMaxRows_t & ": A" & (lMaxRows_t + lMaxRows_s - 1)), Type: = xlFillSeries

Slutt om

Slutt Sub

Forrige Artikkel Neste Artikkel

Beste Tips