Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

makro kopiujące wiersz do nowego arkusza w pętli

Markus Maximus 05 Sie 2010 23:28 2476 4
  • #1 05 Sie 2010 23:28
    Markus Maximus
    Poziom 8  

    Witam
    Mam poważny problem, który wymaga szybkiego rozwiązania dlatego bardzo proszę o pomoc

    Chciałbym napisać pętlę która kopiowałaby wiersz do nowego arkusza ale wstawiała tylko wybrane komórki.
    np kolumne 1,2,3,4,12 i 15 z tego samego wiersza
    Waunkiem kopiowania wiersza jest wartość np "x" w kolumnie 12

    Naprawdę potrzebna pomoc dlatego z góry dzięki :)

    0 4
  • #2 06 Sie 2010 21:10
    marcinj12
    Poziom 40  

    A z czym konkretnie masz problem?
    Użyj np. pętli FOR EACH, dla każdego przebiego sprawdzaj warunek instrukcją IF...THEN..., i jeżeli jest spełniony - zaznacz wiersz i skopiuj poleceniem

    Code:

    Selection.Copy
    ActiveSheet.Paste Destination:=Worksheets("Arkusz2").Cells(3, 1)

    -1
  • #3 06 Sie 2010 21:41
    Markus Maximus
    Poziom 8  

    mialem taki zamiar ale jak wpisac zeby kopiowal nie jedna tylko kilka wybranych komorek i to w odpowiadajace sobie miejsca np komorka z kolumny E do komorki w kolumnie E

    0
  • Pomocny post
    #4 06 Sie 2010 21:49
    marcinj12
    Poziom 40  

    Odwołaj się w pętli do arkusza źródłowego/docelowego przez Worksheets("nazwa_arkusza"), a po kropce do konkretnej komórki: albo w postaci .Range("E" & i) albo w postaci .Cells(i, 5), gdzie i - nr wiersza źródła (ew. jeżeli zrobisz w pętli for each c in ...., to możęsz użyć c.Row).
    Do tego druga zmienna np. j dla wiersza arkusza-celu, czyli:

    Code:

    j = 1
    for each c in Worksheets("zrodlo").Range("L1:L1000")
       if c = "x" then
          Worksheets("cel").Cells(j, 1) = Worksheets("zrodlo").Cells(c.Row, 1)
          Worksheets("cel").Cells(j, 2) = Worksheets("zrodlo").Cells(c.Row, 2)
          Worksheets("cel").Cells(j, 5) = Worksheets("zrodlo").Cells(c.Row, 5)
          j = j + 1
       end if
    next c

    0
  • #5 06 Sie 2010 23:07
    Markus Maximus
    Poziom 8  

    Działa :D
    Wielkie dzięki za pomoc :)

    0