logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

EXCEL VBA: Jak kopiować dane z wielu arkuszy do jednego?

piotrek8940 02 Maj 2014 16:59 1782 19
REKLAMA
  • #1 13562749
    piotrek8940
    Poziom 8  
    Posty: 157
    Ocena: 7
    Witam ponownie
    panowie znowu mam problem zaczołem bawić sie tym VBA i nawet niezle mi idzie :) ale nie lubię stać długo nad jednym tematem...a wiec tak 2 problemy:

    1. mam kilka arkuszy o nazwach imie i nazwisko...teraz w osobnym arkuszu chce pobrac niektóre dane z tych arkuszy...tzw dane są zawsze w jednym miejscu np W B2 , C8-C12 ...Dane z B2 chce wczytywać do kolumny A a inne do B i tak dalej...wiem że trzeba stworzyć pętlę przelatującą po wszystkich arkuszach...ale nie wiem za bardzo jak..

    2. W tych arkuszach mam pewną liczbę np 208...zapisuję plik z tymi arkuszami i tą liczbą np STYCZEŃ...otwieram następny plik i zapisuję go LUTY i teraz potrzebuję pobrać tą pewną liczbę z pliku STYCZEŃ do pliku LUTY..da sie tak zawsze ona bedzie w jednej komórce...Najlepiej zeby program pytał z kąd pobrać ta liczbę czy ze Styczeń czy z innego pliku..

    Wiem że może zawile to napisałem jak coś to pisać ale bardzo proszę o pomoc w miarę chęci i możliwośći.
    Z góry dziekuje
  • REKLAMA
  • Pomocny post
    #2 13563267
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    piotrek8940 napisał:
    wiem że trzeba stworzyć pętlę przelatującą po wszystkich arkuszach...ale nie wiem za bardzo jak..

    ad. 1.
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #3 13571358
    piotrek8940
    Poziom 8  
    Posty: 157
    Ocena: 7
    Nie rozumiem do końca twojej koncepcji ale dziękuje za zainteresowanie...wiem zę pętla for each przelwatuje po kazdym elemenciie ale nie rozumiem warunku...
    Mógłbys trochę wytłumaczyć o co chodzi
    Z góry dziekuje
  • #4 13571435
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Chcesz przelecieć po wszystkich arkuszach - do tego jest pętla For Each.
    Zakładam, że na każdym arkuszu oprócz arkusza, z którego uruchamiasz makro - chcesz wykonać jakąś akcję.
    Żeby nie wykonywać akcji na arkuszu z którego uruchamiasz makro, możesz wykorzystać warunek If jak w przykładzie.
  • #5 13572193
    piotrek8940
    Poziom 8  
    Posty: 157
    Ocena: 7
    No tak if omija mi aktywny arkusz ..moge tu teżź podać nazwę konkretna..a jak wpisać do kolumny A z góry na dół np nazwy wszystkich arkuszy ktory znajdują sie w kazdym arkuszy na pozycji B2 czyli utworzyc taką liste
  • REKLAMA
  • Pomocny post
    #6 13572984
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Na przykład tak:
    Kod: text
    Zaloguj się, aby zobaczyć kod
  • #7 13574187
    piotrek8940
    Poziom 8  
    Posty: 157
    Ocena: 7
    Niby takie proste a ciężko wymyślić...wielkie dzięki...a powiedz mi jeszcze jak by zrobić na odwrót czyli mamy taką liste i chcemy utworzyć tyle nowych arkuszy ile jest osob na tej liscie i wpisać do nich dane z listy??
    prosze o jakieś wskazówki
  • Pomocny post
    #8 13574379
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Ostatnio robiłem u nas w firmie szkolenie z VBA, akurat na jednej z lekcji to przerabialiśmy. Przykład w załączniku.
    Załączniki:
    • Lekcja_07b.zip (21.57 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • #9 13574390
    piotrek8940
    Poziom 8  
    Posty: 157
    Ocena: 7
    No to się mi udało:) Gdybyś mógł podesłać mi wiecej twoich lekcji to było by fajnie albo na priv podesłac...widzę że VBA masz w jednym palcu:) a nie wymyślił byś cos na mój 2 problem??
  • #10 13574506
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Twój drugi problem nie jest dla mnie zrozumiały. Jeżeli otworzyłeś plik STYCZEŃ i zapisujesz plik pod inną nazwą (LUTY), to będą w nim te same dane jak w pliku STYCZEŃ - a więc i ta liczba. Może jakiś przykład załączysz?
  • REKLAMA
  • #11 13574583
    piotrek8940
    Poziom 8  
    Posty: 157
    Ocena: 7
    Chodzi mi o to że mam liczbę np "208" w pliku Styczeń...i ona staję się jakby globalna tzw Drugi plik Luty odwołuję się do tej liczy w pliku styczeń...chcę jakby zrobić takie odwołanie do innego pliku. Nastepnię wykonuję operację na niej i mam już liczbę "400".. W pliku Marzec odwołuję sie do liczy z lutego czyli 400 i tak dalej..
    Naświetliłem Ci trochę mój problem??
  • #12 13574657
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Jeżeli musisz powiązać jeden plik z wartościami z innego i znasz ich lokalizacje, to otwórz te dwa pliki jednocześnie, w pliku LUTY zrób odwołanie do pliku STYCZEŃ (po prostu - wpisz w komórce =, przejdź do arkusza STYCZEŃ i zaznacz w nim komórkę). Formuła przyjmie wartość mniej więcej taką: =[STYCZEŃ.xls]Arkusz1!$B$3.
    Jak teraz zamkniesz plik STYCZEŃ, formuła zmieni się na pełną ścieżkę do pliku i będzie się aktualizować przy otwarciu (o ile masz to ustawione w opcjach Excela monit lub automatyczne odświeżanie łączy skoroszytu).
  • #13 13574791
    piotrek8940
    Poziom 8  
    Posty: 157
    Ocena: 7
    No to jest dobry sposób na powiązanie gdy mamy po 1 arkuszu w pliku...a jeżeli mamy po 10 akruszy które tak samo muszą być powiązane to wtedy za kazdym razem trzeba robić to powiązanie ręcznie.. i tu chciałby to zautomatyzować
  • #14 13574849
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Czy ta liczba będzie się później zmieniać po jej skopiowaniu czy już nie?
  • #15 13574949
    piotrek8940
    Poziom 8  
    Posty: 157
    Ocena: 7
    Tak będzie sie zmieniać w każdym miesiącu to chodzi o to podam przykład na początku roku mamy 208 godzin urlopu z każdym miesiącem będzie sie ona pomniejszac i chce zrobić aby odwoływała sie do poprzedniego miesiąca i mamy np 10 osób czyli 10 arkuszy...da się tak w ogóle??
  • #16 13575487
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Można wstawić formułę makrem, zmieniając tylko nazwę miesiąca która jest np. w jakiejś komórce.
    Przykład na jedną komórkę:
    Kod: text
    Zaloguj się, aby zobaczyć kod

    Można to wstawić do pętli która wcześniej podałem, wstawiając formułę w odpowiedni arkusz.
  • REKLAMA
  • #17 13575714
    piotrek8940
    Poziom 8  
    Posty: 157
    Ocena: 7
    zastawmy narazie ten temat pokombinuje w wolnym czasie:) a pytanie z innej beczki jak wpisać dowolny znak w stringu tzw chce wpisać "##:#0:00" # znaczy dowlny znak...ale tak nie działa nie wiem jak to zrobić proszę o pomoc jest jakiś sposób??
  • #18 13576783
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Dowolny znak w jakim stringu? Do czego to ma służyć? Format komórki czy co?
  • #19 13577382
    piotrek8940
    Poziom 8  
    Posty: 157
    Ocena: 7
    Witaj a wiec tak mam taki kod :
    If op = "KONIEC" And zaokrag1 = "1" Or zaokrag1 = "2" Or zaokrag1 = "3" Or zaokrag1 = "0" Then
    Cells(x, 6) = "17:30:00"
    porównuję minuty jesli godzina konczy sie minutą 1 lub 2 lub 0 chce jej przypisać 0 ale ze by godzina została ta co jest czyli jak mam godzinę 16:32:39 chce przypisać 16:30:00 ale nie wiem jak to zrobić bo musze miec własnie na pierwszych miejscach dowolna liczbę a tylko 3 ostatnie zmieniać na 0 a w stringu gdyż zapsiuję to w cudzysłowie "16:30:00" i musi byc własnie tak # przyjmijmy ze to dowolna liczba:
    "##:#0:00"

    Dodano po 3 [godziny] 4 [minuty]:

    Ok już sobie z tym poradziłem innym sposobem trochę niż chciałem no ale udało się...Dziękuję za podpowiedzi
  • #20 13578619
    marcinj12
    Poziom 40  
    Posty: 3404
    Pomógł: 1024
    Ocena: 250
    Jeśli chcesz zaokrąglać czas, możesz spróbować w ten deseń:
    Kod: text
    Zaloguj się, aby zobaczyć kod
    Funkcja zaokrąglająca minuty zależy od efektu, który chcesz uzyskać.

Podsumowanie tematu

LABEL_AI_GENERATED
Użytkownik zadał pytanie dotyczące kopiowania danych z wielu arkuszy Excela do jednego za pomocą VBA. W pierwszej części dyskusji omówiono, jak używać pętli For Each do iteracji przez arkusze i kopiowania danych z określonych komórek (np. B2) do nowego arkusza. Użytkownik chciał również stworzyć listę nazw arkuszy w kolumnie A. W drugiej części poruszono problem odwoływania się do wartości z jednego pliku Excela w innym, co wymagało otwarcia obu plików i użycia formuły do powiązania danych. Użytkownik chciał zautomatyzować ten proces dla wielu arkuszy, aby móc śledzić zmiany wartości w kolejnych miesiącach. Ostatecznie zaproponowano użycie makr do wstawiania formuł, które automatycznie aktualizują się przy otwieraniu plików.
Podsumowanie AI na podstawie dyskusji. Może zawierać błędy.
REKLAMA