Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Potrzebuję zrobić makro kopiujące wiersz i wklejające go do innego pliku

yoasia1988 02 Apr 2012 23:16 5076 7
  • #1
    yoasia1988
    Level 9  
    Witam,
    nazywam się Asia i muszę przeprowadzić analizę do pracy magisterskiej. Potrzebuję znaleźć wszystkie dotacje unijne, które skierowane są do kobiet. Robię to w taki sposób, że znajduję wiersz w którym znajduje się interesujące mnie słowo ( kobiet, kobiecy, matka itp.) a następnie kopiuję wiersz do innego pliku. Zajmuje to jednak ogromnie dużo czasu ( jest ponad 1400rekordów tylko dla hasła "kobiet").

    Dlatego chciałam zapytać czy ktoś z Was byłby tak miły i napisał mi jak stworzyć makro, które będzie to robić za mnie (szukać odpowiedniego słowa i kopiować całą linijke do innego pliku).

    Z góry bardzo dziękuję,

    dane, które musze opracować znajdują się tutaj --> http://www.funduszeeuropejskie.gov.pl/NaborWn...tow/Strony/Lista_beneficjentow_FE_311211.aspx

    Pozdrawiam serdecznie,
    Asia
  • #2
    adamas_nt
    Moderator of Programming
    Przeszukiwanie komórek w kolumnie B?

    Po mojemu: prosta pętla z warunkowym kopiowaniem, opartym na InStr.
    Żeby nie komplikować, można dane wrzucić do arkusza wynikowego i potem skopiować cały arkusz do nowego pliku.
  • #3
    yoasia1988
    Level 9  
    Drogi adamasie,

    przede wszystkim bardzo dziękuję za odpowiedź... niestety moja wiedza o makrach w excelu kończy się na tym, że wiem o ich istnieniu. Dlatego mimo dużych chęci (przeszukałam kilka miejsc w poszukiwaniu odpowiedzi na pytanie czym jest tajemnicze InStr i już wiem, że jest czymś w rodzaju funkcji szukaj) niestety nie jestem w stanie sama stworzyć sobie sama takiej "prostej pętli, opartej na InStr (prawdopodobnie na razie nie jestem w stanie stworzyć czegokolwiek ;))

    Czy będziesz tak dobry, i napiszesz mi dokładniej jak mogę to sobie stworzyć? Albo czy byłbys skłonny stworzyć mi taką pętlę? (ja sobie ją wkleję gdzie trzeba, bo to już znalazłam, gdzie to trzeba zrobić) Podejrzewam, ze zajmie Ci to kilka minut, a mi niesamowicie ułatwi życie ( i zaoszczędzi kilkanascie godzin przeszukiwania tych 40000 wierszy danych za pomocą "znajdź")

    Chodzi o przeszukanie kolumny B oraz T.
    Jeszcze raz pozdrawiam i czekam na odpowiedź
    Asia
  • Helpful post
    #4
    adamas_nt
    Moderator of Programming
    Wklej do modułu pliku z linka i uruchom. Makro w tej postaci "wydłubało" 1341 wierszy. Po wszystkim wyeksportuj, lub skopiuj arkusz "Wynik" do swojego pliku. Reszta w komentarzach.
    Code: vb
    Log in, to see the code
  • #5
    yoasia1988
    Level 9  
    Bardzo Ci dziękuję za pomoc, to jest dokładnie to o co chodziło :) Dziekuję za komentarze, dzięki nim wiem jak sobie pozmieniać to tak, żeby znaleźć tez inne słowa, i miło przeczytać, ze są jeszcze faceci dla których kobieta i Kobieta to nie to samo;) Zaoszczędziłeś mi kilka godzin pracy, jeszcze raz wielkie dzięki:)
  • #6
    yoasia1988
    Level 9  
    Hej Adamasie, mam jeszcze jeden problem, tym razem bardzo błahy. Chciałabym użyć autouzupełniania, ale nie przeciągając w dół kolumny. Mam taką formułę =JEŻELI($U3="państwowa jednostka organizacyjna";$M3;0) - jesli przeciagnę ją w dół to co wiersz będzie mi się zmieniać na U4 i M4 itd. I dokladnie o to mi chodzi, tylko mam 40 000 wierszy do przeciagnięcia i 30 kolumn. Dlatego chcialabym zapytać czy mogę zrobić to jakoś inaczej, zeby nie przeciągać i uzyskać taki sam efekt. Mam Excela 2010 ( w poprzednich wersjach ponoć gdzie indziej byly rozne fukcje wiec na wszelki wypadek podaję).

    Będę bardzo wdzięczna za pomoc, pozdrawiam serdecznie i zyczę wesołych swiąt i dużo Kobiet do oblania w Śmingusa Dyngusa;)
  • #7
    adamas_nt
    Moderator of Programming
    Można wykorzystać skróty klawiszowe. Załóżmy taką sytuację: W kolumnie B ciąg jakiś danych, w C3 formuła do skopiowania

    Potrzebuję zrobić makro kopiujące wiersz i wklejające go do innego pliku

    Podręcznikowo: chwytasz za uchwyt C3 i przeciągasz w dół.

    Na skróty:
    1. Klik w B3
    2. Ctrl+strzałka w dół (przechodzę do ostatniej niepustej)
    3. Strzałka w prawo (przejście do kolumny C)
    4. Wpisuję dowolny znak (w ostatnim wierszu zakresu)
    5. Ctrl+strzałka w górę (wracam do wiersza wyjściowego)
    5a. Jeśli w kolumnach w prawo, Np D3, E3, itd znajdują się formuły do skopiowania, to je wszystkie zaznaczam (w pojedynczym wierszu) Shift+strzałka w prawo
    5a1. Jeśli są nieciągłe, zaznaczam klikając przy wciśniętym Ctrl
    5b. Jeśli trzeba skopiować formułę z C3 w prawo, to wciskam Ctrl+r (wypełni wcześniejsze zaznaczenie w wierszu tak, jak przy przeciąganiu w prawo)
    6. Ctrl+Shift+strzałka w dół (zaznaczam zakres do znaku z pkt.4)
    7. Ctrl+d (wypełnienie w dół)

    Czas: Bez względu na ilość wierszy < 2 sek.
    No, może na początku, przed biciem rekordów, potrzebna będzie krótka "rozgrzewka" ;)

    Dziękuję za życzenia :)
    Wzajemnie: Zdrowych, Wesołych Świąt. Obyśmy na Dyngusa nie rzucali śnieżkami.
  • #8
    yoasia1988
    Level 9  
    Bardzo dziekuje za poprzednie porady, bardzo skróciły mi czas pracy. Wydawało mi się, ze Ci podziękowałam poprzednio, ale widze ze jednak nie, więc robię to teraz:)
    Dalej pracuje nad moją pracą i chcialabym wykorzystać to makro do jeszcze jednego wyszukiwania. Chodzi o to że chciałabym zeby brał inną kolumnę pod uwagę. ( chcę sprawdzić formę prawną czyli uzyć takiego samego wyszukiwania tylko zmienić słowa ktorych szukam na "małe średnie mikro" i kolumnę na I.) Potrafię sobie zmienić slowa, i wydawalo mi się że potrafie tez zmienić kolumne. wydawalo mi sie ze wystarczy

    strStr = LCase(.Cells(wiersz, 2)) & LCase(.Cells(wiersz, 20) zmienic na
    strStr = LCase(.Cells(wiersz, 9))

    Ale juz wiem ze nie, bo mi wyszukuje, ale wszystkie wyniki dostaje podwójnie. Czy możesz mi pomoc jeszcze z tym? coś jeszcze powinnam zmienić?


    Co znaczy: For wiersz = 3 To .Range("B65536").End(xlUp).Row ?

    Z góry bardzo dziękuje
    Asia