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.

VBA Excel - kopiowanie danych do innego arkusza

andzia7669 16 Maj 2015 15:50 1845 8
  • #1 16 Maj 2015 15:50
    andzia7669
    Poziom 2  

    Witam, początkująca jestem więc może dlatego nie mogę przejść wydawałoby się prostej sprawy z makrem. W arkuszu "plan" mam dane zaczynające się zawsze od dnia bieżącego. Chcę kopiować codziennie wskazany zakres do arkusza "konsolidacja danych" w zależności od daty. Wskazuję szukaną datę w "konsolidacji danych" przez InputBox od któej chcę zacząć kopiowanie całego zakresu. Użycie Cells(2, destColumn).Value = Sheets("plan").Range("B2").Value było dobre dopóki miałam jedną datę i kilka pozycji które mogłam wylistować. Teraz chcę kopiować nie tylko dane ze wskazanej daty, ale cały zakres od tej daty. Walczę już z tym długo i nie mogę sobie poradzić. Proszę o pomysły.

    0 8
  • Pomocny post
    #2 16 Maj 2015 19:30
    JRV
    Specjalista - VBA, Excel

    Witaj

    andzia7669 napisał:
    nie tylko dane ze wskazanej daty, ale cały zakres od tej daty

    Ale jutro dane chcieliby zamknąć tych, które zostały skopiowane dzisiaj. To nie Zawada?

    Dodano po 17 [minuty]:

    Kod: vb
    Zaloguj się, aby zobaczyć kod

    1
  • #3 17 Maj 2015 11:54
    andzia7669
    Poziom 2  

    Działa, super, dziękuję!

    0
  • #4 25 Kwi 2017 20:41
    malice77
    Poziom 2  

    Hejka, mam pilną sprawę, bardzo trywialną ale niestety jestem zielona w temacie. Potrzebuję stworzyć makro, które będzie zbiorem wszystkich wierzy w arkuszu1 z arkuszem2. Oczywiście zakresy w obu arkuszach codziennie się zmieniają, więc potrzeba mi dynamicznego odniesienia a nie do stałych adresów. No i druga rzecz, żeby zawsze wartości z drugiego arkusza były pod danymi z drugiego, nie "nachodząc" na siebie. Mam nadzieję, że w miarę wytłumaczyłam Póki co udało mi się nagrać to:
    Sub Makro2()
    '
    ' Makro2 Macro
    '

    '
    Sheets("one").Select
    ActiveCell.Offset(-7, -3).Range("A1:D6").Select
    Selection.Copy
    Sheets("total").Select
    ActiveSheet.Paste
    Sheets("two").Select
    ActiveCell.Range("A1:D2").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("total").Select
    ActiveCell.Offset(6, 0).Range("A1").Select
    ActiveSheet.Paste
    End Sub


    Prosz Was o pomoc :)

    0
  • #5 25 Kwi 2017 21:51
    JRV
    Specjalista - VBA, Excel

    malice77 napisał:
    wartości z drugiego arkusza były pod danymi z drugiego
    byc moze z pierwszego?

    0
  • #6 25 Kwi 2017 21:54
    malice77
    Poziom 2  

    tak tak, dokładnie, przepraszam za literówke, doszłam do czegoś takiego:
    Sub test()
    Dim filt As Range, r As Range
    Worksheets("one").Activate
    Set r = Range("A3").CurrentRegion
    r.AutoFilter field:=Range("M1").Column, Criteria1:=""
    Set filt = r.Offset(1, 0).Resize(r.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
    'MsgBox filt.Address
    filt.Copy
    With Worksheets("total")
    .Cells(Rows.Count, "A").End(xlUp).Offset(2, 0).PasteSpecial
    End With
    ActiveSheet.AutoFilterMode = False
    Application.CutCopyMode = False

    Worksheets("two").Activate
    Set r = Range("A3").CurrentRegion
    r.AutoFilter field:=Range("M1").Column, Criteria1:=""
    Set filt = r.Offset(1, 0).Resize(r.Rows.Count - 1).SpecialCells(xlCellTypeVisible)
    'MsgBox filt.Address
    filt.Copy
    With Worksheets("total")
    .Cells(Rows.Count, "A").End(xlUp).Offset(2, 0).PasteSpecial
    End With
    ActiveSheet.AutoFilterMode = False
    Application.CutCopyMode = False
    End Sub

    ale niestety jak zmianiam dane w arkuszach to w total nadpisuje mi na nowo a nie pokazuje aktualne wartości

    0
  • #7 25 Kwi 2017 22:12
    JRV
    Specjalista - VBA, Excel

    Kolumna "A" nie pusta? nie rozumie dlaczego Criteria1:="" Logicznie jest Criteria1:="<>"

    0
  • #8 25 Kwi 2017 22:21
    malice77
    Poziom 2  

    niestety po tej poprawce, dalej nic sie nie zmieniło :(

    0
  • #9 26 Kwi 2017 23:31
    lanzul
    Poziom 25  

    malice77 napisał:
    niestety po tej poprawce, dalej nic sie nie zmieniło :(

    :)
    Nie zmieniło się, bo 'offsecik' w 'totalu' 'siadł' - jest:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    a powinno być:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    Poza tym jest:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    a byłoby lepiej, gdyby było:
    Kod: vbscript
    Zaloguj się, aby zobaczyć kod

    Excel co prawda "nigdy się nie myli" ... :D :D :D :D :D :D ... , ale lepiej nie dawać mu do tego szansy ... :) ... i 'wymusić' na nim 'rozpoznanie' ilości kolumn tabeli.
    O kolejności danych na 'total' decydować będzie kolejność wykonywanych operacji kopiowania, jeśli wpierw kopiujemy z 'one', to te dane będą 'najwyżej' w tabeli, czyli tuż pod nagłówkami, a potem reszta w kolejności kopiowania.

    0