logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

VBA Excel - jak kopiować zakres danych od wskazanej daty do innego arkusza?

andzia7669 16 Maj 2015 15:50 8037 8
REKLAMA
  • #1 14697624
    andzia7669
    Poziom 2  
    Posty: 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.
    Załączniki:
    • Zeszyt1.xls (34.5 KB) Musisz być zalogowany, aby pobrać ten załącznik.
  • REKLAMA
  • Pomocny post
    #2 14698035
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    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: text
    Zaloguj się, aby zobaczyć kod
  • #3 14699371
    andzia7669
    Poziom 2  
    Posty: 2
    Działa, super, dziękuję!
  • REKLAMA
  • #4 16436466
    malice77
    Poziom 2  
    Posty: 3
    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 :)
  • REKLAMA
  • #5 16436714
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    malice77 napisał:
    wartości z drugiego arkusza były pod danymi z drugiego
    byc moze z pierwszego?
  • #6 16436723
    malice77
    Poziom 2  
    Posty: 3
    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
  • #7 16436783
    JRV
    Specjalista - VBA, Excel
    Posty: 2724
    Pomógł: 805
    Ocena: 455
    Kolumna "A" nie pusta? nie rozumie dlaczego Criteria1:="" Logicznie jest Criteria1:="<>"
  • REKLAMA
  • #8 16436816
    malice77
    Poziom 2  
    Posty: 3
    niestety po tej poprawce, dalej nic sie nie zmieniło :(
  • #9 16439236
    lanzul
    Poziom 30  
    Posty: 1023
    Pomógł: 199
    Ocena: 123
    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.

Podsumowanie tematu

✨ Użytkownik poszukiwał pomocy w zakresie kopiowania danych w Excelu za pomocą VBA, szczególnie w kontekście kopiowania zakresu danych od wskazanej daty z arkusza "plan" do arkusza "konsolidacja danych". Otrzymał pomoc w postaci makra, które umożliwiało dynamiczne kopiowanie danych, a także wskazówki dotyczące poprawy kodu, aby uniknąć nadpisywania danych w arkuszu docelowym. Użytkownik potwierdził, że rozwiązanie działa poprawnie.
Wygenerowane przez model językowy.
REKLAMA