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] wyszukanie pierwszej wolnej komórki w kolumnie

Wiaderson 12 Oct 2011 14:42 12023 4
  • #1
    Wiaderson
    Level 2  
    Code: vb
    Log in, to see the code

    Witam wszystkich Forumowiczów,
    Jest to mój pierwszy post na tym forum jednak od jakiegos czasu sledze watki na elektroda.pl . Jednoczesnie przepraszam za brak polskich znaków.

    Poszukuje kodu VBA do znalezienia pierwszej wolnej komórki w zakresie a nastepnie wklejenie do tej komórki w kolumnie A tego co znajduje sie w schowku .

    Powyzsze jest czescia wiekszej calosci , która z róznymi efektami próbuje sklecic ze strzepków znalezionych na róznych forach i wlasnych prób .

    Plik ma za zadanie wklejanie danych skopiowanych ze strony web strona pod strona , a pozniej obliczenie sum dla róznych parametrów.
    W zalaczniku plik z wklejonymi danymi ze strony ( dla przykladu) .
    Caly proces ma wygladac tak ( podzielony na 3 makra ) :
    (Makro 1) Idz do komórki A11 , wklej ( po tym uzytkownik moze skopiowac kolejne dane z www)
    (Makro 2 ) Znajdz wolna komórke w kolumnie A ( z pominieciem A1:A11 ) a nastepnie, wklej
    (Makro 3 ) Autodopasuj wielkosc kolumn , w E:E wyszukaj "EUR" i zamien na "" , jesli w D:D znajdziesz wartosc "Topup" skasuj caly wiersz , nastepnie zastosuj sumowanie warunkowe w zaleznosci od tego co znajdziesz w D:D . nastepnie skasuj caly skoroszyt i utwórz skoroszyt z taka sama nazwa ( robie to tylko dlatego ze nie wiem jak pozbyc sie tych denerwujacych "kropeczek" w kolumnie A ) .

    Z makrami 1 i 3 nie mam problemu , jednak nie mam pomyslu na makro 2 ( zwlaszcza, ze chcialbym sie pozbyc tych 3 polaczonych komórek , które znajduja sie na samym dole po wklejeniu tego co znajduje sie w schowku ) a nastepnie dopiero wkleic znów to co znajduje sie w schowku .

    Makro 1 i 3 nie sprawiaja mi problemu, jednak nie mam pomyslu na na makro nr 2 . Bede bardzo wdzieczny za jakakolwiek pomoc przy tym kodzie.
    Pozdrawiam
    Piotrek
    Ethernet jednoparowy (SPE) - rozwiązania w przemyśle. Szkolenie 29.09.2021r. g. 11.00 Zarejestruj się za darmo
  • Helpful post
    #2
    marcinj12
    Level 40  
    Są różne sposoby na znajdowanie ostatniego pustego wiersza, mój ulubiony jest taki:
    Code: vb
    Log in, to see the code


    W skrócie: makro ustala ostatnią widoczną komórkę w kolumnie B wypełnioną tekstem, idąc od ostatniego wiersza w górę. Liczba 1048576 to ostatni wiersz excela 2007, dla kompatybilności z 2003 należało by użyć 65536.

    Przed wykonaniem sprawdzania poleceniem ShowAllData próbuje się zdjąć kryteria autofiltra (jeżeli jakieś są), gdyż makro ustala ostatni widoczny wiersz.

    Założenia do poprawnego działania są dwa:
    - ostatni(e) wiersz(e) nie będą ukryte,
    - arkusz nie będzie wypełniony do ostatniego wiersza

    Potem, żeby się pozbyć tych połączonych komórek, możesz po prostu usunąć 3 ostatnie wiersze:
    Code: vb
    Log in, to see the code
  • #3
    Wiaderson
    Level 2  
    Dziala pieknie , wielkie dzieki

    Moze jeszcze jakis pomysl, zeby pozbyc sie tych "kropeczek" , gdyz nawet jesli skasuje wszystkie wiersze , kropeczka zostanie a chcialbym móc przygotowac sie
    do nowego liczenia ( znów od makro 1 ) bez kasowania calego skoroszytu.

    Pozdrawiam
    Piotrek
  • #4
    marcinj12
    Level 40  
    Spróbuj nagrać makro które zamiast wklejać wszystko ze schowka (Paste), będzie wklejało specjalnie jako wartości (lub inna opcja która nie wklei "kropeczek" - PasteSpecial + parametry).
  • #5
    Wiaderson
    Level 2  
    Próbowalem, jednak bez sukcesu ,
    Problemem jest nie excel a strona i jej sposób przedstawiania danych , uzytkownik kopiuje cala tabelke od prawej dolnej strony tabeli do górnej lewej a pozniej wkleja , excel pozniej formatuje ja odpowiednio , jednak zostawia "kropeczki" . . To nie jest jednak wielki problem, moge sie obejsc bez tego.

    Wielkie dzieki za pomoc i zamykam temat jako ze problem zostal rozwiazany .
    Pozdrawiam
    Piotrek