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

Kopiowanie danych z dowolnego wiersza i wysyłka do innego arkusza

17 Cze 2015 22:17 594 10
  • Poziom 7  
    Witam mam w pracy mały problem do rozwiązania związany z excelle-m .
    W arkuszu o nazwie POMIARY zapisujemy dane z pomiarów , data pomiarów , kto dokonał pomiarów itd .
    W rezultacie tworzy się mała baza danych z tych pomiarów z tych czynności .
    Tworzy się mnóstwo wierszy z danymi .
    Problem polega na tym jak dane z wybranego wiersza z arkusza -rejestr przesłać do do innego arkusza o nazwie protokół umieścić je w wybranych miejscach i wydrukować .
    Chcę mieć możliwość zaznaczenia dowolnego wiersza i przesłania danych do protokołu w celu wydrukowania .
    Pozdrawiam .
  • Specjalista - VBA, Excel
    Patrz PROTOKÓŁ ODWODNIENIA NR: na arkusz PROTOKÓŁ a dopasuj ostatne
    Nazwa 'wiersz' to komorka N1 na REJESTR
    Patrz Worksheet_SelectionChange dla REJESTR
  • Poziom 7  
    Dzięki za odpowiedź ,ale podaj mi więcej wskazówek co mam z tym zrobić bo nie bardzo rozumiem jaki mam wybrać tok postepowania .
    Zwróciłem uwagę na to , że gdy najadę kursorem na jakąkolwiek komórkę i wybieram 'wiersz" to zawsze kursor ląduje na komórce wiersz N1 .
    Plik waży trochę więcej niż ten który załączyłem czy zaszyte jest w nim jakieś makro ?
    Sory za te pytania ale do tej pory nagrywałem makra a w ich pisaniu raczkuję .
    Dzięki czekam na odpowiedź i pozdrawiam :)
  • Pomocny post
    Specjalista - VBA, Excel
    Makro jest w kodzie arkusza REJESTR - reakcja na zdarzenie Worksheet_SelectionChange (wybor kursorem dowolnej komorki w arkusze REJESTR).
    Makro pisze w N1 (nazwa 'wiersz') numer wiersza w ktorem zaznaczena komorka.
    Dalej w PROTOKOL'e formula INDEKS wybiera z tego wiersza dane(w przykladzie tylko wartosc PROTOKÓŁ ODWODNIENIA NR: , reszta dopasuj wg tego)
    marcinerot napisał:
    wybieram 'wiersz"
    - to nie trzeba wybierac, to pomocna komorka dla formuly INDEKS - np dla PROTOKÓŁ ODWODNIENIA NR: =INDEKS(REJESTR!A:A; wiersz),
    dla Pomiar początkowy zbiornika magazynowego: =INDEKS(REJESTR!E:E; wiersz) itd.
    Po zapełnieniu wszystkich formuł w protokole umieścić kursor na żadnej linii w rejestru, przejdź do protokołu i gotowe
  • Poziom 7  
    Zakumałem o co chodzi , działa dostosuję pozostałe komórki wg. twoich instrukcji i zadziała :)

    Wyjaśnij mi jeszcze o co chodzi z tym :

    Patrz Worksheet_SelectionChange dla REJESTR

    Wielkie dzięki za pomoc !
  • Specjalista - VBA, Excel
    marcinerot napisał:
    Patrz Worksheet_SelectionChange dla REJESTR

    Tam jest to makro
    Kod: vb
    Zaloguj się, aby zobaczyć kod

    ktore pisze num wiersza w N1 arkusz REJESTR
  • Poziom 7  
    A w jaki sposób przypisałeś to makro akurat do tej komórki tj. N1
    , gdybym chciał urzyć tego makra w innym arkuszu to jak uwzględnić w nim daną komórkę inną niż N1 ? :

    ktore pisze num wiersza w N1 arkusz REJESTR
  • Pomocny post
    Specjalista - VBA, Excel
    Być może było to: Sheets("rejestr").range("N1") = Target.Row
    ale nazwy arkuszy może mieć symbole narodowe (ś, Ł, ó itp), że w redaktorze WBA nie mógł napisać.
    W menedżera nazew zadałem nazwę dla komorki N1 'wiersz', które następnie mogą być używane w formule
  • Poziom 7  
    Pojawił się kolejny problem , wszystko działa tylko w jednej relacji pomiędzy arkuszami REJESTR - PROTOKÓŁ . Zbiorników mam 12 więc stworzę 12 takich arkuszy przypisanych jako kolejne zbiorniki . Po utworzeniu kopi arkusza rejestr - protokół niestety po najechaniu kursorem na dany wiersz dane nie przechodzą , działa to tylko pomiędzy arkuszami REJESTR - PROTOKÓŁ , a w ich kopiach już nie .
    Jak to rozwiązać tak by to makro działało na wszystkich arkuszach których kopie utworzę ? (załącznik :pomiary test .zip) .
    Pozdrawiam .
  • Pomocny post
    Specjalista - VBA, Excel
    Zamień
    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    Range("wiersz") = Target.Row
    End Sub

    na
    Code:
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    
    Range("N1") = Target.Row
    End Sub

    Usuń nazwy 'wiersz'.
    Odwołania w formułach
    Code:
    =INDEKS('ZB1'!A:A;wiersz)

    Zamień na
    Code:
    =INDEKS('ZB1'!A:A;'ZB1'!N1)
  • Poziom 7  
    Wielkie dzięki , już wiem gdzie popelniłem bład , naprowadziłeś mnie na prawidłowy tok myślenia . Wszystko działa tak jak chciałem .
    Makro działa we wszystkich arkuszach i po najechaniu na dowolnyy wiersz dane z niego automatycznie lądują tam gdzie chcę i są drukowane na protokole .
    dZIĘKI . JESZCZE RAZ :)
    TEMAT ZAMYKAM