Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Elektroda.pl
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

VBA Excel - Kopiowanie okreslonych komórek z arkusza do arkusza

Apidam 11 Sep 2012 09:48 11136 4
  • #1
    Apidam
    Level 8  
    Witam serdecznie. Jest to mój pierwszy post więc proszę o wyrozumiałość. Mam pewien problem a że VBA nie znam zbyt dobrze ( raczej jakieś podstawy) trochę mnie to przerasta. Szukałem coś nt. temat ale ciężko znaleźć jakiś podobny przykład. Do sedna:

    Dane:

    W pliku znajduje sie kilka arkuszy : arkusz1, arkusz2,arkusz3, arkusz4 itd. W 4 pierwszych arkuszach znajduje sie zakres danych c37:AB37 - dla każdego z arkuszy jest taki sam. Kilka wierszy pod tym zakresem znajduje się kolejny zakres z datami C27:AB27.



    Cel:
    Makro umożliwiające kopiowanie tylko tych wartości komórek które są mniejsze od 0. Skopiowane komórki mają być wklejone jedna pod drugą w kolumnie B w arkusz5. Jednocześnie dla komórek które zostały skopiowane ma byc kopiowana data drugiego zakresu i wklejana do kolumny A. Na przykładzie: jeśli dana komórka jest ujemna np. g37 to kopiowana jest do pierwszej wolnej komórki w arkusz5 w kolumnie b jednocześnie kopiowana jest przypisana do niej data w tym wypadku komórka g27 do tego samego wiersza w kolumnę a. Mam nadzieje że się napisałem zrozumiale :)

    Co ważne: w zakresie z danymi , wartości nie są stałe tylko wyliczane za pomocą funkcji z innych danych, tak więc należy kopiować tylko ich wartość.

    Z góry dzięki za wszelkie sugestie i pomoc.

    Pozdrawiam
  • Helpful post
    #2
    pitermxa
    Level 18  
    Po tym opisie wydaje mi się, że nie potrzebne jest w ogóle makro.
    Prawdopodobnie dało by radę zrobić to formułami.
    Załącz plik z przykładowymi danymi i zobaczymy co da się zrobić.
  • #4
    pitermxa
    Level 18  
    Jednak szybciej było napisać makro:)
    W załączniku.
    Z tym, że w twoich danych (w załączonym pliku) dane, które chcesz kopiować znajdują się chyba w wierszu 8 a nie 37.
    Zrobiłem makro kopiujące dane z wiersza 8 pod warunkiem, że są mniejsze od zera.
    Ponadto, żeby data również się przepisała, musi znajdować się dokładnie 5 wierszy powyżej danych z których są kopiowane wartości.
    Pamiętaj, że dane też będą kopiowane ze wszystkich arkuszy oprócz arkusza o nazwie "Sheet5"
    Kod nie jest trudny, przeanalizuj a na pewno zrozumiesz jego strukturę.
    W razie czego pytaj.
  • #5
    Apidam
    Level 8  
    Wielkie dzięki :) O to właśnie mi chodziło! Faktycznie kod prosty ale sam bym tego nie wymyślił (jeszcze dużoooo nauki przede mną ). Co do Twoich uwag to musiałem orginalny pilk trochę przerobić ( niestety były tam ważne dane) dlatego trochę te zakresy się pozmieniały. Ogólnie to mam to zamiar wprowadzić w dużo większy plik ale to już trochę pogłówkuje :) Jeszcze raz dzięki.

    Pozdrawiam