ID tematu: 75847
 |
Makro łaczenie danych z wielu arkuszy |
Autor |
Wiadomość |
edta
Fan Excela

Wersja: Win Office 2016
Posty: 73
|
Wysłany: 16-05-2024, 20:47 Makro łaczenie danych z wielu arkuszy
|
|
|
Witam,
prośba o napisanie następującego makra zgodnie z załącznikiem.
Mam plik w którym danymi są arkusze "1","2", itd.- w przykładzie są tylko dwa takie arkusze ale tych arkuszy może być nieskończenie wiele i mogą mieć różne nazwy. Budowa każdego kolejnego kolejnego arkusza jest taka sama tzn. miejsce zapisu danych.
Chciałbym żeby makro tworzyło taką tabele jak w arkuszu dane- dane z wszystkich arkuszy poprzedzających arkusz "dane" w postaci takiej tabeli.
W tabeli z arkusza "Dane" kolumny numerowane 1,2,3...54 pozostają puste.
Z góry dziękuje za pomoc.
makro.xlsx
|
Pobierz Plik ściągnięto 43 raz(y) 39.15 KB |
|
|
 | ID posta:
435374
|
|
|
 |
|
|
|
dm
Excel Expert

Wersja: Win Office 2013
Pomógł: 654 razy Posty: 1712
|
Wysłany: 17-05-2024, 11:59
|
|
|
Testuj.
dm
Ps. W piątej linii od końca powinno być Kod: | .Range("D" & Lst).Resize(10, 27) = Application.Transpose(wsad) |
makro.xlsm
|
Pobierz Plik ściągnięto 45 raz(y) 48.12 KB |
|
|
 | ID posta:
435382
|
|
|
 |
|
|
edta
Fan Excela

Wersja: Win Office 2016
Posty: 73
|
Wysłany: 27-05-2024, 08:52
|
|
|
Dziekuje za makro.
Uruchomiłem ale wiersze od nr. 2 do 21 są puste.
Jak zrobić żeby dane uzupełniały się od od drugiego wiersza? |
|
 | ID posta:
435514
|
|
|
 |
|
|
dm
Excel Expert

Wersja: Win Office 2013
Pomógł: 654 razy Posty: 1712
|
Wysłany: 27-05-2024, 19:12
|
|
|
Dzieje się tak, bo masz ukryty arkusz.
Zmień makro na Kod: | Option Explicit
Option Base 1
Sub Makro()
Dim i As Long, r As Long, Lst As Long
Dim Sht As Worksheet
Dim wsad, wynik(10, 3)
For Each Sht In Worksheets
If Sht.Name <> "Dane" Then
If Sht.Visible = True Then
wsad = Sht.Range("E12").CurrentRegion
r = 0
For i = 5 To 14
r = r + 1
wynik(r, 1) = Sht.Cells(7, i)
wynik(r, 2) = Sht.Cells(5, i)
wynik(r, 3) = Sht.Cells(6, i)
Next i
With Sheets("Dane")
Lst = .Cells(.Rows.Count, "A").End(xlUp).Row
If Lst > 2 Then Lst = Lst + 1
.Range("A" & Lst).Resize(r, 3) = wynik
.Range("D" & Lst).Resize(10, 27) = Application.Transpose(wsad)
End With
End If
End If
Next Sht
End Sub
| dm |
|
 | ID posta:
435536
|
|
|
 |
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach Nie możesz załączać plików na tym forum Możesz ściągać załączniki na tym forum
|
Dodaj temat do Ulubionych Wersja do druku
|
|
Strona uĹźywa plikĂłw cookies.
Kliknij tutaj, Ĺźeby dowiedzieÄ siÄ jaki jest cel uĹźywania cookies oraz jak zmieniÄ ustawienia cookie w przeglďż˝darce.
KorzystajÄ
c ze strony uĹźytkownik wyraĹźa zgodÄ na uĹźywanie plikĂłw cookies, zgodnie z bieĹźÄ
cymi ustawieniami przeglÄ
darki.
SprawdĹş, w jaki sposĂłb przetwarzamy dane osobowe
|