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.

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

yoasia1988 02 Kwi 2012 23:16 3246 7
  • #1 02 Kwi 2012 23:16
    yoasia1988
    Poziom 7  

    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

    0 7
  • #2 03 Kwi 2012 00:46
    adamas_nt
    Moderator Programowanie

    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.

    0
  • #3 03 Kwi 2012 10:18
    yoasia1988
    Poziom 7  

    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

    0
  • Pomocny post
    #4 03 Kwi 2012 11:41
    adamas_nt
    Moderator Programowanie

    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.

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    1
  • #5 04 Kwi 2012 11:10
    yoasia1988
    Poziom 7  

    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:)

    0
  • #6 07 Kwi 2012 20:59
    yoasia1988
    Poziom 7  

    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;)

    0
  • #7 07 Kwi 2012 21:52
    adamas_nt
    Moderator Programowanie

    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.

    0
  • #8 23 Maj 2012 18:44
    yoasia1988
    Poziom 7  

    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

    0
  Szukaj w 5mln produktów