copiere date din mai multe sheet-uri intr-unul singur

Informatii despre cum se utilizeaza Microsoft Excel 2003. Calcule, Formule, Functii, Tabele pivot, Analiza datelor, etc
Închis
ingerul_danutz
Mesaje: 10
Membru din: Mie Noi 04, 2009 1:20 pm

copiere date din mai multe sheet-uri intr-unul singur

Mesaj de ingerul_danutz » Mie Feb 10, 2010 3:47 pm

Va salut,
Am de aplicat formula Vlookup intr-o baza de date;
dar valorile din care ii dau sa caute se regasesc in 62 sheet-uri, cum nu stiu ff bine formula vlookup... m-am gandit sa copiez datele din 62 sheet-uri intr-unul singur, dar dupa 10 m-am plictisit;

deci cum pot copia toate datele mai rapid sau cum pot aplica formula in toata baza de date....

IPP
Moderator
Moderator
Mesaje: 4196
Membru din: Mie Iul 29, 2009 7:26 am
Localitate: Cluj-Napoca

Re: copiere date din mai multe sheet-uri intr-unul singur

Mesaj de IPP » Mie Feb 10, 2010 4:20 pm

Buna ziua

In general o formula de cautare este cu atat mai scurta si mai eficienta (rapida) cu cat trebuie sa caute in mai putine locuri. Daca trebuie sa caute intr-o singura foaie e cel mai bine
ingerul_danutz scrie:deci cum pot copia toate datele mai rapid
cu macro. Pentru ceva mai concret ar trebui sa vedem niste "mostre" privind structura fisierului dvs.

IP

mariusc
Mesaje: 269
Membru din: Vin Sep 28, 2012 6:24 pm

Re: copiere date din mai multe sheet-uri intr-unul singur

Mesaj de mariusc » Mie Sep 17, 2014 10:30 am

Buna ziua,

Am un fisier excel cu 24 de sheet-uri.Capul de tabel este doar in primul sheet. Restul sheet-urilor incep de pe randul 1 direct cu valori.
Este vreo posibilitate sa copiez (nu manual) valoriile din toate sheet-urile intr-un singur sheet, exemplul atasat este sheetul "Table2".
In fisierul atasat sunt doar 3 sheet-uri. Doresc ca ordinea copierii sa fie: intai sheet-ul denumit "Table4" si apoi "Table5".

Multumesc.
Nu aveţi permisiunea de a vizualiza fişierele ataşate acestui mesaj.

mariusc
Mesaje: 269
Membru din: Vin Sep 28, 2012 6:24 pm

Re: copiere date din mai multe sheet-uri intr-unul singur

Mesaj de mariusc » Mie Sep 17, 2014 12:50 pm

Salutare,
Am gasit acest cod:

Cod: Selectaţi tot

Sub CopyFromWorksheets()
    Dim wrk As Workbook 'Workbook object - Always good to work with object variables
    Dim sht As Worksheet 'Object for handling worksheets in loop
    Dim trg As Worksheet 'Master Worksheet
    Dim rng As Range 'Range object
    Dim colCount As Integer 'Column count in tables in the worksheets
     
    Set wrk = ActiveWorkbook 'Working in active workbook
     
    For Each sht In wrk.Worksheets
        If sht.Name = "Master" Then
            MsgBox "There is a worksheet called as 'Master'." & vbCrLf & _
            "Please remove or rename this worksheet since 'Master' would be" & _
            "the name of the result worksheet of this process.", vbOKOnly + vbExclamation, "Error"
            Exit Sub
        End If
    Next sht
     
     'We don't want screen updating
    Application.ScreenUpdating = False
     
     'Add new worksheet as the last worksheet
    Set trg = wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Worksheets.Count))
     'Rename the new worksheet
    trg.Name = "Master"
     'Get column headers from the first worksheet
     'Column count first
    Set sht = wrk.Worksheets(1)
    colCount = sht.Cells(1, 255).End(xlToLeft).Column
     'Now retrieve headers, no copy&paste needed
    With trg.Cells(1, 1).Resize(1, colCount)
        .Value = sht.Cells(1, 1).Resize(1, colCount).Value
         'Set font as bold
        .Font.Bold = True
    End With
     
     'We can start loop
    For Each sht In wrk.Worksheets
         'If worksheet in loop is the last one, stop execution (it is Master worksheet)
        If sht.Index = wrk.Worksheets.Count Then
            Exit For
        End If
         'Data range in worksheet - starts from second row as first rows are the header rows in all worksheets
        Set rng = sht.Range(sht.Cells(1, 1), sht.Cells(65536, 1).End(xlUp).Resize(, colCount))
         'Put data into the Master worksheet
        trg.Cells(65536, 1).End(xlUp).Offset(1).Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Value
    Next sht
     'Fit the columns in Master worksheet
    trg.Columns.AutoFit
     
     'Screen updating should be activated
    Application.ScreenUpdating = True
End Sub

pe care l-am introdus intr-un modul VBA si ulterior am rulat macro-ul CopyFromWorksheets.
Copiaza capul de tabel din primul sheet; l-am sters manual.
O zi buna.

Închis

Înapoi la “Intrebari despre Excel 2003”